def user_create(grant_admin): """Creates new user""" user = User() user_type = 'user' if not grant_admin else 'admin' print() name = prompt("First name") surname = prompt("Last name") affiliation = prompt("Affiliation") print() username = prompt("Enter username") email = prompt_email() if email is None: return password = prompt_pass() if password is None: return user.first_name = to_unicode(name) user.last_name = to_unicode(surname) user.affiliation = to_unicode(affiliation) user.email = email user.is_admin = grant_admin print_user_info(user) if prompt_bool(cformat("%{yellow}Create the new {}?").format(user_type), default=True): # TODO: adapt to new authentication system, create local identity with username/password # user.identities.append(UserIdentity(..., identifier=username, password=password)) db.session.add(user) transaction.commit() success("New {} created successfully with ID: {}".format( user_type, user.id))
def user_create(grant_admin): """Creates new user""" update_session_options(db) user_type = 'user' if not grant_admin else 'admin' while True: email = prompt_email() if email is None: return email = email.lower() if not User.find(User.all_emails.contains(email), ~User.is_deleted, ~User.is_pending).count(): break error('Email already exists') first_name = prompt("First name") last_name = prompt("Last name") affiliation = prompt("Affiliation", '') print() while True: username = prompt("Enter username").lower() if not Identity.find(provider='indico', identifier=username).count(): break error('Username already exists') password = prompt_pass() if password is None: return identity = Identity(provider='indico', identifier=username, password=password) user = create_user(email, {'first_name': to_unicode(first_name), 'last_name': to_unicode(last_name), 'affiliation': to_unicode(affiliation)}, identity) user.is_admin = grant_admin print_user_info(user) if prompt_bool(cformat("%{yellow}Create the new {}?").format(user_type), default=True): db.session.add(user) db.session.commit() success("New {} created successfully with ID: {}".format(user_type, user.id))
def user_create(grant_admin): """Creates new user""" user = User() user_type = 'user' if not grant_admin else 'admin' print() name = prompt("First name") surname = prompt("Last name") affiliation = prompt("Affiliation") print() username = prompt("Enter username") email = prompt_email() if email is None: return password = prompt_pass() if password is None: return user.first_name = to_unicode(name) user.last_name = to_unicode(surname) user.affiliation = to_unicode(affiliation) user.email = email user.is_admin = grant_admin print_user_info(user) if prompt_bool(cformat("%{yellow}Create the new {}?").format(user_type), default=True): # TODO: adapt to new authentication system, create local identity with username/password # user.identities.append(UserIdentity(..., identifier=username, password=password)) db.session.add(user) transaction.commit() success("New {} created successfully with ID: {}".format(user_type, user.id))
def user_revoke(user_id): """Revokes administration rights from a given user""" avatar = AvatarHolder().getById(user_id) if avatar is None: error("The user does not exists") return print_user_info(avatar) if not avatar.isAdmin(): warning("This user does not have administration rights") return if prompt_bool(cformat("%{yellow}Revoke administration rights from this user?")): admin_list = HelperMaKaCInfo.getMaKaCInfoInstance().getAdminList() admin_list.revoke(avatar) success("Administration rights revoked successfully")
def user_revoke(user_id): """Revokes administration rights from a given user""" user = User.get(user_id) if user is None: error("This user does not exist") return print_user_info(user) if not user.is_admin: warning("This user does not have administration rights") return if prompt_bool(cformat("%{yellow}Revoke administration rights from this user?")): user.is_admin = False transaction.commit() success("Administration rights revoked successfully")
def user_grant(user_id): """Grants administration rights to a given user""" user = User.get(user_id) if user is None: error("This user does not exist") return print_user_info(user) if user.is_admin: warning("This user already has administration rights") return if prompt_bool(cformat("%{yellow}Grant administration rights to this user?")): user.is_admin = True transaction.commit() success("Administration rights granted successfully")
def user_grant(user_id): """Grants administration rights to a given user""" avatar = AvatarHolder().getById(user_id) if avatar is None: error("The user does not exists") return print_user_info(avatar) if avatar.isAdmin(): warning("This user already has administration rights") return if prompt_bool(cformat("%{yellow}Grant administration rights to this user?")): admin_list = HelperMaKaCInfo.getMaKaCInfoInstance().getAdminList() admin_list.grant(avatar) avatar.activateAccount() success("Administration rights granted successfully")
def main(): to_fix = defaultdict(list) info( "Looking for broken contribution links in participants... (This might take a while.)" ) contribs = (x[1] for x in conferenceHolderIterator(ConferenceHolder(), deepness='contrib') if x[0] == 'contrib') for contrib in contribs: for part in contrib.getPrimaryAuthorList(): if part.getContribution() is None: to_fix[contrib].append(('primary author', part)) for part in contrib.getCoAuthorList(): if part.getContribution() is None: to_fix[contrib].append(('co-author', part)) for part in contrib.getAuthorList(): if part.getContribution() is None: to_fix[contrib].append(('author', part)) for part in contrib.getSpeakerList(): if part.getContribution() is None: to_fix[contrib].append(('speaker', part)) if not to_fix: success("No broken contribution links found.") return DBMgr.getInstance().sync( ) # searching takes a long time, sync to prevent conflicts for contrib, parts in to_fix.iteritems(): conference = contrib.getConference() conference_title = conference.getTitle( ) if conference is not None else 'N/A' conference_id = conference.getId() if conference is not None else 'N/A' print "Event {} (id {})".format(conference_title, conference_id) print " Contribution {} (id {}):".format(contrib.getTitle(), contrib.getId()) print " {}".format(UHContributionDisplay.getURL(contrib)) for part_type, part in parts: if part.getContribution() is not None: # already fixed info(" - link already restored for {} {} (id {})".format( part_type, part.getFullName(), part.getId())) continue part._contrib = contrib success(" - restored link for {} {} (id {})".format( part_type, part.getFullName(), part.getId())) DBMgr.getInstance().commit()
def user_create(grant_admin): """Creates new user""" avatar = Avatar() user_type = 'user' if not grant_admin else 'admin' print() name = prompt("First name") surname = prompt("Last name") organization = prompt("Affiliation") print() login = prompt("Enter username") email = prompt_email().encode('utf-8') if email is None: return password = prompt_pass().encode('utf-8') if password is None: return avatar.setName(name) avatar.setSurName(surname) avatar.setOrganisation(organization) avatar.setLang("en_GB") avatar.setEmail(email) print_user_info(avatar) if prompt_bool(cformat("%{yellow}Create the new {}?").format(user_type), default=True): from MaKaC.authentication import AuthenticatorMgr avatar.activateAccount() login_info = LoginInfo(login, password) auth_mgr = AuthenticatorMgr() try: user_id = auth_mgr.createIdentity(login_info, avatar, "Local") auth_mgr.add(user_id) AvatarHolder().add(avatar) if grant_admin: admin_list = HelperMaKaCInfo.getMaKaCInfoInstance().getAdminList() admin_list.grant(avatar) success("New {} created successfully with ID: {}".format(user_type, avatar.getId())) except UserError as e: error("Error: {}".format(str(e)))
def update_menus(dbi): links = ("collaboration", "downloadETicket") ch = ConferenceHolder() cdmr = ConfDisplayMgrRegistery() counter = Counter() for __, event in conferenceHolderIterator(ch, deepness="event"): menu = cdmr.getDisplayMgr(event).getMenu() must_update = False for linkname in links: if menu.getLinkByName(linkname) is None: counter[linkname] += 1 must_update = True if must_update: menu.updateSystemLink() counter["updated"] += 1 if counter["updated"] % 100: dbi.commit() for linkname in links: print "{} links missing: {}".format(linkname, counter[linkname]) success("Event menus updated: {}".format(counter["updated"]))
def update_menus(dbi): links = ('collaboration', 'downloadETicket') ch = ConferenceHolder() cdmr = ConfDisplayMgrRegistery() counter = Counter() for __, event in conferenceHolderIterator(ch, deepness='event'): menu = cdmr.getDisplayMgr(event).getMenu() must_update = False for linkname in links: if menu.getLinkByName(linkname) is None: counter[linkname] += 1 must_update = True if must_update: menu.updateSystemLink() counter['updated'] += 1 if counter['updated'] % 100: dbi.commit() for linkname in links: print "{} links missing: {}".format(linkname, counter[linkname]) success("Event menus updated: {}".format(counter['updated']))
def main(): to_fix = defaultdict(list) info("Looking for broken contribution links in participants... (This might take a while.)") contribs = (x[1] for x in conferenceHolderIterator(ConferenceHolder(), deepness='contrib') if x[0] == 'contrib') for contrib in contribs: for part in contrib.getPrimaryAuthorList(): if part.getContribution() is None: to_fix[contrib].append(('primary author', part)) for part in contrib.getCoAuthorList(): if part.getContribution() is None: to_fix[contrib].append(('co-author', part)) for part in contrib.getAuthorList(): if part.getContribution() is None: to_fix[contrib].append(('author', part)) for part in contrib.getSpeakerList(): if part.getContribution() is None: to_fix[contrib].append(('speaker', part)) if not to_fix: success("No broken contribution links found.") return DBMgr.getInstance().sync() # searching takes a long time, sync to prevent conflicts for contrib, parts in to_fix.iteritems(): conference = contrib.getConference() conference_title = conference.getTitle() if conference is not None else 'N/A' conference_id = conference.getId() if conference is not None else 'N/A' print "Event {} (id {})".format(conference_title, conference_id) print " Contribution {} (id {}):".format(contrib.getTitle(), contrib.getId()) print " {}".format(UHContributionDisplay.getURL(contrib)) for part_type, part in parts: if part.getContribution() is not None: # already fixed info(" - link already restored for {} {} (id {})".format(part_type, part.getFullName(), part.getId())) continue part._contrib = contrib success(" - restored link for {} {} (id {})".format(part_type, part.getFullName(), part.getId())) DBMgr.getInstance().commit()