def create(cls, user_name, email, password=None, locale=None, openid_identity=None, global_admin=False, display_name=None): from group import Group from membership import Membership from openid import OpenID import adhocracy.lib.util as util if password is None: password = util.random_token() import adhocracy.i18n as i18n if locale is None: locale = i18n.get_default_locale() user = User(user_name, email, password, locale, display_name=display_name) meta.Session.add(user) # Add the global default group default_group = Group.by_code(Group.CODE_DEFAULT) default_membership = Membership(user, None, default_group) meta.Session.add(default_membership) # Autojoin the user in instances config_autojoin = config.get('adhocracy.instances.autojoin') if config_autojoin: instances = Instance.all() if config_autojoin != 'ALL': instance_keys = [ key.strip() for key in config_autojoin.split(",") ] instances = [ instance for instance in instances if instance.key in instance_keys ] for instance in instances: autojoin_membership = Membership(user, instance, instance.default_group) meta.Session.add(autojoin_membership) if global_admin: admin_group = Group.by_code(Group.CODE_ADMIN) admin_membership = Membership(user, None, admin_group) meta.Session.add(admin_membership) if openid_identity is not None: openid = OpenID(unicode(openid_identity), user) meta.Session.add(openid) meta.Session.flush() return user
def create(cls, user_name, email, password=None, locale=None, openid_identity=None, global_admin=False, display_name=None): from group import Group from membership import Membership from openid import OpenID import adhocracy.lib.util as util if password is None: password = util.random_token() import adhocracy.i18n as i18n if locale is None: locale = i18n.get_default_locale() user = User(user_name, email, password, locale, display_name=display_name) meta.Session.add(user) # Add the global default group default_group = Group.by_code(Group.CODE_DEFAULT) default_membership = Membership(user, None, default_group) meta.Session.add(default_membership) # Autojoin the user in instances config_autojoin = config.get('adhocracy.instances.autojoin') if config_autojoin: instances = Instance.all() if config_autojoin != 'ALL': instance_keys = [key.strip() for key in config_autojoin.split(",")] instances = [instance for instance in instances if instance.key in instance_keys] for instance in instances: autojoin_membership = Membership(user, instance, instance.default_group) meta.Session.add(autojoin_membership) if global_admin: admin_group = Group.by_code(Group.CODE_ADMIN) admin_membership = Membership(user, None, admin_group) meta.Session.add(admin_membership) if openid_identity is not None: openid = OpenID(unicode(openid_identity), user) meta.Session.add(openid) meta.Session.flush() return user
def fix_autojoin(self, commit=True): from membership import Membership config_autojoin = config.get('adhocracy.instances.autojoin') if config_autojoin == 'ALL': instances = Instance.all(include_hidden=True) else: instance_keys = [key.strip() for key in config_autojoin.split(",")] instances = meta.Session.query(Instance)\ .filter(Instance.key.in_(instance_keys)).all() to_join = set(instances) added = 0 for m in self.memberships: to_join.discard(m.instance) for instance in to_join: autojoin_membership = Membership(self, instance, instance.default_group) meta.Session.add(autojoin_membership) added += 1 if commit: meta.Session.commit() return added
def fix_autojoin(self, commit=True): from membership import Membership config_autojoin = config.get('adhocracy.instances.autojoin') if config_autojoin == 'ALL': instances = Instance.all(include_hidden=True) else: instance_keys = [key.strip() for key in config_autojoin.split(",")] instances = meta.Session.query(Instance)\ .filter(Instance.key.in_(instance_keys)).all() to_join = set(instances) added = 0 for m in self.memberships: to_join.discard(m.instance) for instance in to_join: autojoin_membership = Membership( self, instance, instance.default_group) meta.Session.add(autojoin_membership) added += 1 if commit: meta.Session.commit() return added
def create(cls, user_name, email, password=None, locale=None, openid_identity=None, global_admin=False, display_name=None, autojoin=True, shibboleth_persistent_id=None): """ Create a user. If user_name is None, a random user name is generated. """ from group import Group from membership import Membership import adhocracy.lib.util as util if password is None: password = util.random_token() import adhocracy.i18n as i18n if locale is None: locale = i18n.get_default_locale() while user_name is None: # Note: This can theoretically lead to IntegrityErrors if the same # username is generated at the same time. This is very unlikely # though. from adhocracy.lib.util import random_username try_user_name = random_username() if cls.find(try_user_name) is None: user_name = try_user_name from adhocracy.lib import helpers as h h.flash(_('The random username %s has been assigned to you.') % user_name, 'success') user = User(user_name, email, password, locale, display_name=display_name) meta.Session.add(user) # Add the global default group default_group = Group.by_code(Group.CODE_DEFAULT) default_membership = Membership(user, None, default_group) meta.Session.add(default_membership) # Autojoin the user in instances config_autojoin = config.get('adhocracy.instances.autojoin') if autojoin and config_autojoin: instances = Instance.all(include_hidden=True) if config_autojoin != 'ALL': instance_keys = [key.strip() for key in config_autojoin.split(",")] instances = [instance for instance in instances if instance.key in instance_keys] for instance in instances: autojoin_membership = Membership(user, instance, instance.default_group) meta.Session.add(autojoin_membership) if global_admin: admin_group = Group.by_code(Group.CODE_ADMIN) admin_membership = Membership(user, None, admin_group) meta.Session.add(admin_membership) if openid_identity is not None: from adhocracy.model.openid import OpenID openid = OpenID(unicode(openid_identity), user) meta.Session.add(openid) if shibboleth_persistent_id is not None: from adhocracy.model.shibboleth import Shibboleth shib = Shibboleth(shibboleth_persistent_id, user) meta.Session.add(shib) meta.Session.flush() return user