72 lines
1.9 KiB
Python
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)])
|
|
|