P5-703 add support for categories
This commit is contained in:
@@ -1 +1,2 @@
|
||||
from .designer import Designer
|
||||
from .category import Category
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
from api import db
|
||||
from api.helpers import slugify
|
||||
|
||||
|
||||
class Category(db.Model):
|
||||
__tablename__ = 'categories'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String(255), nullable=False)
|
||||
texts = db.relationship(
|
||||
'CategoryTexts', backref='category', lazy='dynamic')
|
||||
|
||||
def path(self, locale='sv_SE'):
|
||||
row = CategoryTreeI18n.query.filter_by(
|
||||
category_id=self.id, locale=locale).first()
|
||||
if not row:
|
||||
raise Exception(
|
||||
'Could not find a path for category: {}, locale: {}'.format(self.id, locale))
|
||||
path = row.path.replace('rot/', '', 1)
|
||||
path = slugify(path)
|
||||
return path
|
||||
|
||||
def to_json(self, nested=False):
|
||||
j = {
|
||||
'id': self.id,
|
||||
'name': self.name
|
||||
}
|
||||
if nested:
|
||||
j['texts'] = [t.to_json() for t in self.texts]
|
||||
|
||||
return j
|
||||
|
||||
|
||||
class CategoryTexts(db.Model):
|
||||
__tablename__ = 'category_texts'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
category_id = db.Column(db.Integer, db.ForeignKey('categories.id'))
|
||||
locale = db.relationship("Locale")
|
||||
locale_id = db.Column(db.Integer, db.ForeignKey('locales.id'))
|
||||
wallpaper_name = db.Column(db.String(250))
|
||||
wallpaper_h1 = db.Column(db.String(250))
|
||||
wallpaper_description = db.Column(db.Text)
|
||||
canvas_name = db.Column(db.String(250))
|
||||
canvas_h1 = db.Column(db.String(250))
|
||||
canvas_description = db.Column(db.Text)
|
||||
design_wallpaper_name = db.Column('name', db.String(250))
|
||||
design_wallpaper_h1 = db.Column(db.String(250))
|
||||
design_wallpaper_description = db.Column(db.Text)
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'id': self.id,
|
||||
'locale': self.locale.value,
|
||||
'wallpaper_name': self.wallpaper_name,
|
||||
'wallpaper_h1': self.wallpaper_h1,
|
||||
'wallpaper_description': self.wallpaper_description,
|
||||
'canvas_name': self.canvas_name,
|
||||
'canvas_h1': self.canvas_h1,
|
||||
'canvas_description': self.canvas_description,
|
||||
'design_wallpaper_name': self.design_wallpaper_name,
|
||||
'design_wallpaper_h1': self.design_wallpaper_h1,
|
||||
'design_wallpaper_description': self.design_wallpaper_description,
|
||||
}
|
||||
|
||||
|
||||
class CategoryTreeI18n(db.Model):
|
||||
__tablename__ = 'v_categorytree_i18n'
|
||||
|
||||
category_id = db.Column('id', db.Integer)
|
||||
path = db.Column(db.String(250))
|
||||
locale = db.Column(db.String(250))
|
||||
|
||||
__table_args__ = (db.PrimaryKeyConstraint(category_id, locale),)
|
||||
@@ -5,10 +5,7 @@ class Locale(db.Model):
|
||||
__tablename__ = 'locales'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
value = db.Column(db.String(5), nullable=False)
|
||||
value = db.Column(db.String(5))
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
"id": self.id,
|
||||
"value": self.value
|
||||
}
|
||||
def __repr__(self):
|
||||
return self.value
|
||||
|
||||
Reference in New Issue
Block a user