diff --git a/emonitor/modules/persons/content_admin.py b/emonitor/modules/persons/content_admin.py index f8e8557..db04383 100644 --- a/emonitor/modules/persons/content_admin.py +++ b/emonitor/modules/persons/content_admin.py @@ -1,5 +1,6 @@ import os import werkzeug +import yaml from datetime import datetime from flask import render_template, request, current_app from emonitor.extensions import db @@ -49,6 +50,11 @@ def getAdminContent(self, **params): pass person.identifier = request.form.get('identifier') person.remark = request.form.get('remark') + _additional = {} + for field in Settings.get('persons.settings').get('additional'): + if field.split('=')[0] in request.form.keys(): + _additional[field.split('=')[0]] = request.form.get(field.split('=')[0]) + person._options = yaml.safe_dump(_additional, encoding='utf-8') db.session.commit() elif request.form.get('action').startswith('deleteperson_'): @@ -74,6 +80,14 @@ def getAdminContent(self, **params): Settings.set('persons.settings', _settings) db.session.commit() + elif request.form.get('action') == 'updateadditional': + _settings = Settings.get('persons.settings') + if 'additional' not in _settings.keys(): + _settings['additional'] = [] + _settings['additional'] = request.form.get('additional').replace('\r', '').split('\n') + Settings.set('persons.settings', _settings) + db.session.commit() + if int(module[1]) == 0: params.update({'settings': Settings.get('persons.settings')}) return render_template("admin.persons.settings.html", **params) @@ -129,7 +143,10 @@ def getAdminData(self): for key in vals['persons']: # item list if key['state'] in states: # import only with correct state if key['state'] == '-1': # add key - key['birthdate'] = datetime.strptime(key['birthdate'], '%d.%m.%Y') + try: + key['birthdate'] = datetime.strptime(key['birthdate'], '%d.%m.%Y') + except: + print ">>>>", key['birthdate'] key['active'] = key['active'] == 'Aktiv' p = Person(key['firstname'], key['lastname'], key['salutation'], key['grade'], key['position'], key['identifier'], key['active'], key['birthdate'], key['remark'], int(request.args.get('department'))) db.session.add(p) diff --git a/emonitor/modules/persons/persons.py b/emonitor/modules/persons/persons.py index 9d053cb..53f7a98 100644 --- a/emonitor/modules/persons/persons.py +++ b/emonitor/modules/persons/persons.py @@ -56,6 +56,10 @@ def birthday(self): """ return int((datetime(1904, *self.birthdate.timetuple()[1:-2])).strftime('%j')) + @property + def options(self): + return yaml.load(self._options) + @staticmethod def getPersons(id=0, identifier=0, dept=0, onlyactive=False): if id != 0: diff --git a/emonitor/modules/persons/templates/admin.persons.settings.html b/emonitor/modules/persons/templates/admin.persons.settings.html index a53a1a4..9dde21b 100644 --- a/emonitor/modules/persons/templates/admin.persons.settings.html +++ b/emonitor/modules/persons/templates/admin.persons.settings.html @@ -66,6 +66,21 @@

{{ _('persons.header.settings') }}

+
+ {{ _('persons.additional.label') }} + {{ _('persons.additional.info') }} +
+

+ +

+

+ +

+
+
+ {% endblock %} {% block script_end %} diff --git a/emonitor/modules/persons/templates/admin.persons_edit.html b/emonitor/modules/persons/templates/admin.persons_edit.html index fd9358d..8ab00e2 100644 --- a/emonitor/modules/persons/templates/admin.persons_edit.html +++ b/emonitor/modules/persons/templates/admin.persons_edit.html @@ -65,6 +65,16 @@

{{ _('persons.header.edit') }}

+

+

+ {{ _('persons.additional.fields') }} + {% for f in settings.additional %} +
+ {% endfor %} +
+