wcs/wcs/users.py

72 lines
1.9 KiB
Python

import os
from quixote import get_publisher
from qommon.storage import StorableObject
from qommon import get_cfg
class User(StorableObject):
_names = 'users'
name = None
email = None
roles = None
is_admin = False
anonymous = False
form_data = None # dumping ground for custom fields
name_identifiers = None
identification_token = None
lasso_dump = None
last_seen = None
def __init__(self, name = None):
StorableObject.__init__(self)
self.name = name
self.name_identifiers = []
self.roles = []
def migrate(self):
changed = False
if self.roles and 'site-admin' in self.roles:
self.is_admin = True
self.roles = [x for x in self.roles if x != 'site-admin']
changed = True
if changed:
self.store()
def get_formdef(cls):
from formdef import FormDef
filename = os.path.join(get_publisher().app_dir, 'config', 'user')
try:
formdef = FormDef.get_filename(filename)
except KeyError:
formdef = None
return formdef
get_formdef = classmethod(get_formdef)
def get_display_name(self):
if self.name:
return self.name
if self.email:
return self.email
return _('Unknown User')
display_name = property(get_display_name)
def set_attributes_from_formdata(self, formdata):
users_cfg = get_cfg('users', {})
field_email = users_cfg.get('field_email')
if field_email:
self.email = formdata.get(field_email)
field_name_values = users_cfg.get('field_name')
if type(field_name_values) is str: # it was a string in previous versions
field_name_values = [field_name_values]
if field_name_values:
self.name = ' '.join([formdata.get(x) for x in field_name_values if formdata.get(x)])