Files
api2/api/models/category.py
T
2016-07-15 16:57:43 +02:00

76 lines
2.5 KiB
Python

from api import db
from api.lib.slugify import slugify
from api.models.locale import Locale
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.split('/', 1)[-1] # get all text after the first /
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),)