Cleaned up files, removed ununsed imports
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
from django import forms
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.db import models
|
||||
|
||||
@@ -77,7 +76,7 @@ class FilterForm(forms.Form):
|
||||
self.fields[list_filter['name']] = forms.ModelChoiceField(
|
||||
queryset=list_filter['queryset'],
|
||||
label=label[0].upper() + label[1:], required=False)
|
||||
|
||||
|
||||
|
||||
class ChoiceForm(forms.Form):
|
||||
"""
|
||||
|
||||
@@ -317,7 +317,7 @@ def parse_range(astr):
|
||||
x = part.split(u'-')
|
||||
result.update(range(int(x[0]), int(x[-1]) + 1))
|
||||
return sorted(result)
|
||||
|
||||
|
||||
|
||||
def generate_choices_w_labels(choices, display_object_type=True):
|
||||
results = []
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
from django.shortcuts import redirect
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.contrib import messages
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
from django.shortcuts import render_to_response
|
||||
from django.template import RequestContext
|
||||
from django.contrib import messages
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
from common.utils import generate_choices_w_labels
|
||||
from common.forms import ChoiceForm
|
||||
|
||||
|
||||
@@ -44,12 +42,12 @@ def get_obj_from_content_type_string(string):
|
||||
model, pk = string.split(u',')
|
||||
ct = ContentType.objects.get(model=model)
|
||||
return ct.get_object_for_this_type(pk=pk)
|
||||
|
||||
|
||||
|
||||
def assign_remove(request, left_list, right_list, add_method, remove_method, left_list_title, right_list_title, obj=None, object_name=None, decode_content_type=False):
|
||||
left_list_name = u'left_list'
|
||||
right_list_name = u'right_list'
|
||||
|
||||
|
||||
if request.method == 'POST':
|
||||
if u'%s-submit' % left_list_name in request.POST.keys():
|
||||
unselected_list = ChoiceForm(request.POST,
|
||||
@@ -101,7 +99,7 @@ def assign_remove(request, left_list, right_list, add_method, remove_method, lef
|
||||
'title': left_list_title,
|
||||
'submit_label': _(u'Add'),
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
'name':'generic_form_subtemplate.html',
|
||||
'grid': 6,
|
||||
@@ -121,13 +119,13 @@ def assign_remove(request, left_list, right_list, add_method, remove_method, lef
|
||||
'object': obj
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
if object_name:
|
||||
context.update(
|
||||
{
|
||||
'object_name': object_name,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
return render_to_response('generic_form.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
@@ -298,13 +298,13 @@ class DocumentCreateWizard(BoundFormWizard):
|
||||
self.initial = {2: initial_data}
|
||||
if not initial_data:
|
||||
# If there is no metadata selected end wizard
|
||||
self.form_list=[DocumentTypeSelectForm, MetadataSelectionForm]
|
||||
self.form_list = [DocumentTypeSelectForm, MetadataSelectionForm]
|
||||
|
||||
if isinstance(form, MetadataFormSet):
|
||||
for identifier, metadata in enumerate(form.cleaned_data):
|
||||
self.query_dict['metadata%s_id' % identifier] = metadata['id']
|
||||
self.query_dict['metadata%s_value' % identifier] = metadata['value']
|
||||
|
||||
|
||||
def get_template(self, step):
|
||||
return 'generic_wizard.html'
|
||||
|
||||
@@ -313,10 +313,10 @@ class DocumentCreateWizard(BoundFormWizard):
|
||||
view = 'upload_document_multiple'
|
||||
else:
|
||||
view = 'upload_document'
|
||||
|
||||
|
||||
if self.document_type:
|
||||
self.query_dict['document_type_id'] = self.document_type.pk
|
||||
|
||||
|
||||
url = urlquote(reverse(view), self.query_dict)
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ def get_statistics():
|
||||
]
|
||||
)
|
||||
#[(day_count['date_added'].strftime('%Y-%m-%d'), day_count['id__count']) for day_count in Document.objects.values('date_added').annotate(Count("id"))]
|
||||
|
||||
|
||||
return {
|
||||
'title': _(u'Document statistics'),
|
||||
'paragraphs': paragraphs
|
||||
|
||||
@@ -105,7 +105,7 @@ def document_create_sibling(request, document_id, multiple=True):
|
||||
|
||||
if document.document_type_id:
|
||||
query_dict['document_type_id'] = document.document_type_id
|
||||
|
||||
|
||||
url = reverse(view)
|
||||
return HttpResponseRedirect('%s?%s' % (url, urlencode(query_dict)))
|
||||
|
||||
@@ -126,7 +126,7 @@ def _handle_save_document(request, document, form=None):
|
||||
warnings = update_indexes(document)
|
||||
if request.user.is_staff or request.user.is_superuser:
|
||||
for warning in warnings:
|
||||
messages.warning(request, warning)
|
||||
messages.warning(request, warning)
|
||||
|
||||
|
||||
def _handle_zip_file(request, uploaded_file, document_type):
|
||||
@@ -150,13 +150,13 @@ def _handle_zip_file(request, uploaded_file, document_type):
|
||||
|
||||
def upload_document_with_type(request, multiple=True):
|
||||
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_CREATE])
|
||||
|
||||
|
||||
document_type_id = request.GET.get('document_type_id', None)
|
||||
if document_type_id:
|
||||
document_type = get_object_or_404(DocumentType, pk=document_type_id)
|
||||
else:
|
||||
document_type = None
|
||||
|
||||
|
||||
local_form = DocumentForm(prefix='local', initial={'document_type': document_type})
|
||||
if USE_STAGING_DIRECTORY:
|
||||
staging_form = StagingDocumentForm(prefix='staging',
|
||||
@@ -240,10 +240,10 @@ def upload_document_with_type(request, multiple=True):
|
||||
'hide_link': True,
|
||||
}
|
||||
},
|
||||
)
|
||||
)
|
||||
else:
|
||||
subtemplates_list.append(local_upload_form)
|
||||
|
||||
|
||||
context = {
|
||||
'document_type_id': document_type_id,
|
||||
'subtemplates_list': subtemplates_list,
|
||||
@@ -280,7 +280,7 @@ def document_view_simple(request, document_id):
|
||||
'form': preview_form,
|
||||
'object': document,
|
||||
}
|
||||
},
|
||||
},
|
||||
)
|
||||
subtemplates_list.append(
|
||||
{
|
||||
@@ -851,7 +851,7 @@ def document_page_view(request, document_page_id):
|
||||
'object': document_page,
|
||||
'web_theme_hide_menus': True,
|
||||
'form': document_page_form,
|
||||
'title': _(u'details for: %s') % document_page,
|
||||
'title': _(u'details for: %s') % document_page,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
|
||||
@@ -1,23 +1,11 @@
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
#from django.core.urlresolvers import reverse
|
||||
#from django.conf import settings
|
||||
|
||||
from navigation.api import register_links, register_menu, \
|
||||
register_model_list_columns, register_multi_item_links
|
||||
from main.api import register_diagnostic, register_tool
|
||||
from permissions.api import register_permissions
|
||||
from tags.widgets import get_tags_inline_widget_simple
|
||||
from navigation.api import register_links
|
||||
|
||||
#from documents.models import Document, DocumentPage, DocumentPageTransformation
|
||||
#from documents.staging import StagingFile
|
||||
#from documents.conf.settings import ENABLE_SINGLE_DOCUMENT_UPLOAD
|
||||
from documents.literals import PERMISSION_DOCUMENT_CREATE, PERMISSION_DOCUMENT_VIEW
|
||||
#from documents import document_multiple_clear_transformations
|
||||
|
||||
document_group_link = {'text': _(u'group actions'), 'view': 'document_group_view', 'famfam': 'page_go', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}}
|
||||
document_group_back_to_document = {'text': _(u'return to document'), 'view': 'document_view_simple', 'args': 'ref_object.id', 'famfam': 'page', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_VIEW]}}
|
||||
document_group_create_sibling = {'text': _(u'upload new document using same metadata'), 'view': 'document_create_sibling', 'args': 'ref_object.id', 'famfam': 'page_copy', 'permissions': {'namespace': 'documents', 'permissions': [PERMISSION_DOCUMENT_CREATE]}}
|
||||
|
||||
#register_multi_item_links(['document_group_view'], [document_multiple_clear_transformations, document_multiple_delete])
|
||||
|
||||
register_links(['document_group_view'], [document_group_back_to_document, document_group_create_sibling], menu_name='sidebar')
|
||||
|
||||
@@ -1,27 +1,12 @@
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import ugettext
|
||||
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 django.template.defaultfilters import capfirst
|
||||
from django.conf import settings
|
||||
|
||||
from tags.widgets import get_tags_inline_widget
|
||||
#from common.wizard import BoundFormWizard
|
||||
#from common.forms import DetailForm
|
||||
#from common.literals import PAGE_SIZE_CHOICES, PAGE_ORIENTATION_CHOICES
|
||||
#from common.conf.settings import DEFAULT_PAPER_SIZE
|
||||
#from common.conf.settings import DEFAULT_PAGE_ORIENTATION
|
||||
#from common.utils import urlquote
|
||||
#from metadata.models import MetadataSet, MetadataType
|
||||
#from metadata.forms import MetadataFormSet
|
||||
|
||||
#from documents.staging import StagingFile
|
||||
#from documents.models import Document, DocumentType, \
|
||||
# DocumentPage, DocumentPageTransformation
|
||||
|
||||
|
||||
class DocumentGroupImageWidget(forms.widgets.Widget):
|
||||
|
||||
@@ -2,7 +2,6 @@ from django.db import models
|
||||
from django.db.models import Q
|
||||
|
||||
from metadata.classes import MetadataObject
|
||||
from metadata.models import DocumentMetadata
|
||||
from documents.models import Document
|
||||
|
||||
from grouping.literals import INCLUSION_AND, INCLUSION_OR
|
||||
@@ -18,7 +17,7 @@ class DocumentGroupManager(models.Manager):
|
||||
eval_dict = {}
|
||||
eval_dict['document'] = document
|
||||
eval_dict['metadata'] = MetadataObject(metadata_dict)
|
||||
|
||||
|
||||
if group_obj:
|
||||
groups_qs = self.model.objects.filter(Q(enabled=True) & Q(pk=group_obj.pk))
|
||||
else:
|
||||
@@ -39,7 +38,7 @@ class DocumentGroupManager(models.Manager):
|
||||
total_query &= query
|
||||
elif item.inclusion == INCLUSION_OR:
|
||||
total_query |= query
|
||||
|
||||
|
||||
elif cls == u'document':
|
||||
value_query = Q(**{
|
||||
'%s__%s' % (attribute, item.operator): eval(item.expression, eval_dict)
|
||||
@@ -51,8 +50,8 @@ class DocumentGroupManager(models.Manager):
|
||||
if item.inclusion == INCLUSION_AND:
|
||||
total_query &= query
|
||||
elif item.inclusion == INCLUSION_OR:
|
||||
total_query |= query
|
||||
|
||||
total_query |= query
|
||||
|
||||
except Exception, e:
|
||||
errors.append(e)
|
||||
value_query = Q()
|
||||
@@ -66,7 +65,7 @@ class DocumentGroupManager(models.Manager):
|
||||
errors.append(e)
|
||||
else:
|
||||
document_groups[group] = {'documents': []}
|
||||
|
||||
|
||||
if group.dynamic_title:
|
||||
try:
|
||||
document_groups[group]['title'] = eval(group.dynamic_title, eval_dict)
|
||||
@@ -74,7 +73,7 @@ class DocumentGroupManager(models.Manager):
|
||||
document_groups[group]['title'] = 'Error; %s' % e
|
||||
else:
|
||||
document_groups[group]['title'] = group.title
|
||||
|
||||
|
||||
if group_obj:
|
||||
# Return a single group if documents even if there were
|
||||
# many matches
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from documents.models import Document
|
||||
|
||||
from grouping.managers import DocumentGroupManager
|
||||
from grouping.literals import OPERATOR_CHOICES, INCLUSION_AND, \
|
||||
INCLUSION_CHOICES
|
||||
@@ -28,7 +26,7 @@ class DocumentGroupItem(models.Model):
|
||||
inclusion = models.CharField(default=INCLUSION_AND, max_length=16, choices=INCLUSION_CHOICES, help_text=_(u'The inclusion is ignored for the first item.'))
|
||||
foreign_document_data = models.CharField(max_length=32, verbose_name=_(u'foreign document data'), help_text=_(u'This represents the metadata of all other documents. Available objects: `document.<attribute>` and `metadata.<metadata_type_name>`.'))
|
||||
operator = models.CharField(max_length=16, choices=OPERATOR_CHOICES)
|
||||
|
||||
|
||||
#local_document_data = models.ForeignKey(MetadataType, related_name='metadata_type_local', verbose_name=_(u'local metadata'), help_text=_(u'This represents the metadata of the current document.'))
|
||||
expression = models.TextField(verbose_name=_(u'expression'), help_text=_(u'This expression will be evaluated against the current selected document. The document metadata is available as variables `metadata` and document properties under the variable `document`.'))
|
||||
negated = models.BooleanField(default=False, verbose_name=_(u'negated'), help_text=_(u'Inverts the logic of the operator.'))
|
||||
|
||||
@@ -6,7 +6,6 @@ from django.template import RequestContext
|
||||
|
||||
from documents.literals import PERMISSION_DOCUMENT_VIEW
|
||||
from documents.models import Document
|
||||
from documents.views import document_list
|
||||
from permissions.api import check_permissions
|
||||
|
||||
from grouping.models import DocumentGroup
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from navigation.api import register_links, register_menu, \
|
||||
register_model_list_columns, register_multi_item_links
|
||||
from main.api import register_diagnostic, register_tool
|
||||
from navigation.api import register_links, register_multi_item_links
|
||||
from permissions.api import register_permissions
|
||||
|
||||
from documents.models import Document
|
||||
|
||||
PERMISSION_METADATA_DOCUMENT_EDIT = u'metadata_document_edit'
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
from urllib import unquote_plus
|
||||
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from metadata.models import DocumentMetadata, MetadataType
|
||||
|
||||
@@ -39,21 +38,6 @@ def save_metadata_list(metadata_list, document, create=False):
|
||||
for item in metadata_list:
|
||||
save_metadata(item, document, create)
|
||||
|
||||
#if item['value']:
|
||||
# save_metadata(item, document)
|
||||
#else:
|
||||
# #If there is no metadata value, delete the metadata entry
|
||||
# #completely from the document
|
||||
# try:
|
||||
# metadata_type = MetadataType.objects.get(id=item['id'])
|
||||
# document_metadata = DocumentMetadata.objects.get(
|
||||
# document=document,
|
||||
# metadata_type=metadata_type
|
||||
# )
|
||||
# document_metadata.delete()
|
||||
# except ObjectDoesNotExist:
|
||||
# pass
|
||||
|
||||
|
||||
def save_metadata(metadata_dict, document, create=False):
|
||||
"""save metadata_dict"""
|
||||
|
||||
@@ -4,9 +4,9 @@ from django.forms.formsets import formset_factory
|
||||
|
||||
from metadata.conf.settings import AVAILABLE_MODELS
|
||||
from metadata.conf.settings import AVAILABLE_FUNCTIONS
|
||||
from metadata.models import MetadataType, DocumentMetadata
|
||||
from metadata.models import MetadataType
|
||||
|
||||
|
||||
|
||||
class MetadataForm(forms.Form):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(MetadataForm, self).__init__(*args, **kwargs)
|
||||
@@ -63,5 +63,5 @@ class AddMetadataForm(forms.Form):
|
||||
|
||||
class MetadataRemoveForm(MetadataForm):
|
||||
update = forms.BooleanField(initial=False, label=_(u'Remove'), required=False)
|
||||
|
||||
|
||||
MetadataRemoveFormSet = formset_factory(MetadataRemoveForm, extra=0)
|
||||
|
||||
@@ -25,7 +25,7 @@ def metadata_edit(request, document_id=None, document_id_list=None):
|
||||
documents = [get_object_or_404(Document, pk=document_id)]
|
||||
if documents[0].documentmetadata_set.count() == 0:
|
||||
messages.warning(request, _(u'The selected document doesn\'t have any metadata.'))
|
||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
|
||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
|
||||
elif document_id_list:
|
||||
documents = [get_object_or_404(Document, pk=document_id) for document_id in document_id_list.split(',')]
|
||||
else:
|
||||
@@ -60,8 +60,8 @@ def metadata_edit(request, document_id=None, document_id_list=None):
|
||||
warnings = delete_indexes(document)
|
||||
if request.user.is_staff or request.user.is_superuser:
|
||||
for warning in warnings:
|
||||
messages.warning(request, _(u'Error deleting document indexes; %s') % warning)
|
||||
|
||||
messages.warning(request, _(u'Error deleting document indexes; %s') % warning)
|
||||
|
||||
errors = []
|
||||
for form in formset.forms:
|
||||
if form.cleaned_data['update']:
|
||||
@@ -80,7 +80,7 @@ def metadata_edit(request, document_id=None, document_id_list=None):
|
||||
warnings = update_indexes(document)
|
||||
if warnings and (request.user.is_staff or request.user.is_superuser):
|
||||
for warning in warnings:
|
||||
messages.warning(request, _(u'Error updating document indexes; %s') % warning)
|
||||
messages.warning(request, _(u'Error updating document indexes; %s') % warning)
|
||||
else:
|
||||
messages.success(request, _(u'Document indexes updated successfully.'))
|
||||
|
||||
@@ -118,7 +118,6 @@ def metadata_add(request, document_id=None, document_id_list=None):
|
||||
messages.error(request, _(u'Must provide at least one document.'))
|
||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
|
||||
|
||||
metadata = {}
|
||||
for document in documents:
|
||||
RecentDocument.objects.add_document_for_user(request.user, document)
|
||||
|
||||
@@ -142,7 +141,7 @@ def metadata_add(request, document_id=None, document_id_list=None):
|
||||
|
||||
else:
|
||||
form = AddMetadataForm()
|
||||
|
||||
|
||||
context = {
|
||||
#'form_display_mode_table': True,
|
||||
'form': form,
|
||||
@@ -169,7 +168,7 @@ def metadata_remove(request, document_id=None, document_id_list=None):
|
||||
if documents[0].documentmetadata_set.count() == 0:
|
||||
messages.warning(request, _(u'The selected document doesn\'t have any metadata.'))
|
||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
|
||||
|
||||
|
||||
elif document_id_list:
|
||||
documents = [get_object_or_404(Document, pk=document_id) for document_id in document_id_list.split(',')]
|
||||
else:
|
||||
@@ -204,8 +203,8 @@ def metadata_remove(request, document_id=None, document_id_list=None):
|
||||
warnings = delete_indexes(document)
|
||||
if request.user.is_staff or request.user.is_superuser:
|
||||
for warning in warnings:
|
||||
messages.warning(request, _(u'Error deleting document indexes; %s') % warning)
|
||||
|
||||
messages.warning(request, _(u'Error deleting document indexes; %s') % warning)
|
||||
|
||||
for form in formset.forms:
|
||||
if form.cleaned_data['update']:
|
||||
metadata_type = get_object_or_404(MetadataType, pk=form.cleaned_data['id'])
|
||||
@@ -221,7 +220,7 @@ def metadata_remove(request, document_id=None, document_id_list=None):
|
||||
warnings = update_indexes(document)
|
||||
if warnings and (request.user.is_staff or request.user.is_superuser):
|
||||
for warning in warnings:
|
||||
messages.warning(request, _(u'Error updating document indexes; %s') % warning)
|
||||
messages.warning(request, _(u'Error updating document indexes; %s') % warning)
|
||||
else:
|
||||
messages.success(request, _(u'Document indexes updated successfully.'))
|
||||
|
||||
@@ -229,7 +228,7 @@ def metadata_remove(request, document_id=None, document_id_list=None):
|
||||
return HttpResponseRedirect(document.get_absolute_url())
|
||||
elif len(documents) > 1:
|
||||
return HttpResponseRedirect(reverse('document_list_recent'))
|
||||
|
||||
|
||||
context = {
|
||||
'form_display_mode_table': True,
|
||||
'form': formset,
|
||||
|
||||
@@ -28,7 +28,7 @@ if CACHE_URI:
|
||||
cache_backend = get_cache(CACHE_URI)
|
||||
except ImportError:
|
||||
# TODO: display or log error
|
||||
cache_backend = None
|
||||
cache_backend = None
|
||||
else:
|
||||
cache_backend = None
|
||||
|
||||
@@ -95,7 +95,7 @@ def task_process_document_queues():
|
||||
|
||||
# reset_orphans()
|
||||
# Causes problems with big clusters increased latency
|
||||
# Disabled until better solution
|
||||
# Disabled until better solution
|
||||
q_pending = Q(state=QUEUEDOCUMENT_STATE_PENDING)
|
||||
q_delayed = Q(delay=True)
|
||||
q_delay_interval = Q(datetime_submitted__lt=datetime.now() - timedelta(seconds=REPLICATION_DELAY))
|
||||
|
||||
@@ -26,10 +26,10 @@ class Permission(models.Model):
|
||||
|
||||
def __unicode__(self):
|
||||
return self.label
|
||||
|
||||
|
||||
def get_holders(self):
|
||||
return [holder.holder_object for holder in self.permissionholder_set.all()]
|
||||
|
||||
|
||||
def has_permission(self, requester):
|
||||
if isinstance(requester, User):
|
||||
if requester.is_superuser or requester.is_staff:
|
||||
@@ -38,8 +38,8 @@ class Permission(models.Model):
|
||||
# Request is one of the permission's holders?
|
||||
if requester in self.get_holders():
|
||||
return True
|
||||
|
||||
# If not check if the requesters memberships objects is one of
|
||||
|
||||
# If not check if the requesters memberships objects is one of
|
||||
# the permission's holder?
|
||||
roles = RoleMember.objects.get_roles_for_member(requester)
|
||||
|
||||
@@ -47,7 +47,7 @@ class Permission(models.Model):
|
||||
groups = requester.groups.all()
|
||||
else:
|
||||
groups = []
|
||||
|
||||
|
||||
for membership in list(set(roles) | set(groups)):
|
||||
if self.has_permission(membership):
|
||||
return True
|
||||
|
||||
@@ -191,19 +191,19 @@ def add_role_member(role, selection):
|
||||
new_member, created = RoleMember.objects.get_or_create(role=role, member_type=ct, member_id=pk)
|
||||
if not created:
|
||||
raise Exception
|
||||
|
||||
|
||||
|
||||
|
||||
def remove_role_member(role, selection):
|
||||
model, pk = selection.split(u',')
|
||||
ct = ContentType.objects.get(model=model)
|
||||
member = RoleMember.objects.get(role=role, member_type=ct, member_id=pk)
|
||||
member.delete()
|
||||
|
||||
|
||||
|
||||
def role_members(request, role_id):
|
||||
check_permissions(request.user, 'permissions', [PERMISSION_ROLE_EDIT])
|
||||
role = get_object_or_404(Role, pk=role_id)
|
||||
|
||||
|
||||
return assign_remove(
|
||||
request,
|
||||
left_list=lambda: generate_choices_w_labels(get_non_role_members(role)),
|
||||
|
||||
@@ -7,11 +7,11 @@ settings = {}
|
||||
def register_setting(namespace, module, name, global_name, default, exists=False, description=u'', hidden=False):
|
||||
# Create namespace if it doesn't exists
|
||||
settings.setdefault(namespace, [])
|
||||
|
||||
|
||||
# If passed a string and not a module, import it
|
||||
if isinstance(module, basestring):
|
||||
module = import_module(module)
|
||||
|
||||
|
||||
setting = {
|
||||
'module': module,
|
||||
'name': name,
|
||||
@@ -21,14 +21,14 @@ def register_setting(namespace, module, name, global_name, default, exists=False
|
||||
'default': default,
|
||||
'hidden': hidden,
|
||||
}
|
||||
|
||||
|
||||
# Avoid multiple appends
|
||||
if setting not in settings[namespace]:
|
||||
settings[namespace].append(setting)
|
||||
|
||||
|
||||
# Get the global value
|
||||
value = getattr(django_settings, global_name, default)
|
||||
|
||||
|
||||
# Create the local entity
|
||||
setattr(module, name, value)
|
||||
return value
|
||||
|
||||
@@ -24,7 +24,7 @@ register_permissions('user_management', [
|
||||
{'name': PERMISSION_GROUP_CREATE, 'label': _(u'Create new groups')},
|
||||
{'name': PERMISSION_GROUP_EDIT, 'label': _(u'Edit existing groups')},
|
||||
{'name': PERMISSION_GROUP_VIEW, 'label': _(u'View existing groups')},
|
||||
{'name': PERMISSION_GROUP_DELETE, 'label': _(u'Delete existing groups')},
|
||||
{'name': PERMISSION_GROUP_DELETE, 'label': _(u'Delete existing groups')},
|
||||
])
|
||||
|
||||
user_list = {'text': _(u'user list'), 'view': 'user_list', 'famfam': 'user', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_USER_VIEW]}}
|
||||
@@ -43,9 +43,9 @@ group_multiple_delete = {u'text': _('delete'), 'view': 'group_multiple_delete',
|
||||
group_members = {'text': _(u'members'), 'view': 'group_members', 'args': 'object.id', 'famfam': 'group_link', 'permissions': {'namespace': 'user_management', 'permissions': [PERMISSION_GROUP_EDIT]}}
|
||||
|
||||
register_links(User, [user_edit, user_set_password, user_delete])
|
||||
register_links(['user_multiple_set_password', 'user_set_password', 'user_multiple_delete', 'user_delete', 'user_edit', 'user_list','user_add'], [user_add, user_list], menu_name=u'sidebar')
|
||||
register_links(['user_multiple_set_password', 'user_set_password', 'user_multiple_delete', 'user_delete', 'user_edit', 'user_list', 'user_add'], [user_add, user_list], menu_name=u'sidebar')
|
||||
register_multi_item_links(['user_list'], [user_multiple_set_password, user_multiple_delete])
|
||||
|
||||
register_links(Group, [group_edit, group_members, group_delete])
|
||||
register_links(['group_multiple_delete', 'group_delete', 'group_edit', 'group_list','group_add', 'group_members'], [group_add, group_list], menu_name=u'sidebar')
|
||||
register_links(['group_multiple_delete', 'group_delete', 'group_edit', 'group_list', 'group_add', 'group_members'], [group_add, group_list], menu_name=u'sidebar')
|
||||
register_multi_item_links(['group_list'], [group_multiple_delete])
|
||||
|
||||
@@ -8,7 +8,7 @@ urlpatterns = patterns('user_management.views',
|
||||
url(r'^user/multiple/delete/$', 'user_multiple_delete', (), 'user_multiple_delete'),
|
||||
url(r'^user/(?P<user_id>\d+)/set_password/$', 'user_set_password', (), 'user_set_password'),
|
||||
url(r'^user/multiple/set_password/$', 'user_multiple_set_password', (), 'user_multiple_set_password'),
|
||||
|
||||
|
||||
url(r'^group/list/$', 'group_list', (), 'group_list'),
|
||||
url(r'^group/add/$', 'group_add', (), 'group_add'),
|
||||
url(r'^group/(?P<group_id>\d+)/edit/$', 'group_edit', (), 'group_edit'),
|
||||
|
||||
@@ -6,7 +6,6 @@ from django.contrib import messages
|
||||
from django.views.generic.list_detail import object_list
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.contrib.auth.models import User, Group
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
from permissions.api import check_permissions
|
||||
from common.utils import generate_choices_w_labels, two_state_template
|
||||
@@ -38,7 +37,8 @@ def user_list(request):
|
||||
{
|
||||
'name': _(u'email'),
|
||||
'attribute': 'email'
|
||||
}, {
|
||||
},
|
||||
{
|
||||
'name': _(u'active'),
|
||||
'attribute': lambda x: two_state_template(x.is_active),
|
||||
}
|
||||
@@ -56,7 +56,7 @@ def user_edit(request, user_id):
|
||||
if user.is_superuser or user.is_staff:
|
||||
messages.error(request, _(u'Super user and staff user editing is not allowed, use the admin interface for these cases.'))
|
||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
|
||||
|
||||
|
||||
if request.method == 'POST':
|
||||
form = UserForm(instance=user, data=request.POST)
|
||||
if form.is_valid():
|
||||
@@ -145,8 +145,8 @@ def user_multiple_delete(request):
|
||||
return user_delete(
|
||||
request, user_id_list=request.GET.get('id_list', [])
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
def user_set_password(request, user_id=None, user_id_list=None):
|
||||
check_permissions(request.user, 'user_management', [PERMISSION_USER_EDIT])
|
||||
post_action_redirect = None
|
||||
@@ -181,7 +181,7 @@ def user_set_password(request, user_id=None, user_id_list=None):
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error reseting password for user "%(user)s": %(error)s') % {
|
||||
'user': user, 'error': e
|
||||
})
|
||||
})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
else:
|
||||
@@ -198,7 +198,7 @@ def user_set_password(request, user_id=None, user_id_list=None):
|
||||
context['title'] = _(u'Reseting password for user: %s') % ', '.join([unicode(d) for d in users])
|
||||
elif len(users) > 1:
|
||||
context['title'] = _(u'Reseting password for users: %s') % ', '.join([unicode(d) for d in users])
|
||||
|
||||
|
||||
return render_to_response('generic_form.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
@@ -207,7 +207,7 @@ def user_multiple_set_password(request):
|
||||
return user_set_password(
|
||||
request, user_id_list=request.GET.get('id_list', [])
|
||||
)
|
||||
|
||||
|
||||
|
||||
def group_list(request):
|
||||
check_permissions(request.user, 'user_management', [PERMISSION_GROUP_VIEW])
|
||||
@@ -319,7 +319,7 @@ def group_multiple_delete(request):
|
||||
return group_delete(
|
||||
request, group_id_list=request.GET.get('id_list', [])
|
||||
)
|
||||
|
||||
|
||||
|
||||
def get_group_members(group):
|
||||
return group.user_set.all()
|
||||
@@ -332,12 +332,12 @@ def get_non_group_members(group):
|
||||
def group_members(request, group_id):
|
||||
check_permissions(request.user, 'user_management', [PERMISSION_GROUP_EDIT])
|
||||
group = get_object_or_404(Group, pk=group_id)
|
||||
|
||||
|
||||
return assign_remove(
|
||||
request,
|
||||
left_list=lambda: generate_choices_w_labels(get_non_group_members(group), display_object_type=False),
|
||||
right_list=lambda: generate_choices_w_labels(get_group_members(group), display_object_type=False),
|
||||
add_method=lambda x: group.user_set.add(x),
|
||||
add_method=lambda x: group.user_set.add(x),
|
||||
remove_method=lambda x: group.user_set.remove(x),
|
||||
left_list_title=_(u'non members of group: %s') % group,
|
||||
right_list_title=_(u'members of group: %s') % group,
|
||||
|
||||
Reference in New Issue
Block a user