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),)