Initial commit of permissions views

This commit is contained in:
Roberto Rosario
2011-02-14 20:48:53 -04:00
parent f66cb4392a
commit 93f74df2df
8 changed files with 193 additions and 13 deletions

View File

@@ -6,7 +6,7 @@
{% block javascript %} {% block javascript %}
<script type="text/javascript"> <script type="text/javascript">
$(function() { $(function() {
$("#subform form :input").each(function() { $(".generic_subform form :input").each(function() {
this.disabled = true; this.disabled = true;
}); });
}); });
@@ -15,7 +15,9 @@
{% block sidebar %} {% block sidebar %}
{% for subtemplate in sidebar_subtemplates %} {% for subtemplate in sidebar_subtemplates %}
<div class="generic_subform">
{% include subtemplate %} {% include subtemplate %}
</div>
{% endfor %} {% endfor %}
{% for subtemplate in sidebar_subtemplates_dict %} {% for subtemplate in sidebar_subtemplates_dict %}
@@ -57,8 +59,10 @@
{% if form %} {% if form %}
{% with "true" as read_only %} {% with "true" as read_only %}
<div class="grid_{{ grid|default:11 }}"> <div class="grid_{{ grid|default:11 }}">
<div class="generic_subform">
{% include "generic_form_subtemplate.html" %} {% include "generic_form_subtemplate.html" %}
</div> </div>
</div>
{% if grid_clear or not grid %} {% if grid_clear or not grid %}
<div class="clear"></div> <div class="clear"></div>
{% endif %} {% endif %}
@@ -79,7 +83,9 @@
{% with "true" as read_only %} {% with "true" as read_only %}
<div class="grid_{{ form.grid|default:11 }}"> <div class="grid_{{ form.grid|default:11 }}">
{% with form.form as form %} {% with form.form as form %}
<div class="generic_subform">
{% include "generic_form_subtemplate.html" %} {% include "generic_form_subtemplate.html" %}
</div>
{% endwith %} {% endwith %}
</div> </div>
{% if form.grid_clear or not form.grid %} {% if form.grid_clear or not form.grid %}
@@ -105,9 +111,7 @@
{% with subtemplate.hide_link as hide_link %} {% with subtemplate.hide_link as hide_link %}
{% with subtemplate.hide_header as hide_header %} {% with subtemplate.hide_header as hide_header %}
<div class="grid_{{ subtemplate.grid|default:11 }}"> <div class="grid_{{ subtemplate.grid|default:11 }}">
{% include subtemplate.name %} {% include subtemplate.name %}
</div> </div>
{% if subtemplate.grid_clear or not subtemplate.grid %} {% if subtemplate.grid_clear or not subtemplate.grid %}
<div class="clear"></div> <div class="clear"></div>

View File

@@ -2,6 +2,9 @@ from django.utils.translation import ugettext_lazy as _
from common.api import register_menu from common.api import register_menu
from permissions import role_list
check_settings = {'text':_(u'settings'), 'view':'check_settings', 'famfam':'cog'} check_settings = {'text':_(u'settings'), 'view':'check_settings', 'famfam':'cog'}
@@ -9,6 +12,7 @@ register_menu([
{'text':_(u'home'), 'view':'home', 'famfam':'house', 'position':0}, {'text':_(u'home'), 'view':'home', 'famfam':'house', 'position':0},
{'text':_(u'setup'), 'view':'check_settings', 'links': [ {'text':_(u'setup'), 'view':'check_settings', 'links': [
check_settings, role_list
],'famfam':'cog', 'name':'setup','position':7}, ],'famfam':'cog', 'name':'setup','position':7},
{'text':_(u'about'), 'view':'about', 'position':8}, {'text':_(u'about'), 'view':'about', 'position':8},

View File

@@ -1,11 +1,24 @@
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.db.models.signals import post_save from django.db.models.signals import post_save
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.utils.translation import ugettext_lazy as _
from common.api import register_links, register_menu, \
register_model_list_columns
from permissions.conf.settings import DEFAULT_ROLES from permissions.conf.settings import DEFAULT_ROLES
from models import Role from models import Role
role_list = {'text':_(u'roles'), 'view':'role_list', 'famfam':'medal_gold_1'}#, 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_VIEW]}}
role_view = {'text':_(u'role details'), 'view':'role_view', 'args':'object.id', 'famfam':'medal_gold_1'}#, 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_VIEW]}}
role_create = {'text':_(u'create new role'), 'view':'role_create', 'famfam':'medal_gold_add'}#, 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_VIEW]}}
role_delete = {'text':_(u'delete'), 'view':'role_delete', 'args':'object.id', 'famfam':'medal_gold_delete'}#, 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_VIEW]}}
register_links(Role, [role_view], menu_name='sidebar')
register_links(Role, [role_delete])
register_links(['role_list', 'role_view', 'role_create', 'role_delete'], [role_create], menu_name='sidebar')
def user_post_save(sender, instance, **kwargs): def user_post_save(sender, instance, **kwargs):
for default_role in DEFAULT_ROLES: for default_role in DEFAULT_ROLES:

24
apps/permissions/forms.py Normal file
View File

@@ -0,0 +1,24 @@
from django import forms
from django.utils.translation import ugettext_lazy as _
#from django.http import HttpResponseRedirect
#from django.utils.http import urlencode
#from django.core.urlresolvers import reverse
#from django.utils.safestring import mark_safe
#from django.forms.formsets import formset_factory
#from common.wizard import BoundFormWizard
#from common.utils import urlquote
from common.forms import DetailForm
from models import Role
class RoleForm(forms.ModelForm):
class Meta:
model = Role
class RoleForm_view(DetailForm):
class Meta:
model = Role

View File

@@ -53,6 +53,10 @@ class Role(models.Model):
def __unicode__(self): def __unicode__(self):
return self.label return self.label
@models.permalink
def get_absolute_url(self):
return ('role_view', [self.id])
class RoleMember(models.Model): class RoleMember(models.Model):
role = models.ForeignKey(Role, verbose_name=_(u'role')) role = models.ForeignKey(Role, verbose_name=_(u'role'))

23
apps/permissions/urls.py Normal file
View File

@@ -0,0 +1,23 @@
from django.conf.urls.defaults import *
#from django.utils.translation import ugettext_lazy as _
#from django.views.generic.create_update import create_object, update_object
urlpatterns = patterns('permissions.views',
url(r'^role/list/$', 'role_list', (), 'role_list'),
url(r'^role/(?P<role_id>\d+)/$', 'role_view', (), 'role_view'),
url(r'^role/create/$', 'role_create', (), 'role_create'),
url(r'^role/(?P<role_id>\d+)/delete/$', 'role_delete', (), 'role_delete'),
# url(r'^document/create/from/local/single/$', 'document_create', {'multiple':False}, 'document_create'),
# url(r'^document/create/from/local/multiple/$', 'document_create', {'multiple':True}, 'document_create_multiple'),
# url(r'^document/type/(?P<document_type_id>\d+)/upload/single/$', 'upload_document_with_type', {'multiple':False}, 'upload_document_with_type'),
# url(r'^document/type/(?P<document_type_id>\d+)/upload/multiple/$', 'upload_document_with_type', {'multiple':True}, 'upload_multiple_documents_with_type'),
# url(r'^document/(?P<document_id>\d+)/edit/$', 'document_edit', (), 'document_edit'),
# url(r'^document/(?P<document_id>\d+)/edit/metadata/$', 'document_edit_metadata', (), 'document_edit_metadata'),
# url(r'^document/(?P<document_id>\d+)/display/preview/$', 'get_document_image', {'size':PREVIEW_SIZE}, 'document_preview'),
# url(r'^document/(?P<document_id>\d+)/display/preview/multipage/$', 'get_document_image', {'size':MULTIPAGE_PREVIEW_SIZE}, 'document_preview_multipage'),
# url(r'^document/(?P<document_id>\d+)/display/thumbnail/$', 'get_document_image', {'size':THUMBNAIL_SIZE}, 'document_thumbnail'),
# url(r'^document/(?P<document_id>\d+)/display/$', 'get_document_image', {'size':DISPLAY_SIZE,'quality':QUALITY_HIGH}, 'document_display'),
# url(r'^document/(?P<document_id>\d+)/download/$', 'document_download', (), 'document_download'),
# url(r'^document/(?P<document_id>\d+)/create/siblings/$', 'document_create_sibling', {'multiple':False}, 'document_create_sibling'),
)

View File

@@ -1 +1,108 @@
# Create your views here. from django.utils.translation import ugettext as _
from django.http import HttpResponse, HttpResponseRedirect, Http404
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.template import RequestContext
from django.contrib import messages
from django.views.generic.list_detail import object_detail, object_list
from django.core.urlresolvers import reverse
from django.views.generic.create_update import create_object, delete_object, update_object
from django.conf import settings
from models import Role
from forms import RoleForm_view
def role_list(request):
#permissions = [PERMISSION_ROLE_VIEW]
#try:
# check_permissions(request.user, 'permissions', permissions)
#except Unauthorized, e:
# raise Http404(e)
return object_list(
request,
queryset=Role.objects.all(),
template_name='generic_list.html',
extra_context={
'title':_(u'roles'),
},
)
def role_view(request, role_id):
#permissions = [PERMISSION_ROLE_VIEW]
#try:
# check_permissions(request.user, 'permissions', permissions)
#except Unauthorized, e:
# raise Http404(e)
role = get_object_or_404(Role, pk=role_id)
form = RoleForm_view(instance=role)#, extra_fields=[
# {'label':_(u'Filename'), 'field':'file_filename'},
# {'label':_(u'File extension'), 'field':'file_extension'},
# {'label':_(u'File mimetype'), 'field':'file_mimetype'},
# {'label':_(u'File mime encoding'), 'field':'file_mime_encoding'},
# {'label':_(u'File size'), 'field':lambda x: pretty_size(x.file.storage.size(x.file.path)) if x.exists() else '-'},
# {'label':_(u'Exists in storage'), 'field':'exists'},
# {'label':_(u'Date added'), 'field':lambda x: x.date_added.date()},
# {'label':_(u'Time added'), 'field':lambda x: unicode(x.date_added.time()).split('.')[0]},
# {'label':_(u'Checksum'), 'field':'checksum'},
# {'label':_(u'UUID'), 'field':'uuid'},
# {'label':_(u'Pages'), 'field':lambda x: x.documentpage_set.count()},
#])
#subtemplates_dict = [
# {
# 'name':'generic_list_subtemplate.html',
# 'title':_(u'metadata'),
# 'object_list':document.documentmetadata_set.all(),
# 'extra_columns':[{'name':_(u'value'), 'attribute':'value'}],
# 'hide_link':True,
# },
# ]
#if FILESYSTEM_FILESERVING_ENABLE:
# subtemplates_dict.append({
# 'name':'generic_list_subtemplate.html',
# 'title':_(u'index links'),
# 'object_list':document.documentmetadataindex_set.all(),
# 'hide_link':True})
return render_to_response('generic_detail.html', {
#'form_list':[{'form':form, 'object':role}],
'form':form,
'object':role,
#'object':role,
#'subtemplates_dict':subtemplates_dict,
#'sidebar_subtemplates_dict':sidebar_groups,
}, context_instance=RequestContext(request))
def role_create(request):
#permissions = [PERMISSION_ROLE_CREATE]
#try:
# check_permissions(request.user, 'permissions', permissions)
#except Unauthorized, e:
# raise Http404(e)
#TODO: post_create redirect
return create_object(request, model=Role, template_name='generic_form.html')
def role_delete(request, role_id):
# permissions = [PERMISSION_DOCUMENT_DELETE]
# try:
# check_permissions(request.user, 'documents', permissions)
# except Unauthorized, e:
# raise Http404(e)
#
#role = get_object_or_404(Role, pk=role_id)
return delete_object(request, model=Role, object_id=role_id,
template_name='generic_confirm.html',
post_delete_redirect=reverse('role_list'),
extra_context={
'delete_view':True,
#'object':document,
'object_name':_(u'role'),
})

View File

@@ -10,6 +10,7 @@ urlpatterns = patterns('',
(r'^documents/', include('documents.urls')), (r'^documents/', include('documents.urls')),
(r'^search/', include('dynamic_search.urls')), (r'^search/', include('dynamic_search.urls')),
(r'^ocr/', include('ocr.urls')), (r'^ocr/', include('ocr.urls')),
(r'^permissions/', include('permissions.urls')),
(r'^admin/doc/', include('django.contrib.admindocs.urls')), (r'^admin/doc/', include('django.contrib.admindocs.urls')),
(r'^admin/', include(admin.site.urls)), (r'^admin/', include(admin.site.urls)),
(r'^grappelli/', include('grappelli.urls')), (r'^grappelli/', include('grappelli.urls')),