first commit for v0.2
This commit is contained in:
parent
6ba03afc73
commit
1463854a45
143 changed files with 20775 additions and 2764 deletions
131
permissions/views.py
Normal file
131
permissions/views.py
Normal file
|
@ -0,0 +1,131 @@
|
|||
from django.shortcuts import render, redirect, get_object_or_404
|
||||
from django.views.decorators.http import require_http_methods
|
||||
from django.contrib import messages
|
||||
from django.http import Http404, HttpResponse
|
||||
|
||||
|
||||
from permissions.models import *
|
||||
from permissions.forms import *
|
||||
from permissions.decorators import project_perm_required
|
||||
|
||||
|
||||
@project_perm_required('manage_global_permission')
|
||||
def global_perm_list(request):
|
||||
return render(request, 'permissions/global_perm_list.html', {
|
||||
'permissions': GlobalPermission.objects.all(),
|
||||
})
|
||||
|
||||
|
||||
@project_perm_required('manage_global_permission')
|
||||
def global_perm_edit(request, id=None):
|
||||
if id:
|
||||
perm = get_object_or_404(GlobalPermission, id=id)
|
||||
else:
|
||||
perm = None
|
||||
form = GlobalPermissionForm(request.POST or None, instance=perm)
|
||||
if request.method == 'POST' and form.is_valid():
|
||||
form.save()
|
||||
if id:
|
||||
messages.success(request, 'Permission updated successfully.')
|
||||
else:
|
||||
messages.success(request, 'Permission added successfully.')
|
||||
return redirect('list-global-permission')
|
||||
name = request.POST.get('grantee_name')
|
||||
if not name:
|
||||
if perm:
|
||||
name = perm.grantee.__str__()
|
||||
else:
|
||||
name = ''
|
||||
return render(request, 'permissions/global_perm_edit.html', {
|
||||
'perm': perm,
|
||||
'form': form,
|
||||
'name': name,
|
||||
})
|
||||
|
||||
|
||||
@require_http_methods(["POST"])
|
||||
@project_perm_required('manage_global_permission')
|
||||
def global_perm_delete(request, id):
|
||||
perm = get_object_or_404(GlobalPermission, id=id)
|
||||
perm.delete()
|
||||
messages.success(request, 'Permission deleted successfully.')
|
||||
return redirect('list-global-permission')
|
||||
|
||||
|
||||
@project_perm_required('manage_global_permission')
|
||||
def global_perm_toggle(request, id, perm):
|
||||
permission = get_object_or_404(GlobalPermission, id=id)
|
||||
# to be sure to dont modify other attribut with the following trick
|
||||
if '-' not in perm:
|
||||
raise Http404
|
||||
perm = perm.replace('-', '_')
|
||||
if hasattr(permission, perm):
|
||||
state = not getattr(permission, perm)
|
||||
setattr(permission, perm, state)
|
||||
permission.save()
|
||||
return HttpResponse('1' if state else '0')
|
||||
else:
|
||||
raise Http404
|
||||
|
||||
|
||||
@project_perm_required('manage_project_permission')
|
||||
def project_perm_list(request, project):
|
||||
return render(request, 'permissions/project_perm_list.html', {
|
||||
'project': project,
|
||||
'permissions': ProjectPermission.objects.filter(project=project).all(),
|
||||
})
|
||||
|
||||
|
||||
@project_perm_required('manage_project_permission')
|
||||
def project_perm_edit(request, project, id=None):
|
||||
if id:
|
||||
perm = get_object_or_404(ProjectPermission, project=project, id=id)
|
||||
else:
|
||||
perm = None
|
||||
form = ProjectPermissionForm(request.POST or None, instance=perm)
|
||||
if request.method == 'POST' and form.is_valid():
|
||||
if id:
|
||||
form.save()
|
||||
messages.success(request, 'Permission updated successfully.')
|
||||
else:
|
||||
perm = form.save(commit=False)
|
||||
perm.project = project
|
||||
perm.save()
|
||||
messages.success(request, 'Permission added successfully.')
|
||||
return redirect('list-project-permission', project.name)
|
||||
name = request.POST.get('grantee_name')
|
||||
if not name:
|
||||
if perm:
|
||||
name = perm.grantee.__str__()
|
||||
else:
|
||||
name = ''
|
||||
return render(request, 'permissions/project_perm_edit.html', {
|
||||
'project': project,
|
||||
'perm': perm,
|
||||
'form': form,
|
||||
'name': name,
|
||||
})
|
||||
|
||||
|
||||
@project_perm_required('manage_project_permission')
|
||||
def project_perm_delete(request, project, id):
|
||||
perm = get_object_or_404(ProjectPermission, project=project, id=id)
|
||||
perm.delete()
|
||||
messages.success(request, 'Permission deleted successfully.')
|
||||
return redirect('list-project-permission', project.name)
|
||||
|
||||
|
||||
@project_perm_required('manage_project_permission')
|
||||
def project_perm_toggle(request, project, id, perm):
|
||||
permission = get_object_or_404(ProjectPermission, project=project, id=id)
|
||||
# to be sure to dont modify other attribut with the following trick
|
||||
if '-' not in perm:
|
||||
raise Http404
|
||||
perm = perm.replace('-', '_')
|
||||
if hasattr(permission, perm):
|
||||
state = not getattr(permission, perm)
|
||||
setattr(permission, perm, state)
|
||||
permission.save()
|
||||
return HttpResponse('1' if state else '0')
|
||||
else:
|
||||
raise Http404
|
Loading…
Add table
Add a link
Reference in a new issue