Skip to content

Instantly share code, notes, and snippets.

@lu911
Created April 23, 2014 05:46
Show Gist options
  • Save lu911/11203968 to your computer and use it in GitHub Desktop.
Save lu911/11203968 to your computer and use it in GitHub Desktop.
TITLE = 'healthcare'
class Category(CRUDMixin, db.Model):
__tablename__ = '%s_categories' % TITLE
name = db.Column(db.String(16), nullable=False)
type_code = db.Column(db.SmallInteger, default=ETC_TYPE, nullable=False)
parent_category_id = db.Column(db.Integer, db.ForeignKey('%s.id' % __tablename__))
children = db.relationship('Category', cascade='all',
backref=db.backref('parent_category', remote_side='%s.c.id' % __tablename__))
def __init__(self, name, type_code=None, parent_category_id=None):
self.name = name
self.type_code = type_code
self.parent_category_id = parent_category_id
def __repr__(self):
return '<%s %s>' % (self.__class__.__name__, self.name)
def __str__(self):
return self.name.encode('utf8')
def __unicode__(self):
return self.name
@property
def type(self):
return CATEGORY_TYPE[self.type_code]
class Nutrient(CRUDMixin, db.Model):
__tablename__ = '%s_nutrients' % TITLE
name_ko = db.Column(db.String(64), nullable=False)
name_en = db.Column(db.String(64), nullable=False)
name_plus = db.Column(db.String(255))
category_id = db.Column(db.Integer, db.ForeignKey('%s.id' % Category.__tablename__), nullable=False)
category = db.relationship(Category.__class__.__name__)
def __init__(self, name_ko, name_en, category_id, name_plus=None):
self.name_ko = name_ko
self.name_en = name_en
self.category_id = category_id
self.name_plus = name_plus
def __repr__(self):
return '<%s %s>' % (self.__class__.__name__, self.name_en)
def __str__(self):
return self.name_en.encode('utf8')
def __unicode__(self):
return self.name_en
class Food(BaseMixin, CRUDMixin, db.Model):
__tablename__ = '%s_foods' % TITLE
name = db.Column(db.String(128), nullable=False)
presentation_name = db.Column(db.String(128))
amount = db.Column(db.Integer, default=0)
unit = db.Column(db.String(8))
description = db.Column(db.Text)
origin = db.Column(db.String(32))
code = db.Column(db.Integer)
category_id = db.Column(db.Integer, db.ForeignKey('%s.id' % Category.__tablename__), nullable=False)
category = db.relationship(Category.__class__.__name__)
def __init__(self, name, category_id, presentation_name=None, amount=0, unit=None, description=None, origin=None,
code=None):
self.name = name
self.category_id = category_id
self.presentation_name = presentation_name
self.amount = amount
self.unit = unit
self.description = description
self.origin = origin
self.code = code
def __repr__(self):
return '<%s %s>' % (self.__class__.__name__, self.name)
def __str__(self):
return ('<%s %s>' % (self.__class__.__name__, self.name)).encode('utf8')
def __unicode__(self):
return '<%s %s>' % (self.__class__.__name__, self.name)
class FoodNutrient(CRUDMixin, db.Model):
__tablename__ = '%s_food_nutrients' % TITLE
food_id = db.Column(db.Integer, db.ForeignKey('%s.id' % Food.__tablename__), nullable=False)
food = db.relationship(Food.__class__.__name__)
nutrient_id = db.Column(db.Integer, db.ForeignKey('%s.id' % Nutrient.__tablename__), nullable=False)
nutrient = db.relationship(Nutrient.__class__.__name__)
amount = db.Column(db.Float, nullable=False)
unit = db.Column(db.String(8), nullable=False)
def __init__(self, food_id, nutrient_id, amount, unit):
self.food_id = food_id
self.nutrient_id = nutrient_id
self.amount = amount
self.unit = unit
def __repr__(self):
return '<%s %d-%d>' % (self.__class__.__name__, self.food_id, self.nutrient_id)
def __str__(self):
return ('<%s %d-%d>' % (self.__class__.__name__, self.food_id, self.nutrient_id)).encode('utf8')
def __unicode__(self):
return '<%s %d-%d>' % (self.__class__.__name__, self.food_id, self.nutrient_id)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment