示例#1
0
def _updateExperimenter(request, conn, eid):
    groups = list(conn.getObjects("ExperimenterGroup"))
    groups.sort(key=lambda x: x.getName().lower())

    experimenter, defaultGroup, otherGroups, isLdapUser, hasAvatar = prepare_experimenter(
        conn, eid)

    name_check = conn.checkOmeName(request.REQUEST.get('omename'),
                                   experimenter.omeName)
    email_check = conn.checkEmail(request.REQUEST.get('email'),
                                  experimenter.email)
    initial = {'active': True, 'groups': otherGroupsInitialList(groups)}

    form = ExperimenterForm(initial=initial,
                            data=request.POST.copy(),
                            name_check=name_check,
                            email_check=email_check)

    if form.is_valid():
        omename = form.cleaned_data['omename']
        firstName = form.cleaned_data['first_name']
        middleName = form.cleaned_data['middle_name']
        lastName = form.cleaned_data['last_name']
        email = form.cleaned_data['email']
        institution = form.cleaned_data['institution']
        admin = toBoolean(form.cleaned_data['administrator'])
        active = toBoolean(form.cleaned_data['active'])
        defaultGroup = form.cleaned_data['default_group']
        otherGroups = form.cleaned_data['other_groups']

        # default group
        for g in groups:
            if long(defaultGroup) == g.id:
                dGroup = g
                break

        listOfOtherGroups = set()
        # rest of groups
        for g in groups:
            for og in otherGroups:
                # remove defaultGroup from otherGroups if contains
                if long(og) == long(dGroup.id):
                    pass
                elif long(og) == g.id:
                    listOfOtherGroups.add(g)

        conn.updateExperimenter(experimenter, omename, firstName, lastName,
                                email, admin, active, dGroup,
                                listOfOtherGroups, middleName, institution)
    else:
        raise Exception(form.errors.as_text())