PEP8 cleanups

This commit is contained in:
Roberto Rosario
2012-01-18 14:37:15 -04:00
parent ad59734460
commit 970cb74d35
62 changed files with 365 additions and 379 deletions

View File

@@ -7,7 +7,7 @@ from project_setup.api import register_setup
from .classes import (AccessHolder, AccessObjectClass, ClassAccessHolder,
AccessObject)
from .permissions import (ACLS_EDIT_ACL, ACLS_VIEW_ACL,
from .permissions import (ACLS_EDIT_ACL, ACLS_VIEW_ACL,
ACLS_CLASS_EDIT_ACL, ACLS_CLASS_VIEW_ACL)

View File

@@ -1,8 +1,6 @@
from __future__ import absolute_import
from django.contrib import admin
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType
from .models import AccessEntry
@@ -21,5 +19,5 @@ class AccessEntryAdmin(admin.ModelAdmin):
list_display = ('pk', 'holder_object', 'permission', 'content_object')
list_display_links = ('pk',)
model = AccessEntry
admin.site.register(AccessEntry, AccessEntryAdmin)

View File

@@ -12,13 +12,13 @@ from django.core.exceptions import ObjectDoesNotExist
from common.models import AnonymousUserSingleton
logger = logging.getLogger(__name__)
_cache = {}
class EncapsulatedObject(object):
source_object_name = u'source_object'
@classmethod
def object_key(cls, app_label=None, model=None, pk=None):
if pk:
@@ -36,7 +36,7 @@ class EncapsulatedObject(object):
@classmethod
def set_source_object_name(cls, new_name):
cls.source_object_name = new_name
#@classmethod
#def encapsulate_list(cls, source_object=None, app_label=None, model=None, pk=None):
@@ -44,7 +44,7 @@ class EncapsulatedObject(object):
def encapsulate(cls, source_object):
source_object = AnonymousUserSingleton.objects.passthru_check(source_object)
content_type = ContentType.objects.get_for_model(source_object)
if hasattr(source_object, 'pk'):
# Object
object_key = cls.object_key(content_type.app_label, content_type.model, source_object.pk)
@@ -67,9 +67,9 @@ class EncapsulatedObject(object):
elif len(elements) == 2:
app_label, model = elements[0], elements[1]
pk = None
object_key = cls.object_key(*elements)
try:
return _cache[object_key]
except KeyError:
@@ -90,9 +90,9 @@ class EncapsulatedObject(object):
raise ObjectDoesNotExist("%s matching query does not exist." % source_object_model_class._meta.object_name)
else:
source_object = source_object_model_class
return cls.encapsulate(source_object)
def __init__(self, source_object):
self.content_type = ContentType.objects.get_for_model(source_object)
self.ct_fullname = '%s.%s' % (self.content_type.app_label, self.content_type.name)
@@ -101,15 +101,15 @@ class EncapsulatedObject(object):
# Class
self.gid = '%s.%s' % (self.content_type.app_label, self.content_type.model)
else:
# Object
# Object
self.gid = '%s.%s.%s' % (self.content_type.app_label, self.content_type.model, source_object.pk)
setattr(self, self.__class__.source_object_name, source_object)
def __unicode__(self):
if isinstance(self.source_object, ModelBase):
return capfirst(unicode(self.source_object._meta.verbose_name_plural))
elif self.ct_fullname == 'auth.user':
return u'%s %s' % (self.source_object._meta.verbose_name, self.source_object.get_full_name())
else:
@@ -117,19 +117,19 @@ class EncapsulatedObject(object):
def __repr__(self):
return self.__unicode__()
@property
def source_object(self):
return getattr(self, self.__class__.source_object_name, None)
class AccessHolder(EncapsulatedObject):
source_object_name = u'holder_object'
class AccessObject(EncapsulatedObject):
source_object_name = u'obj'
source_object_name = u'obj'
class AccessObjectClass(EncapsulatedObject):
source_object_name = u'cls'

View File

@@ -8,8 +8,10 @@ from django.utils.translation import ugettext
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import User
from django.core.exceptions import PermissionDenied
from django.core.urlresolvers import reverse
from common.models import AnonymousUserSingleton
from permissions.models import Permission
from .classes import EncapsulatedObject, AccessHolder, ClassAccessHolder
@@ -22,14 +24,14 @@ class AccessEntryManager(models.Manager):
return obj.source_object
else:
return obj
def grant(self, permission, actor, obj):
'''
Grant a permission (what), (to) an actor, (on) a specific object
'''
obj = self.source_object(obj)
actor = self.source_object(actor)
access_entry, created = self.model.objects.get_or_create(
permission=permission,
holder_type=ContentType.objects.get_for_model(actor),
@@ -42,7 +44,7 @@ class AccessEntryManager(models.Manager):
def revoke(self, permission, actor, obj):
'''
Revoke a permission (what), (from) an actor, (on) a specific object
'''
'''
obj = self.source_object(obj)
actor = self.source_object(actor)
@@ -57,12 +59,12 @@ class AccessEntryManager(models.Manager):
access_entry.delete()
return True
except self.model.DoesNotExist:
return False
return False
def has_access(self, permission, actor, obj):
obj = self.source_object(obj)
actor = self.source_object(actor)
if isinstance(actor, User):
if actor.is_superuser or actor.is_staff:
return True
@@ -80,7 +82,7 @@ class AccessEntryManager(models.Manager):
return True
except self.model.DoesNotExist:
return False
def check_access(self, permission, actor, obj):
obj = self.source_object(obj)
actor = self.source_object(actor)
@@ -89,7 +91,7 @@ class AccessEntryManager(models.Manager):
return True
else:
raise PermissionDenied(ugettext(u'Insufficient access.'))
def check_accesses(self, permission_list, actor, obj):
obj = self.source_object(obj)
actor = self.source_object(actor)
@@ -101,7 +103,7 @@ class AccessEntryManager(models.Manager):
def get_allowed_class_objects(self, permission, actor, cls, related=None):
logger.debug('related: %s' % related)
actor = AnonymousUserSingleton.objects.passthru_check(actor)
actor_type = ContentType.objects.get_for_model(actor)
content_type = ContentType.objects.get_for_model(cls)
@@ -122,22 +124,22 @@ class AccessEntryManager(models.Manager):
def get_new_holder_url(self, obj):
content_type = ContentType.objects.get_for_model(obj)
return reverse('acl_new_holder_for', args=[content_type.app_label, content_type.model, obj.pk])
def get_holders_for(self, obj):
content_type = ContentType.objects.get_for_model(obj)
holder_list = []
for access_entry in self.model.objects.filter(content_type=content_type, object_id=obj.pk):
entry = AccessHolder.encapsulate(access_entry.holder_object)
if entry not in holder_list:
holder_list.append(entry)
return holder_list
def get_holder_permissions_for(self, obj, actor):
logger.debug('obj: %s' % obj)
logger.debug('actor: %s' % actor)
if isinstance(actor, User):
if actor.is_superuser or actor.is_staff:
return Permission.objects.all()
@@ -149,11 +151,11 @@ class AccessEntryManager(models.Manager):
def filter_objects_by_access(self, permission, actor, object_list, exception_on_empty=False, related=None):
logger.debug('exception_on_empty: %s' % exception_on_empty)
logger.debug('object_list: %s' % object_list)
if isinstance(actor, User):
if actor.is_superuser or actor.is_staff:
return object_list
try:
if object_list.count() == 0:
return object_list
@@ -161,15 +163,15 @@ class AccessEntryManager(models.Manager):
# object_list is not a queryset
if len(object_list) == 0:
return object_list
try:
# Try to process as a QuerySet
qs = object_list.filter(pk__in=[obj.pk for obj in self.get_allowed_class_objects(permission, actor, object_list[0].__class__, related)])
logger.debug('qs: %s' % qs)
if qs.count() == 0 and exception_on_empty == True:
raise PermissionDenied
return qs
except AttributeError:
# Fallback to a filtered list
@@ -190,17 +192,17 @@ class DefaultAccessEntryManager(models.Manager):
holder_list = []
for access_entry in self.model.objects.filter(content_type=content_type):
entry = ClassAccessHolder.encapsulate(access_entry.holder_object)
if entry not in holder_list:
holder_list.append(entry)
return holder_list
def has_access(self, permission, actor, cls):
if isinstance(actor, User):
if actor.is_superuser or actor.is_staff:
return True
try:
access_entry = self.model.objects.get(
permission=permission.get_stored_permission(),
@@ -227,7 +229,7 @@ class DefaultAccessEntryManager(models.Manager):
def revoke(self, permission, actor, cls):
'''
Revoke a permission (what), (from) an actor, (on) a specific class
'''
'''
try:
access_entry = self.model.objects.get(
permission=permission,
@@ -238,13 +240,13 @@ class DefaultAccessEntryManager(models.Manager):
access_entry.delete()
return True
except self.model.DoesNotExist:
return False
return False
def get_holder_permissions_for(self, cls, actor):
if isinstance(actor, User):
if actor.is_superuser or actor.is_staff:
return Permission.objects.all()
actor_type = ContentType.objects.get_for_model(actor)
content_type = ContentType.objects.get_for_model(cls)
return [access.permission for access in self.model.objects.filter(content_type=content_type, holder_type=actor_type, holder_id=actor.pk)]

View File

@@ -18,7 +18,7 @@ from .api import get_classes
logger = logging.getLogger(__name__)
class AccessEntry(models.Model):
"""
Model that hold the permission, object, actor relationship
@@ -64,7 +64,7 @@ class DefaultAccessEntry(models.Model):
@classmethod
def get_classes(cls):
return [AccessObjectClass.encapsulate(cls) for cls in get_classes()]
permission = models.ForeignKey(StoredPermission, verbose_name=_(u'permission'))
holder_type = models.ForeignKey(

View File

@@ -3,7 +3,7 @@ import logging
from django.core.exceptions import PermissionDenied
from django.template import (TemplateSyntaxError, Library,
Node, Variable, VariableDoesNotExist)
from acls.models import AccessEntry
@@ -33,7 +33,7 @@ class CheckAccessNode(Node):
context[u'access'] = False
logger.debug('no obj, access False')
return u''
if not permission_list:
# There is no permissions list to check against which means
# this link is available for all

View File

@@ -5,13 +5,13 @@ urlpatterns = patterns('acls.views',
url(r'^list_for/(?P<app_label>[-\w]+)/(?P<model_name>[-\w]+)/(?P<object_id>\d+)/$', 'acl_list', (), 'acl_list'),
url(r'^details/(?P<access_object_gid>[.\w]+)/holder/(?P<holder_object_gid>[.\w]+)/$', 'acl_detail', (), 'acl_detail'),
url(r'^holder/new/(?P<access_object_gid>[.\w]+)/$', 'acl_holder_new', (), 'acl_holder_new'),
url(r'^multiple/grant/$', 'acl_grant', (), 'acl_multiple_grant'),
url(r'^multiple/revoke/$', 'acl_revoke', (), 'acl_multiple_revoke'),
url(r'^class/$', 'acl_setup_valid_classes', (), 'acl_setup_valid_classes'),
url(r'^class/details/(?P<access_object_class_gid>[.\w]+)/holder/(?P<holder_object_gid>[.\w]+)/$', 'acl_class_acl_detail', (), 'acl_class_acl_detail'),
url(r'^class/list_for/(?P<access_object_class_gid>[.\w]+)/$', 'acl_class_acl_list', (), 'acl_class_acl_list'),
url(r'^class/list_for/(?P<access_object_class_gid>[.\w]+)/$', 'acl_class_acl_list', (), 'acl_class_acl_list'),
url(r'^class/holder/new/(?P<access_object_class_gid>[.\w]+)/$', 'acl_class_new_holder_for', (), 'acl_class_new_holder_for'),
url(r'^class/multiple/grant/$', 'acl_class_multiple_grant', (), 'acl_class_multiple_grant'),

View File

@@ -22,7 +22,7 @@ from permissions.models import Permission, Role
from common.utils import generate_choices_w_labels, encapsulate
from common.widgets import two_state_template
from .permissions import (ACLS_EDIT_ACL, ACLS_VIEW_ACL,
from .permissions import (ACLS_EDIT_ACL, ACLS_VIEW_ACL,
ACLS_CLASS_EDIT_ACL, ACLS_CLASS_VIEW_ACL)
from .models import AccessEntry, DefaultAccessEntry
from .classes import (AccessHolder, AccessObject, AccessObjectClass,
@@ -36,8 +36,8 @@ logger = logging.getLogger(__name__)
def _permission_titles(permission_list):
return u', '.join([unicode(permission) for permission in permission_list])
def acl_list_for(request, obj, extra_context=None):
try:
Permission.objects.check_permissions(request.user, [ACLS_VIEW_ACL])
@@ -60,14 +60,14 @@ def acl_list_for(request, obj, extra_context=None):
'navigation_object_list': [
{'object': 'object'},
{'object': 'access_object'}
],
],
}
if extra_context:
context.update(extra_context)
return render_to_response('generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def acl_list(request, app_label, model_name, object_id):
@@ -90,10 +90,10 @@ def acl_detail_for(request, actor, obj):
try:
Permission.objects.check_permissions(request.user, [ACLS_VIEW_ACL])
except PermissionDenied:
AccessEntry.objects.check_accesses([ACLS_VIEW_ACL], actor, obj)
AccessEntry.objects.check_accesses([ACLS_VIEW_ACL], actor, obj)
permission_list = get_class_permissions_for(obj)
#TODO : get all globally assigned permission, new function get_permissions_for_holder (roles aware)
subtemplates_list = [
{
@@ -139,7 +139,7 @@ def acl_detail_for(request, actor, obj):
context,
context_instance=RequestContext(request)
)
def acl_grant(request):
items_property_list = loads(request.GET.get('items_property_list', []))
@@ -152,13 +152,13 @@ def acl_grant(request):
title_suffix = []
navigation_object = None
navigation_object_count = 0
for item_properties in items_property_list:
try:
permission = Permission.objects.get({'pk': item_properties['permission_pk']})
except Permission.DoesNotExist:
raise Http404
raise Http404
try:
requester = AccessHolder.get(gid=item_properties['holder_gid'])
access_object = AccessObject.get(gid=item_properties['object_gid'])
@@ -184,13 +184,13 @@ def acl_grant(request):
items[requester][access_object].append(permission)
navigation_object = access_object
navigation_object_count += 1
for requester, obj_ps in items.items():
for obj, ps in obj_ps.items():
title_suffix.append(_(u', ').join([u'"%s"' % unicode(p) for p in ps]))
title_suffix.append(_(u' for %s') % obj)
title_suffix.append(_(u' to %s') % requester)
if len(items_property_list) == 1:
title_prefix = _(u'Are you sure you wish to grant the permission %(title_suffix)s?')
else:
@@ -225,7 +225,7 @@ def acl_grant(request):
context['title'] = title_prefix % {
'title_suffix': u''.join(title_suffix),
}
logger.debug('navigation_object_count: %d' % navigation_object_count)
logger.debug('navigation_object: %s' % navigation_object)
if navigation_object_count == 1:
@@ -251,21 +251,21 @@ def acl_revoke(request):
try:
permission = Permission.objects.get({'pk': item_properties['permission_pk']})
except Permission.DoesNotExist:
raise Http404
raise Http404
try:
requester = AccessHolder.get(gid=item_properties['holder_gid'])
access_object = AccessObject.get(gid=item_properties['object_gid'])
except ObjectDoesNotExist:
raise Http404
try:
Permission.objects.check_permissions(request.user, [ACLS_EDIT_ACL])
except PermissionDenied:
try:
AccessEntry.objects.check_access(ACLS_EDIT_ACL, request.user, access_object)
except PermissionDenied:
raise
raise
else:
items.setdefault(requester, {})
items[requester].setdefault(access_object, [])
@@ -277,14 +277,14 @@ def acl_revoke(request):
items[requester].setdefault(access_object, [])
items[requester][access_object].append(permission)
navigation_object = access_object
navigation_object_count += 1
navigation_object_count += 1
for requester, obj_ps in items.items():
for obj, ps in obj_ps.items():
title_suffix.append(_(u', ').join([u'"%s"' % unicode(p) for p in ps]))
title_suffix.append(_(u' for %s') % obj)
title_suffix.append(_(u' from %s') % requester)
if len(items_property_list) == 1:
title_prefix = _(u'Are you sure you wish to revoke the permission %(title_suffix)s?')
else:
@@ -319,7 +319,7 @@ def acl_revoke(request):
context['title'] = title_prefix % {
'title_suffix': u''.join(title_suffix),
}
logger.debug('navigation_object_count: %d' % navigation_object_count)
logger.debug('navigation_object: %s' % navigation_object)
if navigation_object_count == 1:
@@ -349,7 +349,7 @@ def acl_new_holder_for(request, obj, extra_context=None, navigation_object=None)
reverse('acl_detail', args=[access_object.gid, access_holder.gid]),
urlencode(query_string)
)
)
)
except ObjectDoesNotExist:
raise Http404
else:
@@ -365,12 +365,12 @@ def acl_new_holder_for(request, obj, extra_context=None, navigation_object=None)
'navigation_object_list': [
{'object': 'object'},
{'object': 'access_object'},
],
],
}
if extra_context:
context.update(extra_context)
return render_to_response('generic_form.html', context,
context_instance=RequestContext(request))
@@ -399,12 +399,12 @@ def acl_setup_valid_classes(request):
}
return render_to_response('generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def acl_class_acl_list(request, access_object_class_gid):
Permission.objects.check_permissions(request.user, [ACLS_CLASS_VIEW_ACL])
access_object_class = AccessObjectClass.get(gid=access_object_class_gid)
context = {
'object_list': DefaultAccessEntry.objects.get_holders_for(access_object_class.source_object),
@@ -419,7 +419,7 @@ def acl_class_acl_list(request, access_object_class_gid):
}
return render_to_response('generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def acl_class_acl_detail(request, access_object_class_gid, holder_object_gid):
@@ -429,7 +429,7 @@ def acl_class_acl_detail(request, access_object_class_gid, holder_object_gid):
access_object_class = AccessObjectClass.get(gid=access_object_class_gid)
except ObjectDoesNotExist:
raise Http404
#permission_list = list(access_object_class.get_class_permissions())
permission_list = get_class_permissions_for(access_object_class.content_type.model_class())
#TODO : get all globally assigned permission, new function get_permissions_for_holder (roles aware)
@@ -464,9 +464,9 @@ def acl_class_acl_detail(request, access_object_class_gid, holder_object_gid):
'permission_pk': lambda x: x.pk,
'holder_gid': lambda x: actor.gid,
'access_object_class_gid': lambda x: access_object_class.gid,
},
},
}, context_instance=RequestContext(request))
def acl_class_new_holder_for(request, access_object_class_gid):
Permission.objects.check_permissions(request.user, [ACLS_CLASS_EDIT_ACL])
@@ -489,11 +489,11 @@ def acl_class_new_holder_for(request, access_object_class_gid):
'title': _(u'add new holder for class: %s') % unicode(access_object_class),
'object': access_object_class,
'submit_label': _(u'Select'),
'submit_icon_famfam': 'tick'
'submit_icon_famfam': 'tick'
}
return render_to_response('generic_form.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def acl_class_multiple_grant(request):
@@ -513,25 +513,25 @@ def acl_class_multiple_grant(request):
try:
permission = Permission.objects.get({'pk': item_properties['permission_pk']})
except Permission.DoesNotExist:
raise Http404
raise Http404
try:
requester = AccessHolder.get(gid=item_properties['holder_gid'])
access_object_class = AccessObjectClass.get(gid=item_properties['access_object_class_gid'])
except ObjectDoesNotExist:
raise Http404
items.setdefault(requester, {})
items[requester].setdefault(access_object_class, [])
items[requester][access_object_class].append(permission)
navigation_object = access_object_class
navigation_object_count += 1
for requester, obj_ps in items.items():
for obj, ps in obj_ps.items():
title_suffix.append(_(u', ').join([u'"%s"' % unicode(p) for p in ps]))
title_suffix.append(_(u' for %s') % obj)
title_suffix.append(_(u' to %s') % requester)
if len(items_property_list) == 1:
title_prefix = _(u'Are you sure you wish to grant the permission %(title_suffix)s?')
else:
@@ -566,7 +566,7 @@ def acl_class_multiple_grant(request):
context['title'] = title_prefix % {
'title_suffix': u''.join(title_suffix),
}
logger.debug('navigation_object_count: %d' % navigation_object_count)
logger.debug('navigation_object: %s' % navigation_object)
if navigation_object_count == 1:
@@ -593,25 +593,25 @@ def acl_class_multiple_revoke(request):
try:
permission = Permission.objects.get({'pk': item_properties['permission_pk']})
except Permission.DoesNotExist:
raise Http404
raise Http404
try:
requester = AccessHolder.get(gid=item_properties['holder_gid'])
access_object_class = AccessObjectClass.get(gid=item_properties['access_object_class_gid'])
except ObjectDoesNotExist:
raise Http404
items.setdefault(requester, {})
items[requester].setdefault(access_object_class, [])
items[requester][access_object_class].append(permission)
navigation_object = access_object_class
navigation_object_count += 1
for requester, obj_ps in items.items():
for obj, ps in obj_ps.items():
title_suffix.append(_(u', ').join([u'"%s"' % unicode(p) for p in ps]))
title_suffix.append(_(u' for %s') % obj)
title_suffix.append(_(u' from %s') % requester)
if len(items_property_list) == 1:
title_prefix = _(u'Are you sure you wish to revoke the permission %(title_suffix)s?')
else:
@@ -646,7 +646,7 @@ def acl_class_multiple_revoke(request):
context['title'] = title_prefix % {
'title_suffix': u''.join(title_suffix),
}
logger.debug('navigation_object_count: %d' % navigation_object_count)
logger.debug('navigation_object: %s' % navigation_object)
if navigation_object_count == 1:

View File

@@ -20,4 +20,3 @@ Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}

View File

@@ -19,7 +19,7 @@ from .exceptions import OfficeConversionError
HASH_FUNCTION = lambda x: hashlib.sha256(x).hexdigest()
def cache_cleanup(input_filepath, *args, **kwargs):
try:
os.remove(create_image_cache_filename(input_filepath, *args, **kwargs))
@@ -42,13 +42,13 @@ def convert(input_filepath, output_filepath=None, cleanup_files=False, mimetype=
rotation = kwargs.get('rotation', DEFAULT_ROTATION)
page = kwargs.get('page', DEFAULT_PAGE_NUMBER)
transformations = kwargs.get('transformations', [])
if transformations is None:
transformations = []
if output_filepath is None:
output_filepath = create_image_cache_filename(input_filepath, *args, **kwargs)
if os.path.exists(output_filepath):
return output_filepath
@@ -79,7 +79,7 @@ def convert(input_filepath, output_filepath=None, cleanup_files=False, mimetype=
'transformation': TRANSFORMATION_ZOOM,
'arguments': {'percent': zoom}
}
)
)
if rotation != 0 and rotation != 360:
transformations.append(
@@ -87,7 +87,7 @@ def convert(input_filepath, output_filepath=None, cleanup_files=False, mimetype=
'transformation': TRANSFORMATION_ROTATE,
'arguments': {'degrees': rotation}
}
)
)
try:
backend.convert_file(input_filepath=input_filepath, output_filepath=output_filepath, transformations=transformations, page=page, file_format=file_format, mimetype=mimetype)
@@ -107,7 +107,7 @@ def get_page_count(input_filepath):
except OfficeConversionError:
raise UnknownFileFormat('office converter exception')
return backend.get_page_count(input_filepath)
'''
@@ -127,8 +127,7 @@ def get_available_transformations_choices():
result.append([transformation, transformation_template])
return result
def get_format_list():
return [(format, FILE_FORMATS.get(format, u'')) for format in backend.get_format_list()]

View File

@@ -1,29 +1,29 @@
class ConvertError(Exception):
'''
"""
Base exception for all coverter app exceptions
'''
"""
pass
class UnknownFileFormat(ConvertError):
'''
"""
Raised when the converter backend can't understand a file
'''
"""
pass
class IdentifyError(ConvertError):
'''
"""
Raised by the graphcismagick and imagemagics identify program
'''
"""
pass
class UnkownConvertError(ConvertError):
'''
"""
Raised when an error is found but there is no disernible way to
identify the kind of error
'''
"""
pass

View File

@@ -53,7 +53,7 @@ FILE_FORMATS = {
'8BIN': _(u'Photoshop resource format'),
'8BIMTEXT': _(u'Photoshop resource text format'),
'8BIMWTEXT': _(u'Photoshop resource wide text format'),
'A': _(u'Raw alpha samples'),
'AI': _(u'Adobe Illustrator CS2'),
'APP1': _(u'Raw application information'),
@@ -62,7 +62,7 @@ FILE_FORMATS = {
'ARW': _(u'Sony Alpha DSLR Raw Image Format'),
'AVI': _(u'Microsoft Audio/Visual Interleaved'),
'AVS': _(u'AVS X image'),
'B': _(u'Raw blue samples'),
'BGR': _(u'Raw blue, green, and red samples'),
'BGRA': _(u'Raw blue, green, red and alpha samples'),
@@ -95,7 +95,7 @@ FILE_FORMATS = {
'DJVU': _(u'Déjà vu'),
'DNG': _(u'Adobe Digital Negative'),
'DOT': _(u'Graphviz'),
'DPX': _(u'SMPTE 268M-2003 (DPX 2.0)'),
'DPX': _(u'SMPTE 268M-2003 (DPX 2.0)'),
'EPDF': _(u'Encapsulated Portable Document Format'),
'EPI': _(u'Adobe Encapsulated PostScript Interchange format'),
@@ -110,7 +110,7 @@ FILE_FORMATS = {
'ERF': _(u'Epson RAW Format'),
'EXIF': _(u'Exif digital camera binary data'),
'EXR': _(u'High Dynamic-range (HDR)'),
'FAX': _(u'Group 3 FAX (Not TIFF Group3 FAX)'),
'FLI': _(u'Autodesk FLI animations file'),
'FLC': _(u'Autodesk FLC animations file'),

View File

@@ -13,14 +13,14 @@ from .exceptions import (OfficeConversionError,
OfficeBackendError, UnknownFileFormat)
CACHED_FILE_SUFFIX = u'_office_converter'
CONVERTER_OFFICE_FILE_MIMETYPES = [
u'application/msword',
u'application/mswrite',
u'application/mspowerpoint',
u'application/msexcel',
u'application/vnd.ms-excel',
u'application/vnd.ms-powerpoint',
u'application/vnd.ms-powerpoint',
u'application/vnd.oasis.opendocument.presentation',
u'application/vnd.oasis.opendocument.text',
u'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
@@ -43,7 +43,7 @@ class OfficeConverter(object):
self.exists = False
self.mimetype = None
self.encoding = None
def mimetypes(self):
return CONVERTER_OFFICE_FILE_MIMETYPES
@@ -51,7 +51,7 @@ class OfficeConverter(object):
self.exists = False
self.mimetype = None
self.encoding = None
self.input_filepath = input_filepath
# Make sure file is of a known office format
@@ -71,13 +71,13 @@ class OfficeConverter(object):
except OfficeBackendError, msg:
# convert exception so that at least the mime type icon is displayed
raise UnknownFileFormat(msg)
def __unicode__(self):
return getattr(self, 'output_filepath', None)
def __str__(self):
return str(self.__unicode__())
class OfficeConverterBackendUnoconv(object):
def __init__(self):
@@ -91,7 +91,7 @@ class OfficeConverterBackendUnoconv(object):
'''
self.input_filepath = input_filepath
self.output_filepath = output_filepath
command = []
command.append(self.unoconv_path)

View File

@@ -20,4 +20,3 @@ Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}

View File

@@ -157,8 +157,8 @@ class GPG(object):
# If not, try open it.
return open(file_input, 'rb')
else:
return file_input
return file_input
def __init__(self, binary_path=None, home=None, keyring=None, keyservers=None):
kwargs = {}
if binary_path:
@@ -198,9 +198,9 @@ class GPG(object):
'''
Verify the signature of a file.
'''
input_descriptor = GPG.get_descriptor(file_input)
if detached_signature:
# Save the original data and invert the argument order
# Signature first, file second
@@ -212,10 +212,10 @@ class GPG(object):
verify = self.gpg.verify_file(detached_signature, data_filename=filename)
else:
verify = self.gpg.verify_file(input_descriptor)
if close_descriptor:
input_descriptor.close()
if verify:
return verify
#elif getattr(verify, 'status', None) == 'no public key':
@@ -240,7 +240,7 @@ class GPG(object):
overrided if it already exists), if no destination file name is
provided the signature is returned.
'''
kwargs = {}
kwargs['clearsign'] = clearsign
@@ -287,12 +287,12 @@ class GPG(object):
result = self.gpg.decrypt_file(input_descriptor)
if close_descriptor:
input_descriptor.close()
if not result.status:
raise GPGDecryptionError('Unable to decrypt file')
return result
def create_key(self, *args, **kwargs):
if kwargs.get('passphrase') == u'':
kwargs.pop('passphrase')
@@ -319,7 +319,7 @@ class GPG(object):
return Key.get(self, import_result.fingerprints[0], secret=False)
raise KeyFetchingError
def query(self, term):
results = {}
for keyserver in self.keyservers:
@@ -331,14 +331,14 @@ class GPG(object):
results[key.keyid] = key
except:
pass
return results.values()
def import_key(self, key_data):
import_result = self.gpg.import_keys(key_data)
logger.debug('import_result: %s' % import_result)
if import_result:
return Key.get(self, import_result.fingerprints[0], secret=False)
raise KeyImportError
raise KeyImportError

View File

@@ -1 +0,0 @@

View File

@@ -10,7 +10,7 @@ from django.contrib import messages
from permissions.models import Permission
from common.utils import (urlquote, encapsulate)
from .api import Key, SIGNATURE_STATES
from .runtime import gpg
from .exceptions import (GPGVerificationError, KeyFetchingError,
@@ -24,7 +24,7 @@ logger = logging.getLogger(__name__)
def key_receive(request, key_id):
Permission.objects.check_permissions(request.user, [PERMISSION_KEY_RECEIVE])
post_action_redirect = None
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/')))
@@ -48,13 +48,13 @@ def key_receive(request, key_id):
'next': next,
'previous': previous,
'submit_method': 'GET',
}, context_instance=RequestContext(request))
def key_list(request, secret=True):
Permission.objects.check_permissions(request.user, [PERMISSION_KEY_VIEW])
if secret:
object_list = Key.get_all(gpg, secret=True)
title = _(u'private keys')
@@ -81,7 +81,7 @@ def key_list(request, secret=True):
def key_delete(request, fingerprint, key_type):
Permission.objects.check_permissions(request.user, [PERMISSION_KEY_DELETE])
secret = key_type == 'sec'
key = Key.get(gpg, fingerprint, secret=secret)
@@ -110,7 +110,7 @@ def key_delete(request, fingerprint, key_type):
def key_query(request):
Permission.objects.check_permissions(request.user, [PERMISSION_KEYSERVER_QUERY])
subtemplates_list = []
term = request.GET.get('term')
@@ -124,8 +124,8 @@ def key_query(request):
'submit_method': 'GET',
},
}
)
)
if term:
results = gpg.query(term)
subtemplates_list.append(
@@ -147,36 +147,36 @@ def key_query(request):
{
'name': _(u'creation date'),
'attribute': 'creation_date',
},
},
{
'name': _(u'disabled'),
'attribute': 'disabled',
},
},
{
'name': _(u'expiration date'),
'attribute': 'expiration_date',
},
},
{
'name': _(u'expired'),
'attribute': 'expired',
},
},
{
'name': _(u'length'),
'attribute': 'key_length',
},
},
{
'name': _(u'revoked'),
'attribute': 'revoked',
},
},
{
'name': _(u'Identifies'),
'attribute': encapsulate(lambda x: u', '.join([identity.uid for identity in x.identities])),
},
]
]
},
}
)
)
return render_to_response('generic_form.html', {
'subtemplates_list': subtemplates_list,

View File

@@ -20,4 +20,3 @@ Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}

View File

@@ -14,9 +14,9 @@ logger = logging.getLogger(__name__)
class DocumentVersionSignature(models.Model):
'''
"""
Model that describes a document version signature properties
'''
"""
document_version = models.ForeignKey(DocumentVersion, verbose_name=_(u'document version'), editable=False)
signature_file = models.FileField(blank=True, null=True, upload_to=get_filename_from_uuid, storage=STORAGE_BACKEND(), verbose_name=_(u'signature file'), editable=False)
has_embedded_signature = models.BooleanField(default=False, verbose_name=_(u'has embedded signature'), editable=False)

View File

@@ -25,8 +25,8 @@ class DocumentVersionInline(admin.StackedInline):
#inlines = [
# DocumentPageInline,
#]
class DocumentTypeFilenameInline(admin.StackedInline):
model = DocumentTypeFilename
extra = 1

View File

@@ -32,7 +32,7 @@ class FolderListForm(forms.Form):
Permission.objects.check_permissions(user, [PERMISSION_FOLDER_VIEW])
except PermissionDenied:
queryset = AccessEntry.objects.filter_objects_by_access(PERMISSION_FOLDER_VIEW, user, queryset)
self.fields['folder'] = forms.ModelChoiceField(
queryset=queryset,
label=_(u'Folder'))

View File

@@ -27,11 +27,11 @@ class Folder(models.Model):
@property
def documents(self):
return [folder_document.document for folder_document in self.folderdocument_set.all()]
def remove_document(self, document):
folder_document = self.folderdocument_set.get(document=document)
folder_document.delete()
def add_document(self, document):
folder_document, created = FolderDocument.objects.get_or_create(folder=self, document=document)
return created

View File

@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _

View File

@@ -20,4 +20,3 @@ Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}

View File

@@ -11,6 +11,6 @@ urlpatterns = patterns('folders.views',
url(r'^document/(?P<document_id>\d+)/folder/add/$', 'folder_add_document', (), 'folder_add_document'),
url(r'^document/(?P<document_id>\d+)/folder/list/$', 'document_folder_list', (), 'document_folder_list'),
url(r'^(?P<folder_pk>\d+)/acl/list/$', 'folder_acl_list', (), 'folder_acl_list'),
)

View File

@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import
import logging
@@ -49,8 +49,8 @@ def folder_list(request, queryset=None, extra_context=None):
queryset = AccessEntry.objects.filter_objects_by_access(PERMISSION_FOLDER_VIEW, request.user, queryset)
context['object_list'] = queryset
return render_to_response('generic_list.html',
return render_to_response('generic_list.html',
context,
context_instance=RequestContext(request)
)
@@ -58,7 +58,7 @@ def folder_list(request, queryset=None, extra_context=None):
def folder_create(request):
Permission.objects.check_permissions(request.user, [PERMISSION_FOLDER_CREATE])
if request.method == 'POST':
form = FolderForm(request.POST)
if form.is_valid():
@@ -157,9 +157,9 @@ def folder_view(request, folder_id):
'hide_links': True,
'multi_select_as_buttons': True,
'object': folder,
'object_name': _(u'folder'),
'object_name': _(u'folder'),
}
return document_list(
request,
object_list=folder.documents,
@@ -193,14 +193,13 @@ def folder_add_document(request, document_id):
else:
form = FolderListForm(user=request.user)
return render_to_response('generic_form.html', {
'title': _(u'add document "%s" to a folder') % document,
'form': form,
'object': document,
'next': next,
},
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def document_folder_list(request, document_id):

View File

@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _

View File

@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import
from django.contrib import admin

View File

@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import
from django import forms
from django.utils.translation import ugettext_lazy as _
@@ -18,7 +18,7 @@ class SmartLinkForm(forms.ModelForm):
class Meta:
model = SmartLink
class SmartLinkConditionForm(forms.ModelForm):
class Meta:
model = SmartLinkCondition
@@ -56,7 +56,7 @@ class SmartLinkImageWidget(forms.widgets.Widget):
output.append(u'<a href="%s"><span class="famfam active famfam-page_go"></span>%s</a>' % (reverse('document_view_simple', args=[document.pk]), ugettext(u'Select')))
output.append(u'</div>')
output.append(u'</div>')
output.append(u'</div>')
output.append(
u'<br /><span class="famfam active famfam-magnifier"></span>%s' %
@@ -70,9 +70,9 @@ class SmartLinkInstanceForm(forms.Form):
smart_link_instances = kwargs.pop('smart_link_instances', None)
links = kwargs.pop('links', None)
current_document = kwargs.pop('current_document', None)
super(SmartLinkInstanceForm, self).__init__(*args, **kwargs)
for smart_link_instance, data in smart_link_instances.items():
self.fields['preview-%s' % smart_link_instance] = forms.CharField(
widget=SmartLinkImageWidget(),

View File

@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import
from django.db import models
from django.db.models import Q

View File

@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import
from django.db import models
from django.utils.translation import ugettext_lazy as _

View File

@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _

View File

@@ -4,12 +4,12 @@ urlpatterns = patterns('linking.views',
url(r'^action/$', 'smart_link_action', (), 'smart_link_action'),
url(r'^document/(?P<document_id>\d+)/smart_link/(?P<smart_link_pk>\d+)/$', 'smart_link_instance_view', (), 'smart_link_instance_view'),
url(r'^smart/for_document/(?P<document_id>\d+)/$', 'smart_link_instances_for_document', (), 'smart_link_instances_for_document'),
url(r'^setup/list/$', 'smart_link_list', (), 'smart_link_list'),
url(r'^setup/create/$', 'smart_link_create', (), 'smart_link_create'),
url(r'^setup/(?P<smart_link_pk>\d+)/delete/$', 'smart_link_delete', (), 'smart_link_delete'),
url(r'^setup/(?P<smart_link_pk>\d+)/edit/$', 'smart_link_edit', (), 'smart_link_edit'),
url(r'^setup/(?P<smart_link_pk>\d+)/condition/list/$', 'smart_link_condition_list', (), 'smart_link_condition_list'),
url(r'^setup/(?P<smart_link_pk>\d+)/condition/create/$', 'smart_link_condition_create', (), 'smart_link_condition_create'),
url(r'^setup/smart_link/condition/(?P<smart_link_condition_pk>\d+)/edit/$', 'smart_link_condition_edit', (), 'smart_link_condition_edit'),

View File

@@ -32,7 +32,7 @@ logger = logging.getLogger(__name__)
def smart_link_action(request):
#Permission.objects.check_permissions(request.user, [PERMISSION_SMART_LINK_VIEW])
action = request.GET.get('action', None)
if not action:
@@ -45,12 +45,12 @@ def smart_link_action(request):
def smart_link_instance_view(request, document_id, smart_link_pk):
document = get_object_or_404(Document, pk=document_id)
smart_link = get_object_or_404(SmartLink, pk=smart_link_pk)
try:
Permission.objects.check_permissions(request.user, [PERMISSION_SMART_LINK_VIEW])
except PermissionDenied:
AccessEntry.objects.check_access(PERMISSION_SMART_LINK_VIEW, request.user, smart_link)
object_list, errors = SmartLink.objects.get_smart_link_instances_for(document, smart_link)
return document_list(
@@ -86,7 +86,7 @@ def smart_link_instances_for_document(request, document_id):
for key, value in smart_link_instances.items():
if key not in smart_link_instances_keys_filtered:
smart_link_instances.pop(key)
value['documents'] = AccessEntry.objects.filter_objects_by_access(PERMISSION_DOCUMENT_VIEW, request.user, value['documents'])
if smart_link_instances:
@@ -116,30 +116,30 @@ def smart_link_instances_for_document(request, document_id):
'document': document,
'subtemplates_list': subtemplates_list,
}, context_instance=RequestContext(request))
def smart_link_list(request):
qs = SmartLink.objects.all()
try:
Permission.objects.check_permissions(request.user, [PERMISSION_SMART_LINK_VIEW])
except PermissionDenied:
qs = AccessEntry.objects.filter_objects_by_access(PERMISSION_SMART_LINK_VIEW, request.user, qs)
return render_to_response('generic_list.html', {
'title': _(u'smart links'),
'object_list': qs,
'extra_columns': [
{'name': _(u'dynamic title'), 'attribute': 'dynamic_title'},
{'name': _(u'enabled'), 'attribute': encapsulate(lambda x: two_state_template(x.enabled))},
],
],
'hide_link': True,
'list_object_variable_name': 'smart_link',
}, context_instance=RequestContext(request))
def smart_link_create(request):
Permission.objects.check_permissions(request.user, [PERMISSION_SMART_LINK_CREATE])
@@ -155,9 +155,9 @@ def smart_link_create(request):
return render_to_response('generic_form.html', {
'form': form,
'title': _(u'Create new smart link')
}, context_instance=RequestContext(request))
}, context_instance=RequestContext(request))
def smart_link_edit(request, smart_link_pk):
smart_link = get_object_or_404(SmartLink, pk=smart_link_pk)
@@ -180,16 +180,16 @@ def smart_link_edit(request, smart_link_pk):
'object': smart_link,
'form': form,
'title': _(u'Edit smart link: %s') % smart_link
}, context_instance=RequestContext(request))
}, context_instance=RequestContext(request))
def smart_link_delete(request, smart_link_pk):
smart_link = get_object_or_404(SmartLink, pk=smart_link_pk)
try:
Permission.objects.check_permissions(request.user, [PERMISSION_SMART_LINK_DELETE])
except PermissionDenied:
AccessEntry.objects.check_access(PERMISSION_SMART_LINK_DELETE, request.user, smart_link)
AccessEntry.objects.check_access(PERMISSION_SMART_LINK_DELETE, request.user, smart_link)
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', '/')))
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
@@ -212,26 +212,26 @@ def smart_link_delete(request, smart_link_pk):
'next': next,
'previous': previous,
'form_icon': u'link_delete.png',
}, context_instance=RequestContext(request))
}, context_instance=RequestContext(request))
def smart_link_condition_list(request, smart_link_pk):
smart_link = get_object_or_404(SmartLink, pk=smart_link_pk)
try:
Permission.objects.check_permissions(request.user, [PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_EDIT])
except PermissionDenied:
AccessEntry.objects.check_accesses([PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_EDIT], request.user, smart_link)
AccessEntry.objects.check_accesses([PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_EDIT], request.user, smart_link)
return render_to_response('generic_list.html', {
'title': _(u'conditions for smart link: %s') % smart_link,
'object_list': smart_link.smartlinkcondition_set.all(),
'extra_columns': [
{'name': _(u'enabled'), 'attribute': encapsulate(lambda x: two_state_template(x.enabled))},
],
],
'hide_link': True,
'object': smart_link,
'list_object_variable_name': 'condition',
'list_object_variable_name': 'condition',
}, context_instance=RequestContext(request))
@@ -241,14 +241,14 @@ def smart_link_condition_create(request, smart_link_pk):
try:
Permission.objects.check_permissions(request.user, [PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_EDIT])
except PermissionDenied:
AccessEntry.objects.check_accesses([PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_EDIT], request.user, smart_link)
AccessEntry.objects.check_accesses([PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_EDIT], request.user, smart_link)
if request.method == 'POST':
form = SmartLinkConditionForm(request.POST)
if form.is_valid():
new_smart_link_condition = form.save(commit=False)
new_smart_link_condition.smart_link = smart_link
new_smart_link_condition.save()
new_smart_link_condition.save()
messages.success(request, _(u'Smart link condition: "%s" created successfully.') % new_smart_link_condition)
return HttpResponseRedirect(reverse('smart_link_condition_list', args=[smart_link.pk]))
else:
@@ -257,8 +257,8 @@ def smart_link_condition_create(request, smart_link_pk):
return render_to_response('generic_form.html', {
'form': form,
'title': _(u'Add new conditions to smart link: "%s"') % smart_link,
'object': smart_link,
}, context_instance=RequestContext(request))
'object': smart_link,
}, context_instance=RequestContext(request))
def smart_link_condition_edit(request, smart_link_condition_pk):
@@ -267,7 +267,7 @@ def smart_link_condition_edit(request, smart_link_condition_pk):
try:
Permission.objects.check_permissions(request.user, [PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_EDIT])
except PermissionDenied:
AccessEntry.objects.check_accesses([PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_EDIT], request.user, smart_link_condition.smart_link)
AccessEntry.objects.check_accesses([PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_EDIT], request.user, smart_link_condition.smart_link)
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', '/')))
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
@@ -294,8 +294,8 @@ def smart_link_condition_edit(request, smart_link_condition_pk):
{'object': 'object', 'name': _(u'smart link')},
{'object': 'condition', 'name': _(u'condition')}
],
}, context_instance=RequestContext(request))
}, context_instance=RequestContext(request))
def smart_link_condition_delete(request, smart_link_condition_pk):
@@ -304,7 +304,7 @@ def smart_link_condition_delete(request, smart_link_condition_pk):
try:
Permission.objects.check_permissions(request.user, [PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_EDIT])
except PermissionDenied:
AccessEntry.objects.check_accesses([PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_EDIT], request.user, smart_link_condition.smart_link)
AccessEntry.objects.check_accesses([PERMISSION_SMART_LINK_CREATE, PERMISSION_SMART_LINK_EDIT], request.user, smart_link_condition.smart_link)
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', '/')))
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
@@ -332,7 +332,7 @@ def smart_link_condition_delete(request, smart_link_condition_pk):
'next': next,
'previous': previous,
'form_icon': u'cog_delete.png',
}, context_instance=RequestContext(request))
}, context_instance=RequestContext(request))
def smart_link_acl_list(request, smart_link_pk):

View File

@@ -12,7 +12,7 @@ from .conf.settings import SIDE_BAR_SEARCH, DISABLE_HOME_VIEW
__author__ = 'Roberto Rosario'
__copyright__ = 'Copyright 2011 Roberto Rosario'
__credits__ = ['Roberto Rosario',]
__credits__ = ['Roberto Rosario',]
__license__ = 'GPL'
__maintainer__ = 'Roberto Rosario'
__email__ = 'roberto.rosario.gonzalez@gmail.com'
@@ -58,7 +58,7 @@ __version__ = get_version()
if 'django.contrib.admin' in settings.INSTALLED_APPS:
register_setup(admin_site)
register_tool(maintenance_menu)
register_tool(statistics)
register_tool(diagnostics)

View File

@@ -20,4 +20,3 @@ Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}

View File

@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _

View File

@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import
from django.contrib import admin

View File

@@ -1,5 +1,5 @@
'''Metadata handling commonalities'''
from __future__ import absolute_import
"""Metadata handling commonalities"""
from __future__ import absolute_import
from urllib import unquote_plus
@@ -9,9 +9,9 @@ from .models import DocumentMetadata, MetadataType
def decode_metadata_from_url(url_dict):
'''
"""
Parse a URL query string to a list of metadata
'''
"""
metadata_dict = {
'id': {},
'value': {}
@@ -35,19 +35,19 @@ def decode_metadata_from_url(url_dict):
def save_metadata_list(metadata_list, document, create=False):
'''
"""
Take a list of metadata dictionaries and associate them to a
document
'''
"""
for item in metadata_list:
save_metadata(item, document, create)
def save_metadata(metadata_dict, document, create=False):
'''
"""
Take a dictionary of metadata type & value and associate it to a
document
'''
"""
if create:
# Use matched metadata now to create document metadata
document_metadata, created = DocumentMetadata.objects.get_or_create(
@@ -81,16 +81,16 @@ def save_metadata(metadata_dict, document, create=False):
def metadata_repr(metadata_list):
'''
"""
Return a printable representation of a metadata list
'''
"""
return u', '.join(metadata_repr_as_list(metadata_list))
def metadata_repr_as_list(metadata_list):
'''
"""
Turn a list of metadata into a list of printable representations
'''
"""
output = []
for metadata_dict in metadata_list:
try:
@@ -103,7 +103,7 @@ def metadata_repr_as_list(metadata_list):
def get_metadata_string(document):
'''
"""
Return a formated representation of a document's metadata values
'''
"""
return u', '.join([u'%s - %s' % (metadata.metadata_type, metadata.value) for metadata in DocumentMetadata.objects.filter(document=document).select_related('metadata_type')])

View File

@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import
from django import forms
from django.utils.translation import ugettext_lazy as _

View File

@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import
from django.db import models
from django.utils.translation import ugettext_lazy as _
@@ -12,9 +12,9 @@ available_functions_string = (_(u' Available functions: %s') % u','.join([u'%s()
class MetadataType(models.Model):
'''
"""
Define a type of metadata
'''
"""
name = models.CharField(unique=True, max_length=48, verbose_name=_(u'name'), help_text=_(u'Do not use python reserved words, or spaces.'))
title = models.CharField(max_length=48, verbose_name=_(u'title'), blank=True, null=True)
default = models.CharField(max_length=128, blank=True, null=True,
@@ -35,9 +35,9 @@ class MetadataType(models.Model):
class MetadataSet(models.Model):
'''
"""
Define a group of metadata types
'''
"""
title = models.CharField(max_length=48, verbose_name=_(u'title'))
def __unicode__(self):
@@ -50,10 +50,10 @@ class MetadataSet(models.Model):
class MetadataSetItem(models.Model):
'''
"""
Define the set of metadata that relates to a set or group of
metadata fields
'''
"""
metadata_set = models.ForeignKey(MetadataSet, verbose_name=_(u'metadata set'))
metadata_type = models.ForeignKey(MetadataType, verbose_name=_(u'metadata type'))
#required = models.BooleanField(default=True, verbose_name=_(u'required'))
@@ -67,10 +67,10 @@ class MetadataSetItem(models.Model):
class DocumentMetadata(models.Model):
'''
"""
Link a document to a specific instance of a metadata type with it's
current value
'''
"""
document = models.ForeignKey(Document, verbose_name=_(u'document'))
metadata_type = models.ForeignKey(MetadataType, verbose_name=_(u'type'))
value = models.CharField(max_length=256, blank=True, verbose_name=_(u'value'), db_index=True)
@@ -84,10 +84,10 @@ class DocumentMetadata(models.Model):
class DocumentTypeDefaults(models.Model):
'''
"""
Default preselected metadata types and metadata set per document
type
'''
"""
document_type = models.ForeignKey(DocumentType, verbose_name=_(u'document type'))
default_metadata_sets = models.ManyToManyField(MetadataSet, blank=True, verbose_name=_(u'default metadata sets'))
default_metadata = models.ManyToManyField(MetadataType, blank=True, verbose_name=_(u'default metadata'))

View File

@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _

View File

@@ -20,4 +20,3 @@ Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}

View File

@@ -1,4 +1,4 @@
from __future__ import absolute_import
from __future__ import absolute_import
from django.shortcuts import render_to_response
from django.template import RequestContext
@@ -46,10 +46,10 @@ def metadata_edit(request, document_id=None, document_id_list=None):
Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_DOCUMENT_EDIT])
except PermissionDenied:
documents = AccessEntry.objects.filter_objects_by_access(PERMISSION_METADATA_DOCUMENT_EDIT, request.user, documents)
if not documents:
messages.error(request, _(u'Must provide at least one document.'))
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
post_action_redirect = reverse('document_list_recent')
@@ -141,7 +141,7 @@ def metadata_add(request, document_id=None, document_id_list=None):
if not documents:
messages.error(request, _(u'Must provide at least one document.'))
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
for document in documents:
RecentDocument.objects.add_document_for_user(request.user, document)
@@ -205,12 +205,12 @@ def metadata_remove(request, document_id=None, document_id_list=None):
elif document_id_list:
documents = [get_object_or_404(Document, pk=document_id) for document_id in document_id_list.split(',')]
try:
Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_DOCUMENT_REMOVE])
except PermissionDenied:
documents = AccessEntry.objects.filter_objects_by_access(PERMISSION_METADATA_DOCUMENT_REMOVE, request.user, documents)
if not documents:
messages.error(request, _(u'Must provide at least one document.'))
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
@@ -304,7 +304,7 @@ def metadata_view(request, document_id):
'hide_link': True,
'object': document,
}, context_instance=RequestContext(request))
# Setup views
def setup_metadata_type_list(request):
@@ -323,12 +323,12 @@ def setup_metadata_type_list(request):
}
return render_to_response('generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def setup_metadata_type_edit(request, metadatatype_id):
Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_TYPE_EDIT])
metadata_type = get_object_or_404(MetadataType, pk=metadatatype_id)
if request.method == 'POST':
@@ -351,12 +351,12 @@ def setup_metadata_type_edit(request, metadatatype_id):
'object': metadata_type,
'object_name': _(u'metadata type'),
},
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def setup_metadata_type_create(request):
Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_TYPE_CREATE])
if request.method == 'POST':
form = MetadataTypeForm(request.POST)
if form.is_valid():
@@ -375,7 +375,7 @@ def setup_metadata_type_create(request):
def setup_metadata_type_delete(request, metadatatype_id):
Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_TYPE_DELETE])
metadata_type = get_object_or_404(MetadataType, pk=metadatatype_id)
post_action_redirect = reverse('setup_metadata_type_list')
@@ -423,7 +423,7 @@ def setup_metadata_set_list(request):
}
return render_to_response('generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def get_set_members(metadata_set):
@@ -471,7 +471,7 @@ def setup_metadata_set_edit(request, metadata_set_id):
def setup_metadata_set_create(request):
Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_SET_CREATE])
if request.method == 'POST':
form = MetadataSetForm(request.POST)
if form.is_valid():
@@ -490,7 +490,7 @@ def setup_metadata_set_create(request):
def setup_metadata_set_delete(request, metadata_set_id):
Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_SET_DELETE])
metadata_set = get_object_or_404(MetadataSet, pk=metadata_set_id)
post_action_redirect = reverse('setup_metadata_set_list')
@@ -566,7 +566,7 @@ def setup_document_type_metadata(request, document_type_id):
# Initialize defaults
DocumentTypeDefaults.objects.get_or_create(document_type=document_type)
return assign_remove(
request,
left_list=lambda: generate_choices_w_labels(get_document_type_metadata_non_members(document_type)),

View File

@@ -21,7 +21,7 @@ from .models import DocumentQueue, QueueTransformation
from .tasks import task_process_document_queues
from .permissions import (PERMISSION_OCR_DOCUMENT,
PERMISSION_OCR_DOCUMENT_DELETE, PERMISSION_OCR_QUEUE_ENABLE_DISABLE,
PERMISSION_OCR_CLEAN_ALL_PAGES, PERMISSION_OCR_QUEUE_EDIT)
PERMISSION_OCR_CLEAN_ALL_PAGES)
logger = logging.getLogger(__name__)

View File

@@ -40,7 +40,7 @@ def task_process_queue_document(queue_document_id):
queue_document.state = QUEUEDOCUMENT_STATE_ERROR
queue_document.result = e
queue_document.save()
lock.release()
except LockError:
logger.debug('unable to obtain lock')

View File

@@ -20,4 +20,3 @@ Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}

View File

@@ -123,9 +123,9 @@ def queue_document_multiple_delete(request):
def submit_document_multiple(request):
for item_id in request.GET.get('id_list', '').split(','):
submit_document(request, item_id)
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
def submit_document(request, document_id):
document = get_object_or_404(Document, pk=document_id)
@@ -134,7 +134,7 @@ def submit_document(request, document_id):
Permission.objects.check_permissions(request.user, [PERMISSION_OCR_DOCUMENT])
except PermissionDenied:
AccessEntry.objects.check_access(PERMISSION_OCR_DOCUMENT, request.user, document)
return submit_document_to_queue(request, document=document,
post_submit_redirect=request.META.get('HTTP_REFERER', '/'))

View File

@@ -1 +0,0 @@

View File

@@ -13,7 +13,7 @@ from django.core.exceptions import PermissionDenied
from common.models import AnonymousUserSingleton
from .managers import (RoleMemberManager, StoredPermissionManager)
logger = logging.getLogger(__name__)
@@ -21,7 +21,7 @@ class PermissionNamespace(object):
def __init__(self, name, label):
self.name = name
self.label = label
def __unicode__(self):
return unicode(self.label)
@@ -29,17 +29,17 @@ class PermissionNamespace(object):
class PermissionDoesNotExists(Exception):
pass
class PermissionManager(object):
_permissions = {}
DoesNotExist = PermissionDoesNotExists()
@classmethod
def register(cls, namespace, name, label):
permission = Permission(namespace, name, label)
cls._permissions[permission.uuid] = permission
return permission
@classmethod
def check_permissions(cls, requester, permission_list):
for permission in permission_list:
@@ -49,11 +49,11 @@ class PermissionManager(object):
logger.debug('no permission')
raise PermissionDenied(ugettext(u'Insufficient permissions.'))
@classmethod
def get_for_holder(cls, holder):
return StoredPermission.objects.get_for_holder(holder)
@classmethod
def all(cls):
# Return sorted permisions by namespace.name
@@ -69,21 +69,21 @@ class PermissionManager(object):
return cls._permissions[get_dict['pk']].get_stored_permission()
except KeyError:
raise Permission.DoesNotExist
def __init__(self, model):
self.model = model
class Permission(object):
DoesNotExist = PermissionDoesNotExists
def __init__(self, namespace, name, label):
self.namespace = namespace
self.name = name
self.label = label
self.pk = self.uuid
def __unicode__(self):
return unicode(self.label)
@@ -93,7 +93,7 @@ class Permission(object):
@property
def uuid(self):
return u'%s.%s' % (self.namespace.name, self.name)
@property
def stored_permission(self):
return self.get_stored_permission()
@@ -107,17 +107,17 @@ class Permission(object):
stored_permission.save()
stored_permission.volatile_permission = self
return stored_permission
def requester_has_this(self, requester):
stored_permission = self.get_stored_permission()
return stored_permission.requester_has_this(requester)
def save(self, *args, **kwargs):
return self.get_stored_permission()
Permission.objects = PermissionManager(Permission)
Permission._default_manager = Permission.objects
class StoredPermission(models.Model):
namespace = models.CharField(max_length=64, verbose_name=_(u'namespace'))
@@ -126,15 +126,15 @@ class StoredPermission(models.Model):
objects = StoredPermissionManager()
class Meta:
ordering = ('namespace', )
ordering = ('namespace', )
unique_together = ('namespace', 'name')
verbose_name = _(u'permission')
verbose_name_plural = _(u'permissions')
def __init__(self, *args, **kwargs):
super(StoredPermission, self).__init__(*args, **kwargs)
self.volatile_permission = Permission.objects.get({'pk': '%s.%s' % (self.namespace, self.name)}, proxy_only=True)
def __unicode__(self):
return unicode(getattr(self, 'volatile_permission', self.name))
@@ -164,7 +164,7 @@ class StoredPermission(models.Model):
for membership in list(set(roles) | set(groups)):
if self.requester_has_this(membership):
return True
logger.debug('Fallthru')
return False
@@ -181,7 +181,7 @@ class StoredPermission(models.Model):
return True
except PermissionHolder.DoesNotExist:
return False
class PermissionHolder(models.Model):
permission = models.ForeignKey(StoredPermission, verbose_name=_(u'permission'))
@@ -228,7 +228,7 @@ class Role(models.Model):
member = AnonymousUserSingleton.objects.passthru_check(member)
member_type=ContentType.objects.get_for_model(member)
role_member = RoleMember.objects.get(role=self, member_type=member_type, member_id=member.pk)
role_member.delete()
role_member.delete()
def members(self, filter_dict=None):
filter_dict = filter_dict or {}

View File

@@ -1 +0,0 @@

View File

@@ -20,4 +20,3 @@ Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}

View File

@@ -7,7 +7,7 @@ urlpatterns = patterns('permissions.views',
url(r'^role/(?P<role_id>\d+)/edit/$', 'role_edit', (), 'role_edit'),
url(r'^role/(?P<role_id>\d+)/delete/$', 'role_delete', (), 'role_delete'),
url(r'^role/(?P<role_id>\d+)/members/$', 'role_members', (), 'role_members'),
url(r'^permissions/multiple/grant/$', 'permission_grant', (), 'permission_multiple_grant'),
url(r'^permissions/multiple/revoke/$', 'permission_revoke', (), 'permission_multiple_revoke'),
)

View File

@@ -24,7 +24,7 @@ from .models import Role, Permission, PermissionHolder, RoleMember
from .forms import RoleForm, RoleForm_view
from .permissions import (PERMISSION_ROLE_VIEW, PERMISSION_ROLE_EDIT,
PERMISSION_ROLE_CREATE, PERMISSION_ROLE_DELETE,
PERMISSION_PERMISSION_GRANT, PERMISSION_PERMISSION_REVOKE)
PERMISSION_PERMISSION_GRANT, PERMISSION_PERMISSION_REVOKE)
from .widgets import role_permission_link
@@ -133,20 +133,20 @@ def permission_grant(request):
permission = Permission.objects.get({'pk': item_properties['permission_id']})
except Permission.DoesNotExist:
raise Http404
ct = get_object_or_404(ContentType, app_label=item_properties['requester_app_label'], model=item_properties['requester_model'])
requester_model = ct.model_class()
requester = get_object_or_404(requester_model, pk=item_properties['requester_id'])
items.append({'requester': requester, 'permission': permission})
sorted_items = sorted(items, key=operator.itemgetter('requester'))
# Group items by requester
groups = itertools.groupby(sorted_items, key=operator.itemgetter('requester'))
grouped_items = [(grouper, [permission['permission'] for permission in group_data]) for grouper, group_data in groups]
# Warning: trial and error black magic ahead
title_suffix = _(u' and ').join([_(u'%(permissions)s to %(requester)s') % {'permissions': ', '.join(['"%s"' % unicode(ps) for ps in p]), 'requester': unicode(r)} for r, p in grouped_items])
if len(grouped_items) == 1 and len(grouped_items[0][1]) == 1:
permissions_label = _(u'permission')
else:
@@ -174,13 +174,13 @@ def permission_grant(request):
'permissions_label': permissions_label,
'title_suffix': title_suffix,
}
if len(grouped_items) == 1:
context['object'] = grouped_items[0][0]
return render_to_response('generic_confirm.html', context,
context_instance=RequestContext(request))
def permission_revoke(request):
Permission.objects.check_permissions(request.user, [PERMISSION_PERMISSION_REVOKE])
@@ -197,20 +197,20 @@ def permission_revoke(request):
permission = Permission.objects.get({'pk': item_properties['permission_id']})
except Permission.DoesNotExist:
raise Http404
ct = get_object_or_404(ContentType, app_label=item_properties['requester_app_label'], model=item_properties['requester_model'])
requester_model = ct.model_class()
requester = get_object_or_404(requester_model, pk=item_properties['requester_id'])
items.append({'requester': requester, 'permission': permission})
sorted_items = sorted(items, key=operator.itemgetter('requester'))
# Group items by requester
groups = itertools.groupby(sorted_items, key=operator.itemgetter('requester'))
grouped_items = [(grouper, [permission['permission'] for permission in group_data]) for grouper, group_data in groups]
# Warning: trial and error black magic ahead
title_suffix = _(u' and ').join([_(u'%(permissions)s to %(requester)s') % {'permissions': ', '.join(['"%s"' % unicode(ps) for ps in p]), 'requester': unicode(r)} for r, p in grouped_items])
if len(grouped_items) == 1 and len(grouped_items[0][1]) == 1:
permissions_label = _(u'permission')
else:
@@ -238,7 +238,7 @@ def permission_revoke(request):
'permissions_label': permissions_label,
'title_suffix': title_suffix,
}
if len(grouped_items) == 1:
context['object'] = grouped_items[0][0]
@@ -259,7 +259,7 @@ def get_role_members(role, separate=False):
user_ct = ContentType.objects.get(model='user')
group_ct = ContentType.objects.get(model='group')
anonymous = ContentType.objects.get(model='anonymoususersingleton')
users = role.members(filter_dict={'member_type': user_ct})
groups = role.members(filter_dict={'member_type': group_ct})
anonymous = role.members(filter_dict={'member_type': anonymous})
@@ -268,34 +268,34 @@ def get_role_members(role, separate=False):
return users, groups, anonymous
else:
members = []
if users:
members.append((_(u'Users'), _as_choice_list(list(users))))
if groups:
members.append((_(u'Groups'), _as_choice_list(list(groups))))
if anonymous:
members.append((_(u'Special'), _as_choice_list(list(anonymous))))
return members
return members
def get_non_role_members(role):
#non members = all users - members - staff - super users
member_users, member_groups, member_anonymous = get_role_members(role, separate=True)
staff_users = User.objects.filter(is_staff=True)
super_users = User.objects.filter(is_superuser=True)
users = set(User.objects.all()) - set(member_users) - set(staff_users) - set(super_users)
groups = set(Group.objects.all()) - set(member_groups)
anonymous = set([AnonymousUserSingleton.objects.get()]) - set(member_anonymous)
non_members = []
if users:
non_members.append((_(u'Users'), _as_choice_list(list(users))))
if groups:
non_members.append((_(u'Groups'), _as_choice_list(list(groups))))
@@ -303,7 +303,7 @@ def get_non_role_members(role):
non_members.append((_(u'Special'), _as_choice_list(list(anonymous))))
#non_holder_list.append((_(u'Special'), _as_choice_list([AnonymousUserSingleton.objects.get()])))
return non_members

View File

@@ -2,6 +2,7 @@ from django.utils.translation import ugettext_lazy as _
from project_setup.api import register_setup
def is_superuser(context):
return context['request'].user.is_staff or context['request'].user.is_superuser

View File

@@ -20,4 +20,3 @@ Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}

View File

@@ -20,4 +20,3 @@ Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}

View File

@@ -85,7 +85,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_NEW_VERSION])
except PermissionDenied:
AccessEntry.objects.check_access(PERMISSION_DOCUMENT_NEW_VERSION, request.user, document)
results = get_active_tab_links(document)
else:
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE])
@@ -149,7 +149,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
expand = False
new_filename = get_form_filename(form)
web_form.upload_file(request.FILES['file'],
new_filename, use_file_name=form.cleaned_data.get('use_file_name', False),
document_type=document_type,
@@ -157,7 +157,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
metadata_dict_list=decode_metadata_from_url(request.GET),
user=request.user,
document=document,
new_version_data=form.cleaned_data.get('new_version_data')
new_version_data=form.cleaned_data.get('new_version_data')
)
if document:
messages.success(request, _(u'Document version uploaded successfully.'))
@@ -180,7 +180,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
title = _(u'upload a new version from source: %s') % web_form.title
else:
title = _(u'upload a local document from source: %s') % web_form.title
subtemplates_list.append({
'name': 'generic_form_subtemplate.html',
'context': {
@@ -214,7 +214,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
expand = False
new_filename = get_form_filename(form)
staging_folder.upload_file(staging_file.upload(),
new_filename, use_file_name=form.cleaned_data.get('use_file_name', False),
document_type=document_type,
@@ -222,7 +222,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
metadata_dict_list=decode_metadata_from_url(request.GET),
user=request.user,
document=document,
new_version_data=form.cleaned_data.get('new_version_data')
new_version_data=form.cleaned_data.get('new_version_data')
)
if document:
messages.success(request, _(u'Document version from staging file: %s, uploaded successfully.') % staging_file.filename)
@@ -258,7 +258,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
title = _(u'upload a new version from staging source: %s') % staging_folder.title
else:
title = _(u'upload a document from staging source: %s') % staging_folder.title
subtemplates_list = [
{
'name': 'generic_form_subtemplate.html',
@@ -275,7 +275,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
'hide_link': True,
}
},
]
]
if document:
context['object'] = document
@@ -290,11 +290,11 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
},
'upload_interactive': {
'links': results['tab_links']
}
}
}
},
})
if not document:
context.update(
{
@@ -310,7 +310,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
],
}
)
return render_to_response('generic_form.html', context,
context_instance=RequestContext(request))
@@ -420,12 +420,12 @@ def setup_source_list(request, source_type):
}
return render_to_response('generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def setup_source_edit(request, source_type, source_id):
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
if source_type == SOURCE_CHOICE_WEB_FORM:
cls = WebForm
form_class = WebFormSetupForm
@@ -435,7 +435,7 @@ def setup_source_edit(request, source_type, source_id):
elif source_type == SOURCE_CHOICE_WATCH:
cls = WatchFolder
form_class = WatchFolderSetupForm
source = get_object_or_404(cls, pk=source_id)
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', '/')))
@@ -477,12 +477,12 @@ def setup_source_delete(request, source_type, source_id):
cls = WatchFolder
form_icon = u'folder_delete.png'
redirect_view = 'setup_watch_folder_list'
redirect_view = reverse('setup_source_list', args=[source_type])
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', redirect_view)))
source = get_object_or_404(cls, pk=source_id)
if request.method == 'POST':
try:
source.delete()
@@ -511,7 +511,7 @@ def setup_source_delete(request, source_type, source_id):
def setup_source_create(request, source_type):
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_CREATE])
if source_type == SOURCE_CHOICE_WEB_FORM:
cls = WebForm
form_class = WebFormSetupForm
@@ -521,7 +521,7 @@ def setup_source_create(request, source_type):
elif source_type == SOURCE_CHOICE_WATCH:
cls = WatchFolder
form_class = WatchFolderSetupForm
if request.method == 'POST':
form = form_class(data=request.POST)
if form.is_valid():
@@ -545,7 +545,7 @@ def setup_source_create(request, source_type):
def setup_source_transformation_list(request, source_type, source_id):
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
if source_type == SOURCE_CHOICE_WEB_FORM:
cls = WebForm
elif source_type == SOURCE_CHOICE_STAGING:
@@ -572,12 +572,12 @@ def setup_source_transformation_list(request, source_type, source_id):
}
return render_to_response('generic_list.html', context,
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def setup_source_transformation_edit(request, transformation_id):
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
source_transformation = get_object_or_404(SourceTransformation, pk=transformation_id)
redirect_view = reverse('setup_source_transformation_list', args=[source_transformation.content_object.source_type, source_transformation.content_object.pk])
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', redirect_view)))
@@ -605,7 +605,7 @@ def setup_source_transformation_edit(request, transformation_id):
],
'next': next,
},
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def setup_source_transformation_delete(request, transformation_id):
@@ -632,14 +632,14 @@ def setup_source_transformation_delete(request, transformation_id):
'navigation_object_list': [
{'object': 'source', 'name': _(u'source')},
{'object': 'transformation', 'name': _(u'transformation')}
],
],
'title': _(u'Are you sure you wish to delete source transformation "%(transformation)s"') % {
'transformation': source_transformation.get_transformation_display(),
},
'previous': previous,
'form_icon': u'shape_square_delete.png',
},
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def setup_source_transformation_create(request, source_type, source_id):
@@ -651,11 +651,11 @@ def setup_source_transformation_create(request, source_type, source_id):
cls = StagingFolder
elif source_type == SOURCE_CHOICE_WATCH:
cls = WatchFolder
source = get_object_or_404(cls, pk=source_id)
redirect_view = reverse('setup_source_transformation_list', args=[source.source_type, source.pk])
if request.method == 'POST':
form = SourceTransformationForm_create(request.POST)
if form.is_valid():
@@ -669,7 +669,7 @@ def setup_source_transformation_create(request, source_type, source_id):
messages.error(request, _(u'Error creating source transformation; %s') % e)
else:
form = SourceTransformationForm_create()
return render_to_response('generic_form.html', {
'form': form,
'source': source,

View File

@@ -18,9 +18,9 @@ logger = logging.getLogger(__name__)
class TagForm(forms.Form):
'''
"""
Form to edit an existing tag's properties
'''
"""
name = forms.CharField(label=_(u'Name'))
color = forms.ChoiceField(choices=COLOR_CHOICES, label=_(u'Color'))
@@ -36,7 +36,7 @@ class TagListForm(forms.Form):
Permission.objects.check_permissions(user, [PERMISSION_TAG_VIEW])
except PermissionDenied:
queryset = AccessEntry.objects.filter_objects_by_access(PERMISSION_TAG_VIEW, user, queryset)
self.fields['tag'] = forms.ModelChoiceField(
queryset=queryset,
label=_(u'Tags'))

View File

@@ -12,6 +12,6 @@ urlpatterns = patterns('tags.views',
url(r'^multiple/remove_from_document/(?P<document_id>\d+)/$', 'tag_multiple_remove', (), 'tag_multiple_remove'),
url(r'^document/(?P<document_id>\d+)/add/$', 'tag_attach', (), 'tag_attach'),
url(r'^document/(?P<document_id>\d+)/list/$', 'document_tags', (), 'document_tags'),
url(r'^(?P<tag_pk>\d+)/acl/list/$', 'tag_acl_list', (), 'tag_acl_list'),
)

View File

@@ -40,11 +40,11 @@ def tag_create(request):
if tag_name in Tag.objects.values_list('name', flat=True):
messages.error(request, _(u'Tag already exists.'))
return HttpResponseRedirect(previous)
tag = Tag(name=tag_name)
tag.save()
TagProperties(tag=tag, color=form.cleaned_data['color']).save()
messages.success(request, _(u'Tag created succesfully.'))
return HttpResponseRedirect(redirect_url)
else:
@@ -54,7 +54,7 @@ def tag_create(request):
'title': _(u'create tag'),
'form': form,
},
context_instance=RequestContext(request))
context_instance=RequestContext(request))
def tag_attach(request, document_id):
@@ -63,7 +63,7 @@ def tag_attach(request, document_id):
try:
Permission.objects.check_permissions(request.user, [PERMISSION_TAG_ATTACH])
except PermissionDenied:
AccessEntry.objects.check_access(PERMISSION_TAG_ATTACH, request.user, document)
AccessEntry.objects.check_access(PERMISSION_TAG_ATTACH, request.user, document)
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse('document_tags', args=[document.pk]))))
@@ -108,7 +108,7 @@ def tag_list(request, queryset=None, extra_context=None):
queryset = AccessEntry.objects.filter_objects_by_access(PERMISSION_TAG_VIEW, request.user, queryset)
context['object_list'] = queryset
return render_to_response('generic_list.html',
context,
context_instance=RequestContext(request)
@@ -126,11 +126,11 @@ def tag_delete(request, tag_id=None, tag_id_list=None):
else:
messages.error(request, _(u'Must provide at least one tag.'))
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
try:
Permission.objects.check_permissions(request.user, [PERMISSION_TAG_DELETE])
except PermissionDenied:
tags = AccessEntry.objects.filter_objects_by_access(PERMISSION_TAG_DELETE, request.user, tags)
tags = AccessEntry.objects.filter_objects_by_access(PERMISSION_TAG_DELETE, request.user, tags)
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/')))
@@ -178,7 +178,7 @@ def tag_edit(request, tag_id):
try:
Permission.objects.check_permissions(request.user, [PERMISSION_TAG_EDIT])
except PermissionDenied:
AccessEntry.objects.check_access(PERMISSION_TAG_EDIT, request.user, tag)
AccessEntry.objects.check_access(PERMISSION_TAG_EDIT, request.user, tag)
if request.method == 'POST':
form = TagForm(request.POST)
@@ -227,13 +227,13 @@ def document_tags(request, document_id):
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
except PermissionDenied:
AccessEntry.objects.check_access(PERMISSION_DOCUMENT_VIEW, request.user, document)
context = {
'object': document,
'document': document,
'title': _(u'tags for: %s') % document,
}
return tag_list(request, queryset=document.tags.all(), extra_context=context)
@@ -243,7 +243,7 @@ def tag_remove(request, document_id, tag_id=None, tag_id_list=None):
try:
Permission.objects.check_permissions(request.user, [PERMISSION_TAG_REMOVE])
except PermissionDenied:
AccessEntry.objects.check_access(PERMISSION_TAG_REMOVE, request.user, document)
AccessEntry.objects.check_access(PERMISSION_TAG_REMOVE, request.user, document)
post_action_redirect = None

View File

@@ -3,9 +3,9 @@ from django.utils.safestring import mark_safe
def get_tags_inline_widget(document):
'''
"""
A tag widget that includes the total tag count for a given document
'''
"""
tags_template = []
tag_count = document.tags.count()
if tag_count:
@@ -13,17 +13,17 @@ def get_tags_inline_widget(document):
for tag in document.tags.all():
tags_template.append(u'<ul class="tags"><li style="background: %s;">%s</li></ul>' % (tag.tagproperties_set.get().get_color_code(), tag.name))
tags_template.append(u'<div style="clear:both;"></div>')
tags_template.append(u'</div>')
return mark_safe(u''.join(tags_template))
def get_tags_inline_widget_simple(document):
'''
"""
A tag widget that only displayes the rectangular colored boxes for a
given document
'''
"""
tags_template = []
tag_count = document.tags.count()