Cleaned up files, removed ununsed imports

This commit is contained in:
Roberto Rosario
2011-05-20 00:54:11 -04:00
parent 17c749a80a
commit 4a4afbf06a
22 changed files with 74 additions and 128 deletions

View File

@@ -1,5 +1,4 @@
from django import forms from django import forms
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.db import models from django.db import models
@@ -77,7 +76,7 @@ class FilterForm(forms.Form):
self.fields[list_filter['name']] = forms.ModelChoiceField( self.fields[list_filter['name']] = forms.ModelChoiceField(
queryset=list_filter['queryset'], queryset=list_filter['queryset'],
label=label[0].upper() + label[1:], required=False) label=label[0].upper() + label[1:], required=False)
class ChoiceForm(forms.Form): class ChoiceForm(forms.Form):
""" """

View File

@@ -317,7 +317,7 @@ def parse_range(astr):
x = part.split(u'-') x = part.split(u'-')
result.update(range(int(x[0]), int(x[-1]) + 1)) result.update(range(int(x[0]), int(x[-1]) + 1))
return sorted(result) return sorted(result)
def generate_choices_w_labels(choices, display_object_type=True): def generate_choices_w_labels(choices, display_object_type=True):
results = [] results = []

View File

@@ -1,13 +1,11 @@
from django.shortcuts import redirect from django.shortcuts import redirect
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.contrib import messages
from django.http import HttpResponseRedirect 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.template import RequestContext
from django.contrib import messages from django.contrib import messages
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from common.utils import generate_choices_w_labels
from common.forms import ChoiceForm from common.forms import ChoiceForm
@@ -44,12 +42,12 @@ def get_obj_from_content_type_string(string):
model, pk = string.split(u',') model, pk = string.split(u',')
ct = ContentType.objects.get(model=model) ct = ContentType.objects.get(model=model)
return ct.get_object_for_this_type(pk=pk) 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): 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' left_list_name = u'left_list'
right_list_name = u'right_list' right_list_name = u'right_list'
if request.method == 'POST': if request.method == 'POST':
if u'%s-submit' % left_list_name in request.POST.keys(): if u'%s-submit' % left_list_name in request.POST.keys():
unselected_list = ChoiceForm(request.POST, 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, 'title': left_list_title,
'submit_label': _(u'Add'), 'submit_label': _(u'Add'),
} }
}, },
{ {
'name':'generic_form_subtemplate.html', 'name':'generic_form_subtemplate.html',
'grid': 6, 'grid': 6,
@@ -121,13 +119,13 @@ def assign_remove(request, left_list, right_list, add_method, remove_method, lef
'object': obj 'object': obj
} }
) )
if object_name: if object_name:
context.update( context.update(
{ {
'object_name': object_name, 'object_name': object_name,
} }
) )
return render_to_response('generic_form.html', context, return render_to_response('generic_form.html', context,
context_instance=RequestContext(request)) context_instance=RequestContext(request))

View File

@@ -298,13 +298,13 @@ class DocumentCreateWizard(BoundFormWizard):
self.initial = {2: initial_data} self.initial = {2: initial_data}
if not initial_data: if not initial_data:
# If there is no metadata selected end wizard # If there is no metadata selected end wizard
self.form_list=[DocumentTypeSelectForm, MetadataSelectionForm] self.form_list = [DocumentTypeSelectForm, MetadataSelectionForm]
if isinstance(form, MetadataFormSet): if isinstance(form, MetadataFormSet):
for identifier, metadata in enumerate(form.cleaned_data): for identifier, metadata in enumerate(form.cleaned_data):
self.query_dict['metadata%s_id' % identifier] = metadata['id'] self.query_dict['metadata%s_id' % identifier] = metadata['id']
self.query_dict['metadata%s_value' % identifier] = metadata['value'] self.query_dict['metadata%s_value' % identifier] = metadata['value']
def get_template(self, step): def get_template(self, step):
return 'generic_wizard.html' return 'generic_wizard.html'
@@ -313,10 +313,10 @@ class DocumentCreateWizard(BoundFormWizard):
view = 'upload_document_multiple' view = 'upload_document_multiple'
else: else:
view = 'upload_document' view = 'upload_document'
if self.document_type: if self.document_type:
self.query_dict['document_type_id'] = self.document_type.pk self.query_dict['document_type_id'] = self.document_type.pk
url = urlquote(reverse(view), self.query_dict) url = urlquote(reverse(view), self.query_dict)
return HttpResponseRedirect(url) return HttpResponseRedirect(url)

View File

@@ -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"))] #[(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 { return {
'title': _(u'Document statistics'), 'title': _(u'Document statistics'),
'paragraphs': paragraphs 'paragraphs': paragraphs

View File

@@ -105,7 +105,7 @@ def document_create_sibling(request, document_id, multiple=True):
if document.document_type_id: if document.document_type_id:
query_dict['document_type_id'] = document.document_type_id query_dict['document_type_id'] = document.document_type_id
url = reverse(view) url = reverse(view)
return HttpResponseRedirect('%s?%s' % (url, urlencode(query_dict))) return HttpResponseRedirect('%s?%s' % (url, urlencode(query_dict)))
@@ -126,7 +126,7 @@ def _handle_save_document(request, document, form=None):
warnings = update_indexes(document) warnings = update_indexes(document)
if request.user.is_staff or request.user.is_superuser: if request.user.is_staff or request.user.is_superuser:
for warning in warnings: for warning in warnings:
messages.warning(request, warning) messages.warning(request, warning)
def _handle_zip_file(request, uploaded_file, document_type): 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): def upload_document_with_type(request, multiple=True):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_CREATE]) check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_CREATE])
document_type_id = request.GET.get('document_type_id', None) document_type_id = request.GET.get('document_type_id', None)
if document_type_id: if document_type_id:
document_type = get_object_or_404(DocumentType, pk=document_type_id) document_type = get_object_or_404(DocumentType, pk=document_type_id)
else: else:
document_type = None document_type = None
local_form = DocumentForm(prefix='local', initial={'document_type': document_type}) local_form = DocumentForm(prefix='local', initial={'document_type': document_type})
if USE_STAGING_DIRECTORY: if USE_STAGING_DIRECTORY:
staging_form = StagingDocumentForm(prefix='staging', staging_form = StagingDocumentForm(prefix='staging',
@@ -240,10 +240,10 @@ def upload_document_with_type(request, multiple=True):
'hide_link': True, 'hide_link': True,
} }
}, },
) )
else: else:
subtemplates_list.append(local_upload_form) subtemplates_list.append(local_upload_form)
context = { context = {
'document_type_id': document_type_id, 'document_type_id': document_type_id,
'subtemplates_list': subtemplates_list, 'subtemplates_list': subtemplates_list,
@@ -280,7 +280,7 @@ def document_view_simple(request, document_id):
'form': preview_form, 'form': preview_form,
'object': document, 'object': document,
} }
}, },
) )
subtemplates_list.append( subtemplates_list.append(
{ {
@@ -851,7 +851,7 @@ def document_page_view(request, document_page_id):
'object': document_page, 'object': document_page,
'web_theme_hide_menus': True, 'web_theme_hide_menus': True,
'form': document_page_form, 'form': document_page_form,
'title': _(u'details for: %s') % document_page, 'title': _(u'details for: %s') % document_page,
}, context_instance=RequestContext(request)) }, context_instance=RequestContext(request))

View File

@@ -1,23 +1,11 @@
from django.utils.translation import ugettext_lazy as _ 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, \ from navigation.api import register_links
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 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.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_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_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]}} 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') register_links(['document_group_view'], [document_group_back_to_document, document_group_create_sibling], menu_name='sidebar')

View File

@@ -1,27 +1,12 @@
from django import forms from django import forms
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext 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.core.urlresolvers import reverse
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.forms.formsets import formset_factory
from django.template.defaultfilters import capfirst from django.template.defaultfilters import capfirst
from django.conf import settings from django.conf import settings
from tags.widgets import get_tags_inline_widget 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): class DocumentGroupImageWidget(forms.widgets.Widget):

View File

@@ -2,7 +2,6 @@ from django.db import models
from django.db.models import Q from django.db.models import Q
from metadata.classes import MetadataObject from metadata.classes import MetadataObject
from metadata.models import DocumentMetadata
from documents.models import Document from documents.models import Document
from grouping.literals import INCLUSION_AND, INCLUSION_OR from grouping.literals import INCLUSION_AND, INCLUSION_OR
@@ -18,7 +17,7 @@ class DocumentGroupManager(models.Manager):
eval_dict = {} eval_dict = {}
eval_dict['document'] = document eval_dict['document'] = document
eval_dict['metadata'] = MetadataObject(metadata_dict) eval_dict['metadata'] = MetadataObject(metadata_dict)
if group_obj: if group_obj:
groups_qs = self.model.objects.filter(Q(enabled=True) & Q(pk=group_obj.pk)) groups_qs = self.model.objects.filter(Q(enabled=True) & Q(pk=group_obj.pk))
else: else:
@@ -39,7 +38,7 @@ class DocumentGroupManager(models.Manager):
total_query &= query total_query &= query
elif item.inclusion == INCLUSION_OR: elif item.inclusion == INCLUSION_OR:
total_query |= query total_query |= query
elif cls == u'document': elif cls == u'document':
value_query = Q(**{ value_query = Q(**{
'%s__%s' % (attribute, item.operator): eval(item.expression, eval_dict) '%s__%s' % (attribute, item.operator): eval(item.expression, eval_dict)
@@ -51,8 +50,8 @@ class DocumentGroupManager(models.Manager):
if item.inclusion == INCLUSION_AND: if item.inclusion == INCLUSION_AND:
total_query &= query total_query &= query
elif item.inclusion == INCLUSION_OR: elif item.inclusion == INCLUSION_OR:
total_query |= query total_query |= query
except Exception, e: except Exception, e:
errors.append(e) errors.append(e)
value_query = Q() value_query = Q()
@@ -66,7 +65,7 @@ class DocumentGroupManager(models.Manager):
errors.append(e) errors.append(e)
else: else:
document_groups[group] = {'documents': []} document_groups[group] = {'documents': []}
if group.dynamic_title: if group.dynamic_title:
try: try:
document_groups[group]['title'] = eval(group.dynamic_title, eval_dict) 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 document_groups[group]['title'] = 'Error; %s' % e
else: else:
document_groups[group]['title'] = group.title document_groups[group]['title'] = group.title
if group_obj: if group_obj:
# Return a single group if documents even if there were # Return a single group if documents even if there were
# many matches # many matches

View File

@@ -1,8 +1,6 @@
from django.db import models from django.db import models
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from documents.models import Document
from grouping.managers import DocumentGroupManager from grouping.managers import DocumentGroupManager
from grouping.literals import OPERATOR_CHOICES, INCLUSION_AND, \ from grouping.literals import OPERATOR_CHOICES, INCLUSION_AND, \
INCLUSION_CHOICES 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.')) 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>`.')) 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) 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.')) #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`.')) 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.')) negated = models.BooleanField(default=False, verbose_name=_(u'negated'), help_text=_(u'Inverts the logic of the operator.'))

View File

@@ -6,7 +6,6 @@ from django.template import RequestContext
from documents.literals import PERMISSION_DOCUMENT_VIEW from documents.literals import PERMISSION_DOCUMENT_VIEW
from documents.models import Document from documents.models import Document
from documents.views import document_list
from permissions.api import check_permissions from permissions.api import check_permissions
from grouping.models import DocumentGroup from grouping.models import DocumentGroup

View File

@@ -1,10 +1,7 @@
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from navigation.api import register_links, register_menu, \ from navigation.api import register_links, register_multi_item_links
register_model_list_columns, register_multi_item_links
from main.api import register_diagnostic, register_tool
from permissions.api import register_permissions from permissions.api import register_permissions
from documents.models import Document from documents.models import Document
PERMISSION_METADATA_DOCUMENT_EDIT = u'metadata_document_edit' PERMISSION_METADATA_DOCUMENT_EDIT = u'metadata_document_edit'

View File

@@ -3,7 +3,6 @@
from urllib import unquote_plus from urllib import unquote_plus
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from django.utils.translation import ugettext_lazy as _
from metadata.models import DocumentMetadata, MetadataType from metadata.models import DocumentMetadata, MetadataType
@@ -39,21 +38,6 @@ def save_metadata_list(metadata_list, document, create=False):
for item in metadata_list: for item in metadata_list:
save_metadata(item, document, create) 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): def save_metadata(metadata_dict, document, create=False):
"""save metadata_dict""" """save metadata_dict"""

View File

@@ -4,9 +4,9 @@ from django.forms.formsets import formset_factory
from metadata.conf.settings import AVAILABLE_MODELS from metadata.conf.settings import AVAILABLE_MODELS
from metadata.conf.settings import AVAILABLE_FUNCTIONS from metadata.conf.settings import AVAILABLE_FUNCTIONS
from metadata.models import MetadataType, DocumentMetadata from metadata.models import MetadataType
class MetadataForm(forms.Form): class MetadataForm(forms.Form):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(MetadataForm, self).__init__(*args, **kwargs) super(MetadataForm, self).__init__(*args, **kwargs)
@@ -63,5 +63,5 @@ class AddMetadataForm(forms.Form):
class MetadataRemoveForm(MetadataForm): class MetadataRemoveForm(MetadataForm):
update = forms.BooleanField(initial=False, label=_(u'Remove'), required=False) update = forms.BooleanField(initial=False, label=_(u'Remove'), required=False)
MetadataRemoveFormSet = formset_factory(MetadataRemoveForm, extra=0) MetadataRemoveFormSet = formset_factory(MetadataRemoveForm, extra=0)

View File

@@ -25,7 +25,7 @@ def metadata_edit(request, document_id=None, document_id_list=None):
documents = [get_object_or_404(Document, pk=document_id)] documents = [get_object_or_404(Document, pk=document_id)]
if documents[0].documentmetadata_set.count() == 0: if documents[0].documentmetadata_set.count() == 0:
messages.warning(request, _(u'The selected document doesn\'t have any metadata.')) 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: elif document_id_list:
documents = [get_object_or_404(Document, pk=document_id) for document_id in document_id_list.split(',')] documents = [get_object_or_404(Document, pk=document_id) for document_id in document_id_list.split(',')]
else: else:
@@ -60,8 +60,8 @@ def metadata_edit(request, document_id=None, document_id_list=None):
warnings = delete_indexes(document) warnings = delete_indexes(document)
if request.user.is_staff or request.user.is_superuser: if request.user.is_staff or request.user.is_superuser:
for warning in warnings: 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 = [] errors = []
for form in formset.forms: for form in formset.forms:
if form.cleaned_data['update']: if form.cleaned_data['update']:
@@ -80,7 +80,7 @@ def metadata_edit(request, document_id=None, document_id_list=None):
warnings = update_indexes(document) warnings = update_indexes(document)
if warnings and (request.user.is_staff or request.user.is_superuser): if warnings and (request.user.is_staff or request.user.is_superuser):
for warning in warnings: 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: else:
messages.success(request, _(u'Document indexes updated successfully.')) 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.')) messages.error(request, _(u'Must provide at least one document.'))
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/')) return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
metadata = {}
for document in documents: for document in documents:
RecentDocument.objects.add_document_for_user(request.user, document) 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: else:
form = AddMetadataForm() form = AddMetadataForm()
context = { context = {
#'form_display_mode_table': True, #'form_display_mode_table': True,
'form': form, 'form': form,
@@ -169,7 +168,7 @@ def metadata_remove(request, document_id=None, document_id_list=None):
if documents[0].documentmetadata_set.count() == 0: if documents[0].documentmetadata_set.count() == 0:
messages.warning(request, _(u'The selected document doesn\'t have any metadata.')) 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: elif document_id_list:
documents = [get_object_or_404(Document, pk=document_id) for document_id in document_id_list.split(',')] documents = [get_object_or_404(Document, pk=document_id) for document_id in document_id_list.split(',')]
else: else:
@@ -204,8 +203,8 @@ def metadata_remove(request, document_id=None, document_id_list=None):
warnings = delete_indexes(document) warnings = delete_indexes(document)
if request.user.is_staff or request.user.is_superuser: if request.user.is_staff or request.user.is_superuser:
for warning in warnings: 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: for form in formset.forms:
if form.cleaned_data['update']: if form.cleaned_data['update']:
metadata_type = get_object_or_404(MetadataType, pk=form.cleaned_data['id']) 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) warnings = update_indexes(document)
if warnings and (request.user.is_staff or request.user.is_superuser): if warnings and (request.user.is_staff or request.user.is_superuser):
for warning in warnings: 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: else:
messages.success(request, _(u'Document indexes updated successfully.')) 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()) return HttpResponseRedirect(document.get_absolute_url())
elif len(documents) > 1: elif len(documents) > 1:
return HttpResponseRedirect(reverse('document_list_recent')) return HttpResponseRedirect(reverse('document_list_recent'))
context = { context = {
'form_display_mode_table': True, 'form_display_mode_table': True,
'form': formset, 'form': formset,

View File

@@ -28,7 +28,7 @@ if CACHE_URI:
cache_backend = get_cache(CACHE_URI) cache_backend = get_cache(CACHE_URI)
except ImportError: except ImportError:
# TODO: display or log error # TODO: display or log error
cache_backend = None cache_backend = None
else: else:
cache_backend = None cache_backend = None
@@ -95,7 +95,7 @@ def task_process_document_queues():
# reset_orphans() # reset_orphans()
# Causes problems with big clusters increased latency # Causes problems with big clusters increased latency
# Disabled until better solution # Disabled until better solution
q_pending = Q(state=QUEUEDOCUMENT_STATE_PENDING) q_pending = Q(state=QUEUEDOCUMENT_STATE_PENDING)
q_delayed = Q(delay=True) q_delayed = Q(delay=True)
q_delay_interval = Q(datetime_submitted__lt=datetime.now() - timedelta(seconds=REPLICATION_DELAY)) q_delay_interval = Q(datetime_submitted__lt=datetime.now() - timedelta(seconds=REPLICATION_DELAY))

View File

@@ -26,10 +26,10 @@ class Permission(models.Model):
def __unicode__(self): def __unicode__(self):
return self.label return self.label
def get_holders(self): def get_holders(self):
return [holder.holder_object for holder in self.permissionholder_set.all()] return [holder.holder_object for holder in self.permissionholder_set.all()]
def has_permission(self, requester): def has_permission(self, requester):
if isinstance(requester, User): if isinstance(requester, User):
if requester.is_superuser or requester.is_staff: if requester.is_superuser or requester.is_staff:
@@ -38,8 +38,8 @@ class Permission(models.Model):
# Request is one of the permission's holders? # Request is one of the permission's holders?
if requester in self.get_holders(): if requester in self.get_holders():
return True 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? # the permission's holder?
roles = RoleMember.objects.get_roles_for_member(requester) roles = RoleMember.objects.get_roles_for_member(requester)
@@ -47,7 +47,7 @@ class Permission(models.Model):
groups = requester.groups.all() groups = requester.groups.all()
else: else:
groups = [] groups = []
for membership in list(set(roles) | set(groups)): for membership in list(set(roles) | set(groups)):
if self.has_permission(membership): if self.has_permission(membership):
return True return True

View File

@@ -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) new_member, created = RoleMember.objects.get_or_create(role=role, member_type=ct, member_id=pk)
if not created: if not created:
raise Exception raise Exception
def remove_role_member(role, selection): def remove_role_member(role, selection):
model, pk = selection.split(u',') model, pk = selection.split(u',')
ct = ContentType.objects.get(model=model) ct = ContentType.objects.get(model=model)
member = RoleMember.objects.get(role=role, member_type=ct, member_id=pk) member = RoleMember.objects.get(role=role, member_type=ct, member_id=pk)
member.delete() member.delete()
def role_members(request, role_id): def role_members(request, role_id):
check_permissions(request.user, 'permissions', [PERMISSION_ROLE_EDIT]) check_permissions(request.user, 'permissions', [PERMISSION_ROLE_EDIT])
role = get_object_or_404(Role, pk=role_id) role = get_object_or_404(Role, pk=role_id)
return assign_remove( return assign_remove(
request, request,
left_list=lambda: generate_choices_w_labels(get_non_role_members(role)), left_list=lambda: generate_choices_w_labels(get_non_role_members(role)),

View File

@@ -7,11 +7,11 @@ settings = {}
def register_setting(namespace, module, name, global_name, default, exists=False, description=u'', hidden=False): def register_setting(namespace, module, name, global_name, default, exists=False, description=u'', hidden=False):
# Create namespace if it doesn't exists # Create namespace if it doesn't exists
settings.setdefault(namespace, []) settings.setdefault(namespace, [])
# If passed a string and not a module, import it # If passed a string and not a module, import it
if isinstance(module, basestring): if isinstance(module, basestring):
module = import_module(module) module = import_module(module)
setting = { setting = {
'module': module, 'module': module,
'name': name, 'name': name,
@@ -21,14 +21,14 @@ def register_setting(namespace, module, name, global_name, default, exists=False
'default': default, 'default': default,
'hidden': hidden, 'hidden': hidden,
} }
# Avoid multiple appends # Avoid multiple appends
if setting not in settings[namespace]: if setting not in settings[namespace]:
settings[namespace].append(setting) settings[namespace].append(setting)
# Get the global value # Get the global value
value = getattr(django_settings, global_name, default) value = getattr(django_settings, global_name, default)
# Create the local entity # Create the local entity
setattr(module, name, value) setattr(module, name, value)
return value return value

View File

@@ -24,7 +24,7 @@ register_permissions('user_management', [
{'name': PERMISSION_GROUP_CREATE, 'label': _(u'Create new groups')}, {'name': PERMISSION_GROUP_CREATE, 'label': _(u'Create new groups')},
{'name': PERMISSION_GROUP_EDIT, 'label': _(u'Edit existing groups')}, {'name': PERMISSION_GROUP_EDIT, 'label': _(u'Edit existing groups')},
{'name': PERMISSION_GROUP_VIEW, 'label': _(u'View 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]}} 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]}} 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, [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_multi_item_links(['user_list'], [user_multiple_set_password, user_multiple_delete])
register_links(Group, [group_edit, group_members, group_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]) register_multi_item_links(['group_list'], [group_multiple_delete])

View File

@@ -8,7 +8,7 @@ urlpatterns = patterns('user_management.views',
url(r'^user/multiple/delete/$', 'user_multiple_delete', (), 'user_multiple_delete'), 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/(?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'^user/multiple/set_password/$', 'user_multiple_set_password', (), 'user_multiple_set_password'),
url(r'^group/list/$', 'group_list', (), 'group_list'), url(r'^group/list/$', 'group_list', (), 'group_list'),
url(r'^group/add/$', 'group_add', (), 'group_add'), url(r'^group/add/$', 'group_add', (), 'group_add'),
url(r'^group/(?P<group_id>\d+)/edit/$', 'group_edit', (), 'group_edit'), url(r'^group/(?P<group_id>\d+)/edit/$', 'group_edit', (), 'group_edit'),

View File

@@ -6,7 +6,6 @@ from django.contrib import messages
from django.views.generic.list_detail import object_list from django.views.generic.list_detail import object_list
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.contrib.auth.models import User, Group from django.contrib.auth.models import User, Group
from django.contrib.contenttypes.models import ContentType
from permissions.api import check_permissions from permissions.api import check_permissions
from common.utils import generate_choices_w_labels, two_state_template from common.utils import generate_choices_w_labels, two_state_template
@@ -38,7 +37,8 @@ def user_list(request):
{ {
'name': _(u'email'), 'name': _(u'email'),
'attribute': 'email' 'attribute': 'email'
}, { },
{
'name': _(u'active'), 'name': _(u'active'),
'attribute': lambda x: two_state_template(x.is_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: 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.')) 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', '/')) return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
if request.method == 'POST': if request.method == 'POST':
form = UserForm(instance=user, data=request.POST) form = UserForm(instance=user, data=request.POST)
if form.is_valid(): if form.is_valid():
@@ -145,8 +145,8 @@ def user_multiple_delete(request):
return user_delete( return user_delete(
request, user_id_list=request.GET.get('id_list', []) request, user_id_list=request.GET.get('id_list', [])
) )
def user_set_password(request, user_id=None, user_id_list=None): def user_set_password(request, user_id=None, user_id_list=None):
check_permissions(request.user, 'user_management', [PERMISSION_USER_EDIT]) check_permissions(request.user, 'user_management', [PERMISSION_USER_EDIT])
post_action_redirect = None post_action_redirect = None
@@ -181,7 +181,7 @@ def user_set_password(request, user_id=None, user_id_list=None):
except Exception, e: except Exception, e:
messages.error(request, _(u'Error reseting password for user "%(user)s": %(error)s') % { messages.error(request, _(u'Error reseting password for user "%(user)s": %(error)s') % {
'user': user, 'error': e 'user': user, 'error': e
}) })
return HttpResponseRedirect(next) return HttpResponseRedirect(next)
else: 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]) context['title'] = _(u'Reseting password for user: %s') % ', '.join([unicode(d) for d in users])
elif len(users) > 1: elif len(users) > 1:
context['title'] = _(u'Reseting password for users: %s') % ', '.join([unicode(d) for d in users]) context['title'] = _(u'Reseting password for users: %s') % ', '.join([unicode(d) for d in users])
return render_to_response('generic_form.html', context, return render_to_response('generic_form.html', context,
context_instance=RequestContext(request)) context_instance=RequestContext(request))
@@ -207,7 +207,7 @@ def user_multiple_set_password(request):
return user_set_password( return user_set_password(
request, user_id_list=request.GET.get('id_list', []) request, user_id_list=request.GET.get('id_list', [])
) )
def group_list(request): def group_list(request):
check_permissions(request.user, 'user_management', [PERMISSION_GROUP_VIEW]) check_permissions(request.user, 'user_management', [PERMISSION_GROUP_VIEW])
@@ -319,7 +319,7 @@ def group_multiple_delete(request):
return group_delete( return group_delete(
request, group_id_list=request.GET.get('id_list', []) request, group_id_list=request.GET.get('id_list', [])
) )
def get_group_members(group): def get_group_members(group):
return group.user_set.all() return group.user_set.all()
@@ -332,12 +332,12 @@ def get_non_group_members(group):
def group_members(request, group_id): def group_members(request, group_id):
check_permissions(request.user, 'user_management', [PERMISSION_GROUP_EDIT]) check_permissions(request.user, 'user_management', [PERMISSION_GROUP_EDIT])
group = get_object_or_404(Group, pk=group_id) group = get_object_or_404(Group, pk=group_id)
return assign_remove( return assign_remove(
request, request,
left_list=lambda: generate_choices_w_labels(get_non_group_members(group), display_object_type=False), 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), 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), remove_method=lambda x: group.user_set.remove(x),
left_list_title=_(u'non members of group: %s') % group, left_list_title=_(u'non members of group: %s') % group,
right_list_title=_(u'members of group: %s') % group, right_list_title=_(u'members of group: %s') % group,