summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.net>2013-10-14 21:05:08 +0200
committerRené 'Necoro' Neumann <necoro@necoro.net>2013-10-14 21:05:08 +0200
commit90e314801666de75335c5d6dd35a50571b765f61 (patch)
tree7742865f5448329e35d790b1fb552c56cb61dc18 /app
parent002d2e74d05eaaf91587f76dd4ccfdaee99dc610 (diff)
downloadkosten-90e314801666de75335c5d6dd35a50571b765f61.tar.gz
kosten-90e314801666de75335c5d6dd35a50571b765f61.tar.bz2
kosten-90e314801666de75335c5d6dd35a50571b765f61.zip
Add User to model
Diffstat (limited to 'app')
-rw-r--r--app/model.py33
1 files changed, 25 insertions, 8 deletions
diff --git a/app/model.py b/app/model.py
index 92b3710..28de237 100644
--- a/app/model.py
+++ b/app/model.py
@@ -2,6 +2,8 @@ from flask.ext.sqlalchemy import SQLAlchemy
from sqlalchemy import sql
from sqlalchemy.ext.declarative import declared_attr
+from passlib.apps import custom_app_context as pwd_context
+
import datetime
import decimal
from functools import partial
@@ -13,7 +15,8 @@ db = SQLAlchemy(app)
__all__ = ["db", "Category", "SingleExpense", "ConstExpense", "CatExpense", "MonthExpense"]
-ReqColumn = partial(db.Column, nullable = False)
+Column = db.Column
+ReqColumn = partial(Column, nullable = False)
ExpNum = db.Numeric(scale = 2, precision = 10)
def to_exp(d):
@@ -25,7 +28,7 @@ def to_exp(d):
class Model (db.Model):
__abstract__ = True
- id = db.Column(db.Integer, primary_key=True)
+ id = Column(db.Integer, primary_key=True)
@declared_attr
def __tablename__ (cls):
@@ -47,9 +50,18 @@ class Model (db.Model):
def get_or_404 (cls, *args, **kwargs):
return cls.query.get_or_404(*args, **kwargs)
+class User (Model):
+ name = ReqColumn(db.Unicode(50), unique = True)
+ pwd = ReqColumn(db.Unicode(255))
+ alias = Column(db.Unicode(50))
+
+ def check_password(self, pwd):
+ return pwd_context.verify(pwd, self.pwd)
+
class Category (Model):
name = ReqColumn(db.Unicode(50), unique = True)
- parent_id = db.Column(db.Integer, db.ForeignKey('category.id'))
+ user_id = Column(db.Integer, db.ForeignKey(User.id))
+ parent_id = Column(db.Integer, db.ForeignKey('category.id'))
children = db.relationship('Category',
backref=db.backref('parent', remote_side="Category.id"))
@@ -68,10 +80,14 @@ class Category (Model):
class Expense (Model):
__abstract__ = True
- description = db.Column(db.Unicode(50))
+ description = Column(db.Unicode(50))
expense = ReqColumn(ExpNum)
@declared_attr
+ def user_id(cls):
+ return ReqColumn(db.Integer, db.ForeignKey(User.id))
+
+ @declared_attr
def category_id(cls):
return ReqColumn(db.Integer, db.ForeignKey(Category.id))
@@ -85,10 +101,11 @@ class SingleExpense (Expense):
day = ReqColumn(db.SmallInteger)
@classmethod
- def of_month (cls, month, year):
- comp = sql.and_(
+ def of_month (cls, user, month, year):
+ comp = sql.and_(cls.user == user,
+ sql.and_(
cls.month == month,
- cls.year == year)
+ cls.year == year))
return cls.query.filter(comp)
@@ -106,7 +123,7 @@ class ConstExpense (Expense):
months = ReqColumn(db.SmallInteger)
start = ReqColumn(db.Date, index = True)
end = ReqColumn(db.Date, index = True)
- prev_id = db.Column(db.Integer, db.ForeignKey('constexpense.id'))
+ prev_id = Column(db.Integer, db.ForeignKey('constexpense.id'))
prev = db.relationship('ConstExpense', remote_side = "ConstExpense.id", uselist = False,
backref=db.backref('next', uselist = False))