Ignore:
Timestamp:
20 May 2011, 09:39:59 (13 years ago)
Author:
Henrik Bettermann
Message:

Implement deletion of local roles for faculties and departments.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py

    r6154 r6161  
    4848    user = form['user']
    4949    role_manager = IPrincipalRoleManager(view.context)
     50    role_manager.assignRoleToPrincipal(localrole, user)
     51    view.redirect(view.url(view.context, u'@@manage')+'#tab-%s' % tab)
     52    return
     53
     54def get_users_with_local_roles(view):
     55    role_manager = IPrincipalRoleManager(view.context)
    5056    role_map = IPrincipalRoleMap(view.context)
    51     role_manager.assignRoleToPrincipal(localrole, user)
     57    for item in role_map.getPrincipalsAndRoles():
     58        local_role = item[0]
     59        user_name = item[1]
     60        setting = item[2]
     61        user = grok.getSite()['users'].get(user_name,None)
     62        roles_dict = view.context.local_roles
     63        local_role_title = roles_dict[local_role]
     64        if user:
     65            yield(dict(user_name=user_name, user_title=user.description,
     66                local_role=local_role, local_role_title=local_role_title,
     67                setting=setting))
     68        else:
     69            yield(dict(user_name=user_name, user_title=user_name,
     70                local_role=local_role, local_role_title=local_role_title,
     71                setting=setting))
     72
     73def del_local_roles(view, tab, **data):
     74    form = view.request.form
     75    if form.has_key('role_id'):
     76        child_id = form['role_id']
     77    else:
     78        view.flash('No local role selected!')
     79        view.redirect(view.url(view.context, '@@manage')+'#tab-%s' % tab)
     80        return
     81    if not isinstance(child_id, list):
     82        child_id = [child_id]
     83    #import pdb; pdb.set_trace()
     84    deleted = []
     85    role_manager = IPrincipalRoleManager(view.context)
     86    for id in child_id:
     87        localrole = id.split('|')[1]
     88        user_name = id.split('|')[0]
     89        try:
     90            role_manager.unsetRoleForPrincipal(localrole, user_name)
     91            deleted.append(id)
     92        except:
     93            view.flash('Could not remove %s: %s: %s' % (
     94                    id, sys.exc_info()[0], sys.exc_info()[1]))
     95    if len(deleted):
     96        view.flash('Successfully removed: %s' % ', '.join(deleted))
    5297    view.redirect(view.url(view.context, u'@@manage')+'#tab-%s' % tab)
    5398    return
     
    859904    def delFaculties(self, **data):
    860905        form = self.request.form
    861         child_id = form['val_id']
     906        if form.has_key('val_id'):
     907            child_id = form['val_id']
     908        else:
     909            self.flash('No faculty selected!')
     910            self.redirect(self.url(self.context, '@@manage')+'#tab-1')
     911            return
    862912        if not isinstance(child_id, list):
    863913            child_id = [child_id]
     
    947997    taboneactions = ['Save','Cancel']
    948998    tabtwoactions = ['Add department', 'Remove selected','Cancel']
    949     tabthreeactions = ['Add local role', 'Remove local roles selected']
     999    tabthreeactions1 = ['Remove selected local roles']
     1000    tabthreeactions2 = ['Add local role']
    9501001
    9511002    form_fields = grok.AutoFields(IFaculty)
     
    9611012    def update(self):
    9621013        tabs.need()
    963         #warning.need()
     1014        datatable.need()
    9641015        return super(FacultyManageFormPage, self).update()
    9651016
     
    9741025            url = self.url(val)
    9751026            yield(dict(url=url, name=key, val=val))
     1027
     1028    def getUsersWithLocalRoles(self):
     1029        return get_users_with_local_roles(self)
    9761030
    9771031    # ToDo: Show warning message before deletion
     
    9821036            child_id = form['val_id']
    9831037        else:
    984             self.flash('No subunit selected!')
    985             self.redirect(self.url(self.context, '@@manage')+'#tab-%s' % tab)
     1038            self.flash('No department selected!')
     1039            self.redirect(self.url(self.context, '@@manage')+'#tab-2')
    9861040            return
    9871041        if not isinstance(child_id, list):
     
    10191073        return add_local_role(self, '3', **data)
    10201074
     1075    @grok.action('Remove selected local roles')
     1076    def delLocalRoles(self, **data):
     1077        return del_local_roles(self,3,**data)
     1078
    10211079class DepartmentAddFormPage(WAeUPAddFormPage):
    10221080    """Add a department to a faculty.
     
    11001158    tabtwoactions = ['Add course', 'Remove selected courses','Cancel']
    11011159    tabthreeactions = ['Add certificate', 'Remove selected certificates', 'Cancel']
    1102     tabfouractions = ['Add local role', 'Remove local roles selected']
     1160    tabfouractions1 = ['Remove selected local roles']
     1161    tabfouractions2 = ['Add local role']
    11031162
    11041163    form_fields = grok.AutoFields(IDepartment)
     
    11421201            url = self.url(val)
    11431202            yield(dict(url=url, name=key, val=val))
     1203           
     1204    def getUsersWithLocalRoles(self):
     1205        return get_users_with_local_roles(self)
    11441206
    11451207    @grok.action('Save')
     
    11521214    def delCourses(self, **data):
    11531215        form = self.request.form
    1154         child_id = form['val_id']
     1216        if form.has_key('val_id'):
     1217            child_id = form['val_id']
     1218        else:
     1219            self.flash('No course selected!')
     1220            self.redirect(self.url(self.context, '@@manage')+'#tab-2')
     1221            return
    11551222        if not isinstance(child_id, list):
    11561223            child_id = [child_id]
     
    11711238    def delCertificates(self, **data):
    11721239        form = self.request.form
    1173         child_id = form['val_id']
     1240        if form.has_key('val_id'):
     1241            child_id = form['val_id']
     1242        else:
     1243            self.flash('No certificate selected!')
     1244            self.redirect(self.url(self.context, '@@manage')+'#tab-3')
     1245            return
    11741246        if not isinstance(child_id, list):
    11751247            child_id = [child_id]
     
    12061278        return add_local_role(self, 4, **data)
    12071279
     1280    @grok.action('Remove selected local roles')
     1281    def delLocalRoles(self, **data):
     1282        return del_local_roles(self,4,**data)
     1283
    12081284class CourseAddFormPage(WAeUPAddFormPage):
    12091285    """Add-form to add course to a department.
     
    13961472    def delCertificateCourses(self, **data):
    13971473        form = self.request.form
    1398         child_id = form['val_id']
     1474        if form.has_key('val_id'):
     1475            child_id = form['val_id']
     1476        else:
     1477            self.flash('No course referrer selected!')
     1478            self.redirect(self.url(self.context, '@@manage')+'#tab-2')
     1479            return
    13991480        if not isinstance(child_id, list):
    14001481            child_id = [child_id]
Note: See TracChangeset for help on using the changeset viewer.