Esempio n. 1
0
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))
Esempio n. 2
0
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))
Esempio n. 3
0
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))
Esempio n. 4
0
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")
Esempio n. 5
0
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")
Esempio n. 6
0
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")
Esempio n. 7
0
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")
Esempio n. 8
0
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()
Esempio n. 9
0
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)))
Esempio n. 10
0
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"]))
Esempio n. 11
0
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()