101 lines
3.2 KiB
Python
101 lines
3.2 KiB
Python
from . import LOGGER, Singleton, db, ldapController as ldap, emailController
|
|
from geruecht.model.user import User
|
|
from geruecht.exceptions import PermissionDenied
|
|
from datetime import datetime
|
|
|
|
class UserController(metaclass=Singleton):
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
def lockUser(self, username, locked):
|
|
user = self.getUser(username)
|
|
user.updateData({'locked': locked})
|
|
db.updateUser(user)
|
|
return self.getUser(username)
|
|
|
|
def updateConfig(self, username, data):
|
|
user = self.getUser(username)
|
|
user.updateData(data)
|
|
db.updateUser(user)
|
|
return self.getUser(username)
|
|
|
|
def autoLock(self, user):
|
|
if user.autoLock:
|
|
if user.getGeruecht(year=datetime.now().year).getSchulden() <= (-1*user.limit):
|
|
user.updateData({'locked': True})
|
|
emailController.sendMail(user)
|
|
else:
|
|
user.updateData({'locked': False})
|
|
db.updateUser(user)
|
|
|
|
def addAmount(self, username, amount, year, month, finanzer=False):
|
|
user = self.getUser(username)
|
|
if not user.locked or finanzer:
|
|
user.addAmount(amount, year=year, month=month)
|
|
creditLists = user.updateGeruecht()
|
|
for creditList in creditLists:
|
|
db.updateCreditList(creditList)
|
|
self.autoLock(user)
|
|
return user.getGeruecht(year)
|
|
|
|
def addCredit(self, username, credit, year, month):
|
|
user = self.getUser(username)
|
|
user.addCredit(credit, year=year, month=month)
|
|
creditLists = user.updateGeruecht()
|
|
for creditList in creditLists:
|
|
db.updateCreditList(creditList)
|
|
self.autoLock(user)
|
|
return user.getGeruecht(year)
|
|
|
|
def getAllUsersfromDB(self):
|
|
users = db.getAllUser()
|
|
for user in users:
|
|
self.__updateGeruechte(user)
|
|
return db.getAllUser()
|
|
|
|
def getUser(self, username):
|
|
user = db.getUser(username)
|
|
groups = ldap.getGroup(username)
|
|
user_data = ldap.getUserData(username)
|
|
user_data['gruppe'] = groups
|
|
user_data['group'] = groups
|
|
if user is None:
|
|
user = User(user_data)
|
|
db.insertUser(user)
|
|
else:
|
|
user.updateData(user_data)
|
|
db.updateUser(user)
|
|
user = db.getUser(username)
|
|
self.__updateGeruechte(user)
|
|
return user
|
|
|
|
def __updateGeruechte(self, user):
|
|
user.getGeruecht(datetime.now().year)
|
|
creditLists = user.updateGeruecht()
|
|
if user.getGeruecht(datetime.now().year).getSchulden() != 0:
|
|
for creditList in creditLists:
|
|
db.updateCreditList(creditList)
|
|
|
|
def sendMail(self, username):
|
|
if type(username) == User:
|
|
user = username
|
|
if type(username) == str:
|
|
user = db.getUser(username)
|
|
return emailController.sendMail(user)
|
|
|
|
def sendAllMail(self):
|
|
retVal = []
|
|
users = db.getAllUser()
|
|
for user in users:
|
|
retVal.append(self.sendMail(user))
|
|
return retVal
|
|
|
|
def loginUser(self, username, password):
|
|
try:
|
|
user = self.getUser(username)
|
|
ldap.login(username, password)
|
|
return user
|
|
except PermissionDenied as err:
|
|
raise err
|