|
|
|
@ -3,6 +3,38 @@ |
|
|
|
|
mixins. |
|
|
|
|
''' |
|
|
|
|
|
|
|
|
|
from flask.ext.sqlalchemy import SQLAlchemy |
|
|
|
|
from .extensions import db |
|
|
|
|
|
|
|
|
|
db = SQLAlchemy() |
|
|
|
|
class CRUDMixin(object): |
|
|
|
|
__table_args__ = {'extend_existing': True} |
|
|
|
|
|
|
|
|
|
id = db.Column(db.Integer, primary_key=True) |
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
|
|
def get_by_id(cls, id): |
|
|
|
|
if any( |
|
|
|
|
(isinstance(id, basestring) and id.isdigit(), |
|
|
|
|
isinstance(id, (int, float))), |
|
|
|
|
): |
|
|
|
|
return cls.query.get(int(id)) |
|
|
|
|
return None |
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
|
|
def create(cls, **kwargs): |
|
|
|
|
instance = cls(**kwargs) |
|
|
|
|
return instance.save() |
|
|
|
|
|
|
|
|
|
def update(self, commit=True, **kwargs): |
|
|
|
|
for attr, value in kwargs.iteritems(): |
|
|
|
|
setattr(self, attr, value) |
|
|
|
|
return commit and self.save() or self |
|
|
|
|
|
|
|
|
|
def save(self, commit=True): |
|
|
|
|
db.session.add(self) |
|
|
|
|
if commit: |
|
|
|
|
db.session.commit() |
|
|
|
|
return self |
|
|
|
|
|
|
|
|
|
def delete(self, commit=True): |
|
|
|
|
db.session.delete(self) |
|
|
|
|
return commit and db.session.commit() |
|
|
|
|