コード例 #1
0
def get_testrole():
    try:
        return Role.objects.get(name='testrole')
    except Role.DoesNotExist:
        r = Role(name='testrole', group=get_testgroup())
        r.save()
        return r
コード例 #2
0
def admin_permission_role_edit(request, group, role_id=None):
    if not has_permission_flag(request.user, 'community_manage_roles'):
        raise PermissionDenied()
    role = None
    if role_id:
        role = get_object_or_404(Role, pk=role_id)

    if request.method == 'POST':
        form = EditRoleForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            r = role
            if not r:
                r = Role(group=group)
            r.name = data['name']
            r.save()

            # Delete old flags
            r.permission_flags.clear()

            # Add all flags
            for flag_name in data['permission_flags']:
                r.permission_flags.add(
                    PermissionFlag.objects.get(name=flag_name))

            r.save()

            messages.success(request,
                             message=ugettext(u'Successfully saved role.'))
            return HttpResponseRedirect(r.get_absolute_memberlisturl())

    else:
        form = EditRoleForm()

    if role:
        form.fields['name'].initial = role.name
        form.fields['permission_flags'].initial = [
            flag.name for flag in role.permission_flags.all()
        ]

    return render_to_response(
        'sphene/community/admin/permission/role_edit.html', {
            'form': form,
        },
        context_instance=RequestContext(request))