flaschengeist/geruecht/model/user.py

85 lines
3.0 KiB
Python
Raw Normal View History

2019-04-11 21:56:55 +00:00
from geruecht import db
from geruecht import bcrypt
2019-04-23 22:08:25 +00:00
from geruecht.model.creditList import CreditList
from datetime import datetime
2019-04-11 21:56:55 +00:00
class User(db.Model):
2019-04-17 12:46:46 +00:00
""" Database Object for User
2019-04-17 12:46:46 +00:00
Table for all safed User
Attributes:
id: Id in Database as Primary Key.
userID: ID for the User maybe to Link?
username: Username of the User to Login
firstname: Firstname of the User
Lastname: Lastname of the User
group: Which group is the User? moneymaster, gastro, user or bar?
password: salted hashed password for the User.
"""
2019-04-11 21:56:55 +00:00
id = db.Column(db.Integer, primary_key=True)
userID = db.Column(db.String, nullable=False, unique=True)
username = db.Column(db.String, nullable=False, unique=True)
firstname = db.Column(db.String, nullable=False)
lastname = db.Column(db.String, nullable=False)
group = db.Column(db.String, nullable=False)
password = db.Column(db.String, nullable=False)
geruechte = db.relationship('CreditList', backref='user', lazy=True)
2019-04-23 22:08:25 +00:00
def getCurrentGeruecht(self):
print('search currentGeruecht in user {}'.format(self.userID))
if len(self.geruechte) == 0:
print('user {} has no geruechte'.format(self.userID))
return self.createCurrentGeruecht()
print('iterate throw geruechte')
last = None
for geruecht in self.geruechte:
print('geruecht {}'.format(geruecht))
if geruecht.year == datetime.now().year:
print('found geruecht {}'.format(geruecht))
return geruecht
if geruecht.year == datetime.now().year - 1:
print('fonud last geruecht {}'.format(geruecht))
last = geruecht
2019-04-23 22:08:25 +00:00
if last:
amount = last.getSchulden()
return self.createCurrentGeruecht(amount=amount)
else:
print('error, no geruecht found and no geruecht created')
def createCurrentGeruecht(self, amount=0):
print('create currentgeruecht for user {} in year {}'.format(self.userID, datetime.now().year))
credit = CreditList(user_id=self.id, last_schulden=amount)
db.session.add(credit)
db.session.commit()
credit = CreditList.query.filter_by(year=datetime.now().year).first()
print('reated currentgeruecht {}'.format(credit))
return credit
2019-04-11 21:56:55 +00:00
def toJSON(self):
2019-04-17 12:46:46 +00:00
""" Create Dic to dump in JSON
2019-04-17 12:46:46 +00:00
Returns:
A Dic with static Attributes.
"""
2019-04-11 21:56:55 +00:00
dic = {
"userId": self.userID,
2019-04-11 21:56:55 +00:00
"username": self.username,
"firstname": self.firstname,
"lastname": self.lastname,
"group": self.group,
}
return dic
def login(self, password):
2019-04-17 12:46:46 +00:00
""" Login for the User
Only check the given Password:
Returns:
A Bool. True if the password is correct and False if it isn't.
"""
2019-04-11 21:56:55 +00:00
return True if bcrypt.check_password_hash(self.password, password) else False