first usable site

only 2 groups exists: bar and finanzer
person can be in more than 1 group

site for baruser first try with autocomplete from ldap
site for finanzer ; overview; specialview for 1 Person
This commit is contained in:
Tim Gröger 2019-12-26 10:28:30 +01:00
parent 19ff9db9df
commit d0f665cc8b
6 changed files with 52 additions and 19 deletions

View File

@ -64,6 +64,12 @@ def _baradd():
amount = int(data['amount']) amount = int(data['amount'])
user = db.getUser(userID) user = db.getUser(userID)
if user is None:
groups = ldap.getGroup(userID)
user_data = ldap.getUserData(userID)
user_data['group'] = groups
db.insertUser(user_data)
user = db.getUser(userID)
month = user.addAmount(amount) month = user.addAmount(amount)
amount = abs(month[0] - month[1]) amount = abs(month[0] - month[1])
@ -87,11 +93,7 @@ def _getUsers():
retVal = {} retVal = {}
if accToken is not None: if accToken is not None:
users = db.getAllUser() retVal = ldap.getAllUser()
for user in users:
month = user.getGeruecht().getMonth()
if month == 0:
retVal[user.cn] = {user.toJSON()}
return jsonify(retVal) return jsonify(retVal)
return jsonify({"error": "permission denied"}), 401 return jsonify({"error": "permission denied"}), 401

View File

@ -106,7 +106,7 @@ class DatabaseController(metaclass=Singleton):
self.db.close() self.db.close()
raise err raise err
if len(data) == 1: if len(data) == 1:
return CreditList(data[0]) return [CreditList(data[0])]
else: else:
return [CreditList(value) for value in data] return [CreditList(value) for value in data]

View File

@ -63,33 +63,58 @@ class LDAPController(metaclass=Singleton):
def __isUserInList(self, list, username): def __isUserInList(self, list, username):
help_list = [] help_list = []
for user in list: for user in list:
help_list.append(user[1]['cn'][0].decode('utf-8')) help_list.append(user['username'])
if username in help_list: if username in help_list:
return True return True
return False return False
def getAllUser(self):
self.connect()
retVal = []
data = self.client.search_s('ou=user,{}'.format(self.dn), ldap.SCOPE_SUBTREE, attrlist=['cn', 'givenName', 'sn'])
for user in data:
if 'cn' in user[1]:
username = user[1]['cn'][0].decode('utf-8')
firstname = user[1]['givenName'][0].decode('utf-8')
lastname = user[1]['sn'][0].decode('utf-8')
retVal.append({'username': username, 'firstname': firstname, 'lastname': lastname})
return retVal
def searchUser(self, searchString): def searchUser(self, searchString):
self.connect() self.connect()
name = searchString.split(" ") name = searchString.split(" ")
for i in range(len(name)):
name[i] = "*"+name[i]+"*"
print(name)
name_result = [] name_result = []
if len(name) == 1: if len(name) == 1:
name_result[0] = self.client.search_s('ou=user,{}'.format(self.dn), ldap.SCOPE_SUBTREE, 'givenName={}'.format(name[0]), ['cn', 'givenName', 'sn']) if name[0] == "**":
name_result[1] = self.client.search_s('ou=user,{}'.format(self.dn), ldap.SCOPE_SUBTREE, 'sn={}'.format(name[0]),['cn', 'givenName', 'sn']) name_result.append(self.client.search_s('ou=user,{}'.format(self.dn), ldap.SCOPE_SUBTREE,
attrlist=['cn', 'givenName', 'sn']))
else: else:
name_result[2] = self.client.search_s('ou=user,{}'.format(self.dn), ldap.SCOPE_SUBTREE, name_result.append(self.client.search_s('ou=user,{}'.format(self.dn), ldap.SCOPE_SUBTREE, 'givenName={}'.format(name[0]), ['cn', 'givenName', 'sn']))
'givenName={}'.format(name[0]), ['cn', 'givenName', 'sn']) name_result.append(self.client.search_s('ou=user,{}'.format(self.dn), ldap.SCOPE_SUBTREE, 'sn={}'.format(name[0]),['cn', 'givenName', 'sn']))
name_result[3] = self.client.search_s('ou=user,{}'.format(self.dn), ldap.SCOPE_SUBTREE, 'sn={}'.format(name[0]), else:
['cn', 'givenName', 'sn']) name_result.append(self.client.search_s('ou=user,{}'.format(self.dn), ldap.SCOPE_SUBTREE,
'givenName={}'.format(name[1]), ['cn', 'givenName', 'sn']))
name_result.append(self.client.search_s('ou=user,{}'.format(self.dn), ldap.SCOPE_SUBTREE, 'sn={}'.format(name[1]),
['cn', 'givenName', 'sn']))
retVal = [] retVal = []
for user in name_result: for names in name_result:
for user in names:
if 'cn' in user[1]:
username = user[1]['cn'][0].decode('utf-8') username = user[1]['cn'][0].decode('utf-8')
if not self.__isUserInList(retVal, username): if not self.__isUserInList(retVal, username):
firstname = user[1]['givenName'][0].decode('utf-8') firstname = user[1]['givenName'][0].decode('utf-8')
lastname = user[1]['givenName'][0].decode('utf-8') lastname = user[1]['sn'][0].decode('utf-8')
retVal.append({username: username, firstname: firstname, lastname: lastname}) retVal.append({'username': username, 'firstname': firstname, 'lastname': lastname})
return retVal return retVal

View File

@ -28,6 +28,8 @@ def _getFinanzer():
for user in users: for user in users:
LOGGER.debug("Add User {} to ReturnValue".format(user)) LOGGER.debug("Add User {} to ReturnValue".format(user))
dic[user.cn] = user.toJSON() dic[user.cn] = user.toJSON()
creditList = db.getCreditListFromUser(user)
dic[user.cn]['creditList'] = {credit.year: credit.toJSON() for credit in creditList}
LOGGER.debug("ReturnValue is {}".format(dic)) LOGGER.debug("ReturnValue is {}".format(dic))
LOGGER.info("Send main for Finanzer") LOGGER.info("Send main for Finanzer")
return jsonify(dic) return jsonify(dic)
@ -130,7 +132,9 @@ def _addCredit():
accToken = verifyAccessToken(token, MONEY) accToken = verifyAccessToken(token, MONEY)
if accToken is not None: if accToken is not None:
data = request.get_json() data = request.get_json()
print(data)
LOGGER.debug("Get data {}".format(data)) LOGGER.debug("Get data {}".format(data))
userID = data['userId'] userID = data['userId']
credit = int(data['credit']) credit = int(data['credit'])

View File

@ -321,6 +321,7 @@ class CreditList():
"dez": { "dez": {
"credit": self.dez_guthaben, "credit": self.dez_guthaben,
"depts": self.dez_schulden}, "depts": self.dez_schulden},
"last": self.last_schulden
} }
return dic return dic

View File

@ -40,6 +40,7 @@ class User():
self.geruechte = geruechte self.geruechte = geruechte
elif type(geruechte) == CreditList: elif type(geruechte) == CreditList:
self.geruechte.append(geruechte) self.geruechte.append(geruechte)
self.updateGeruecht()
#geruechte = db.relationship('CreditList', backref='user', lazy=True) #geruechte = db.relationship('CreditList', backref='user', lazy=True)
def createGeruecht(self, amount=0, year=datetime.now().year): def createGeruecht(self, amount=0, year=datetime.now().year):