def update_membership(self, group): if hasattr(self, 'form_result'): user = User.get_byid(self.form_result.get('user_id', None)) membership = GroupMember.get(user, group) if membership is not None: role = self.form_result.get('role', 'member') if role == 'not-member': meta.Session.delete(membership) elif role in ['member', 'administrator']: role = GroupMembershipType.get(role) membership.role = role h.flash(_("The status of the user %(fullname)s was updated.") % {'fullname': user.fullname}) else: h.flash(_("Problem updating the status of the user.")) meta.Session.flush() meta.Session.expire(group) if group.administrators == 0: h.flash(_('The group must have at least one administrator!')) meta.Session.rollback() else: meta.Session.commit() else: h.flash(_("Problem updating the status of the user. Cannot find such user.")) redirect(url(controller="group", action="members", id=group.group_id))
def leave(self, group): membership = GroupMember.get(c.user, group) if membership is not None: meta.Session.delete(membership) meta.Session.flush() meta.Session.expire(group) if len(group.administrators) < 1: h.flash(_('The group must have at least one administrator!')) meta.Session.rollback() redirect(request.referrer) meta.Session.commit() redirect(group.url())