diff --git a/apps/common/__init__.py b/apps/common/__init__.py
index 9562a07710..f37bb1dbb0 100644
--- a/apps/common/__init__.py
+++ b/apps/common/__init__.py
@@ -2,4 +2,5 @@ import tempfile
from common.conf import settings as common_settings
-TEMPORARY_DIRECTORY = common_settings.TEMPORARY_DIRECTORY if common_settings.TEMPORARY_DIRECTORY else tempfile.mkdtemp()
+TEMPORARY_DIRECTORY = common_settings.TEMPORARY_DIRECTORY \
+ if common_settings.TEMPORARY_DIRECTORY else tempfile.mkdtemp()
diff --git a/apps/common/forms.py b/apps/common/forms.py
index 76b0c30d27..b427cc644b 100644
--- a/apps/common/forms.py
+++ b/apps/common/forms.py
@@ -2,42 +2,46 @@ from django import forms
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext as _
from django.db import models
-from django.conf import settings
-from django.template.defaultfilters import capfirst
from common.utils import return_attrib
class DetailSelectMultiple(forms.widgets.SelectMultiple):
def __init__(self, queryset=None, *args, **kwargs):
- self.queryset=queryset
+ self.queryset = queryset
super(DetailSelectMultiple, self).__init__(*args, **kwargs)
def render(self, name, value, attrs=None, choices=()):
- if value is None: value = ''
+ if value is None:
+ value = ''
final_attrs = self.build_attrs(attrs, name=name)
css_class = final_attrs.get('class', 'list')
output = u'
' % css_class
options = None
if value:
if getattr(value, '__iter__', None):
- options = [(index, string) for index, string in self.choices if index in value]
+ options = [(index, string) for index, string in \
+ self.choices if index in value]
else:
- options = [(index, string) for index, string in self.choices if index == value]
+ options = [(index, string) for index, string in \
+ self.choices if index == value]
else:
if self.choices:
if self.choices[0] != (u'', u'---------') and value != []:
- options = [(index, string) for index, string in self.choices]
+ options = [(index, string) for index, string in \
+ self.choices]
if options:
for index, string in options:
if self.queryset:
try:
- output += u'- %s
' % (self.queryset.get(pk=index).get_absolute_url(), string)
+ output += u'- %s
' % (
+ self.queryset.get(pk=index).get_absolute_url(),
+ string)
except AttributeError:
output += u'- %s
' % (string)
else:
- output += u'- %s
' % string
+ output += u'- %s
' % string
else:
output += u'- %s
' % _(u"None")
return mark_safe(output + u'
\n')
@@ -57,13 +61,15 @@ class DetailForm(forms.ModelForm):
label = 'label' in extra_field and extra_field['label'] or None
#TODO: Add others result types <=> Field types
if isinstance(result, models.query.QuerySet):
- self.fields[extra_field['field']]=forms.ModelMultipleChoiceField(queryset=result, label=label)
+ self.fields[extra_field['field']] = \
+ forms.ModelMultipleChoiceField(
+ queryset=result, label=label)
else:
- self.fields[extra_field['field']]=forms.CharField(
+ self.fields[extra_field['field']] = forms.CharField(
label=extra_field['label'],
- #initial=getattr(self.instance, extra_field['field'], None),
- initial=return_attrib(self.instance, extra_field['field'], None),
- widget=PlainWidget)
+ initial=return_attrib(self.instance,
+ extra_field['field'], None),
+ widget=PlainWidget)
for field_name, field in self.fields.items():
if isinstance(field.widget, forms.widgets.SelectMultiple):
@@ -72,36 +78,44 @@ class DetailForm(forms.ModelForm):
attrs=field.widget.attrs,
queryset=getattr(field, 'queryset', None),
)
- self.fields[field_name].help_text=''
+ self.fields[field_name].help_text = ''
elif isinstance(field.widget, forms.widgets.Select):
self.fields[field_name].widget = DetailSelectMultiple(
choices=field.widget.choices,
attrs=field.widget.attrs,
queryset=getattr(field, 'queryset', None),
)
- self.fields[field_name].help_text=''
+ self.fields[field_name].help_text = ''
class GenericConfirmForm(forms.Form):
- pass
+ def __init__(self, *args, **kwargs):
+ pass
class GenericAssignRemoveForm(forms.Form):
- left_list = forms.ModelMultipleChoiceField(required=False, queryset=None)
- right_list = forms.ModelMultipleChoiceField(required=False, queryset=None)
- def __init__(self, left_list_qryset=None, right_list_qryset=None, left_filter=None, *args, **kwargs):
+ def __init__(self, *args, **kwargs):
+ left_list_qryset = kwargs.pop('left_list_qryset', None)
+ right_list_qryset = kwargs.pop('right_list_qryset', None)
+ left_filter = kwargs.pop('left_filter', None)
super(GenericAssignRemoveForm, self).__init__(*args, **kwargs)
if left_filter:
- self.fields['left_list'].queryset = left_list_qryset.filter(*left_filter)
+ self.fields['left_list'].queryset = left_list_qryset.filter(
+ *left_filter)
else:
self.fields['left_list'].queryset = left_list_qryset
self.fields['right_list'].queryset = right_list_qryset
+ left_list = forms.ModelMultipleChoiceField(required=False, queryset=None)
+ right_list = forms.ModelMultipleChoiceField(required=False, queryset=None)
+
class FilterForm(forms.Form):
def __init__(self, list_filters, *args, **kwargs):
super(FilterForm, self).__init__(*args, **kwargs)
for list_filter in list_filters:
label = list_filter.get('title', list_filter['name'])
- self.fields[list_filter['name']] = forms.ModelChoiceField(queryset=list_filter['queryset'], label=label[0].upper() + label[1:], required=False)
+ self.fields[list_filter['name']] = forms.ModelChoiceField(
+ queryset=list_filter['queryset'],
+ label=label[0].upper() + label[1:], required=False)
diff --git a/apps/common/middleware/login_required_middleware.py b/apps/common/middleware/login_required_middleware.py
index d00cb09977..3eb6d377d7 100644
--- a/apps/common/middleware/login_required_middleware.py
+++ b/apps/common/middleware/login_required_middleware.py
@@ -4,27 +4,28 @@ from re import compile
EXEMPT_URLS = [compile(settings.LOGIN_URL.lstrip('/'))]
if hasattr(settings, 'LOGIN_EXEMPT_URLS'):
- EXEMPT_URLS += [compile(expr) for expr in settings.LOGIN_EXEMPT_URLS]
+ EXEMPT_URLS += [compile(expr) for expr in settings.LOGIN_EXEMPT_URLS]
class LoginRequiredMiddleware:
- """
- Middleware that requires a user to be authenticated to view any page other
- than LOGIN_URL. Exemptions to this requirement can optionally be specified
- in settings via a list of regular expressions in LOGIN_EXEMPT_URLS (which
- you can copy from your urls.py).
+ """
+ Middleware that requires a user to be authenticated to view any page other
+ than LOGIN_URL. Exemptions to this requirement can optionally be specified
+ in settings via a list of regular expressions in LOGIN_EXEMPT_URLS (which
+ you can copy from your urls.py).
- Requires authentication middleware and template context processors to be
- loaded. You'll get an error if they aren't.
- """
- def process_request(self, request):
- assert hasattr(request, 'user'), "The Login Required middleware\
+ Requires authentication middleware and template context processors to be
+ loaded. You'll get an error if they aren't.
+ """
+
+ def process_request(self, request):
+ assert hasattr(request, 'user'), "The Login Required middleware\
requires authentication middleware to be installed. Edit your\
MIDDLEWARE_CLASSES setting to insert\
'django.contrib.auth.middlware.AuthenticationMiddleware'. If that doesn't\
work, ensure your TEMPLATE_CONTEXT_PROCESSORS setting includes\
'django.core.context_processors.auth'."
- if not request.user.is_authenticated():
- path = request.path_info.lstrip('/')
- if not any(m.match(path) for m in EXEMPT_URLS):
- return HttpResponseRedirect(settings.LOGIN_URL)
+ if not request.user.is_authenticated():
+ path = request.path_info.lstrip('/')
+ if not any(m.match(path) for m in EXEMPT_URLS):
+ return HttpResponseRedirect(settings.LOGIN_URL)
diff --git a/apps/common/templatetags/attribute_tags.py b/apps/common/templatetags/attribute_tags.py
index 0b7df5eb17..3f687341f1 100644
--- a/apps/common/templatetags/attribute_tags.py
+++ b/apps/common/templatetags/attribute_tags.py
@@ -1,6 +1,4 @@
-from django.core.urlresolvers import reverse
-from django.template.defaultfilters import stringfilter
-from django.template import Library, Node, Variable, VariableDoesNotExist
+from django.template import Library
from common.utils import return_attrib
from navigation.api import model_list_columns
diff --git a/apps/common/templatetags/project_tags.py b/apps/common/templatetags/project_tags.py
index cfa1e7acfa..ca179655d1 100644
--- a/apps/common/templatetags/project_tags.py
+++ b/apps/common/templatetags/project_tags.py
@@ -1,4 +1,4 @@
-from django.template import TemplateSyntaxError, Library, VariableDoesNotExist
+from django.template import Library
from django.conf import settings
register = Library()
diff --git a/apps/common/templatetags/settings.py b/apps/common/templatetags/settings.py
index 8f5ac4732f..1ad0e47a84 100644
--- a/apps/common/templatetags/settings.py
+++ b/apps/common/templatetags/settings.py
@@ -1,9 +1,7 @@
import re
-from django.template import Node, Variable
-from django.template import TemplateSyntaxError, Library, VariableDoesNotExist
-from django.template.defaultfilters import stringfilter
-from django.template.defaultfilters import date as datefilter
+from django.template import Node
+from django.template import TemplateSyntaxError, Library
from django.conf import settings
register = Library()
diff --git a/apps/common/utils.py b/apps/common/utils.py
index 18f1f2ef03..cbb201a4a0 100644
--- a/apps/common/utils.py
+++ b/apps/common/utils.py
@@ -30,18 +30,19 @@ def urlquote(link=None, get={}):
if isinstance(link, dict):
# urlqoute({'key': 'value', 'key2': 'value2'}) --> key=value&key2=value2
assert not get, get
- get=link
- link=''
+ get = link
+ link = ''
assert isinstance(get, dict), 'wrong type "%s", dict required' % type(get)
#assert not (link.startswith('http://') or link.startswith('https://')), \
- # 'This method should only quote the url path. It should not start with http(s):// (%s)' % (
+ # 'This method should only quote the url path.
+ # It should not start with http(s):// (%s)' % (
# link)
if get:
# http://code.djangoproject.com/ticket/9089
if isinstance(get, MultiValueDict):
- get=get.lists()
+ get = get.lists()
if link:
- link='%s?' % django_urlquote(link)
+ link = '%s?' % django_urlquote(link)
return u'%s%s' % (link, django_urlencode(get, doseq=True))
else:
return django_urlquote(link)
@@ -71,15 +72,15 @@ def return_attrib(obj, attrib, arguments={}):
#http://snippets.dzone.com/posts/show/5434
#http://snippets.dzone.com/user/jakob
-def pretty_size(size, suffixes = [('B',2**10), ('K',2**20), ('M',2**30), ('G',2**40), ('T',2**50)]):
- for suf, lim in suffixes:
- if size > lim:
- continue
- else:
- return round(size/float(lim/2**10),2).__str__()+suf
+def pretty_size(size, suffixes = [('B', 2**10), ('K', 2**20), ('M', 2**30), ('G', 2**40), ('T', 2**50)]):
+ for suf, lim in suffixes:
+ if size > lim:
+ continue
+ else:
+ return round(size/float(lim/2**10), 2).__str__()+suf
def pretty_size_10(size):
- return pretty_size(size, suffixes = [('B',10**3), ('K',10**6), ('M',10**9), ('G',10**12), ('T',10**15)])
+ return pretty_size(size, suffixes = [('B', 10**3), ('K', 10**6), ('M', 10**9), ('G', 10**12), ('T', 10**15)])
def exists_with_famfam(path):
@@ -98,128 +99,6 @@ def exists_with_famfam(path):
# 2006-03-16
# Thanks to David Kern for fixing some bugs.
-suffixes = [u"II", u"(II)", u"III", u"(III)", u"IV", u"(IV)", u"VI", u"(VI)",
- u"VII", u"(VII)", u"2nd", u"(2nd)", u"3rd", u"(3rd)", u"4th", u"(4th)",
- u"5th", u"(5th)"]
-
-# The names listed here are included by permission from John Cardinal's TMG Utility.
-# http://www.johncardinal.com/tmgutil/index.htm
-# John Cardinal maintains the copyright for this list of names.
-surnames = [
- u"ApShaw", u"d'Albini", "d'Aubigney", u"d'Aubigné", u"d'Autry",
- u"d'Entremont", u"d'Hurst", u"D'ovidio", u"da Graça", u"DaSilva",
- u"DeAnda", u"deAnnethe", u"deAubigne", u"deAubigny", u"DeBardelaben",
- u"DeBardeleben", u"DeBaugh", u"deBeauford", u"DeBerry", u"deBethune",
- u"DeBetuile", u"DeBoard", u"DeBoer", u"DeBohun", u"DeBord", u"DeBose",
- u"DeBrouwer", u"DeBroux", u"DeBruhl", u"deBruijn", u"deBrus", u"deBruse",
- u"deBrusse", u"DeBruyne", u"DeBusk", u"DeCamp", u"deCastilla", u"DeCello",
- u"deClare", u"DeClark", u"DeClerck", u"DeCoste", u"deCote", u"DeCoudres",
- u"DeCoursey", u"DeCredico", u"deCuire", u"DeCuyre", u"DeDominicios",
- u"DeDuyster", u"DeDuytscher", u"DeDuytser", u"deFiennes", u"DeFord",
- u"DeForest", u"DeFrance", u"DeFriece", u"DeGarmo", u"deGraaff", u"DeGraff",
- u"DeGraffenreid", u"DeGraw", u"DeGrenier", u"DeGroats", u"DeGroft",
- u"DeGrote", u"DeHaan", u"DeHaas", u"DeHaddeclive", u"deHannethe",
- u"DeHatclyf", u"DeHaven", u"DeHeer", u"DeJager", u"DeJarnette", u"DeJean",
- u"DeJong", u"deJonge", u"deKemmeter", u"deKirketon", u"DeKroon",
- u"deKype", u"del-Rosario", u"dela Chamotte", u"DeLa Cuadra",
- u"DeLa Force", u"dela Fountaine", u"dela Greña", u"dela Place",
- u"DeLa Ward", u"DeLaci", u"DeLacy", u"DeLaet", u"DeLalonde", u"DelAmarre",
- u"DeLancey", u"DeLascy", u"DelAshmutt", u"DeLassy", u"DeLattre",
- u"DeLaughter", u"DeLay", u"deLessine", u"DelGado", u"DelGaudio",
- u"DeLiberti", u"DeLoache", u"DeLoatch", u"DeLoch", u"DeLockwood",
- u"DeLong", u"DeLozier", u"DeLuca", u"DeLucenay", u"deLucy", u"DeMars",
- u"DeMartino", u"deMaule", u"DeMello", u"DeMinck", u"DeMink", u"DeMoree",
- u"DeMoss", u"DeMott", u"DeMuynck", u"deNiet", u"DeNise", u"DeNure",
- u"DePalma", u"DePasquale", u"dePender", u"dePercy", u"DePoe", u"DePriest",
- u"DePu", u"DePui", u"DePuis", u"DeReeper", u"deRochette", u"deRose",
- u"DeRossett", u"DeRover", u"deRuggele", u"deRuggle", u"DeRuyter",
- u"deSaint-Sauveur", u"DeSantis", u"desCuirs", u"DeSentis", u"DeShane",
- u"DeSilva", u"DesJardins", u"DesMarest", u"deSoleure", u"DeSoto",
- u"DeSpain", u"DeStefano", u"deSwaert", u"deSwart", u"DeVall", u"DeVane",
- u"DeVasher", u"DeVasier", u"DeVaughan", u"DeVaughn", u"DeVault", u"DeVeau",
- u"DeVeault", u"deVilleneuve", u"DeVilliers", u"DeVinney", u"DeVito",
- u"deVogel", u"DeVolder", u"DeVolld", u"DeVore", u"deVos", u"DeVries",
- u"deVries", u"DeWall", u"DeWaller", u"DeWalt", u"deWashington",
- u"deWerly", u"deWessyngton", u"DeWet", u"deWinter", u"DeWitt", u"DeWolf",
- u"DeWolfe", u"DeWolff", u"DeWoody", u"DeYager", u"DeYarmett", u"DeYoung",
- u"DiCicco", u"DiCredico", u"DiFillippi", u"DiGiacomo", u"DiMarco",
- u"DiMeo", u"DiMonte", u"DiNonno", u"DiPietro", u"diPilato", u"DiPrima",
- u"DiSalvo", u"du Bosc", u"du Hurst", u"DuFort", u"DuMars", u"DuPre",
- u"DuPue", u"DuPuy", u"FitzUryan", u"kummel", u"LaBarge", u"LaBarr",
- u"LaBauve", u"LaBean", u"LaBelle", u"LaBerteaux", u"LaBine", u"LaBonte",
- u"LaBorde", u"LaBounty", u"LaBranche", u"LaBrash", u"LaCaille", u"LaCasse",
- u"LaChapelle", u"LaClair", u"LaComb", u"LaCoste", u"LaCount", u"LaCour",
- u"LaCroix", u"LaFarlett", u"LaFarlette", u"LaFerry", u"LaFlamme",
- u"LaFollette", u"LaForge", u"LaFortune", u"LaFoy", u"LaFramboise",
- u"LaFrance", u"LaFuze", u"LaGioia", u"LaGrone", u"LaLiberte", u"LaLonde",
- u"LaLone", u"LaMaster", u"LaMay", u"LaMere", u"LaMont", u"LaMotte",
- u"LaPeer", u"LaPierre", u"LaPlante", u"LaPoint", u"LaPointe", u"LaPorte",
- u"LaPrade", u"LaRocca", u"LaRochelle", u"LaRose", u"LaRue", u"LaVallee",
- u"LaVaque", u"LaVeau", u"LeBleu", u"LeBoeuf", u"LeBoiteaux", u"LeBoyteulx",
- u"LeCheminant", u"LeClair", u"LeClerc", u"LeCompte", u"LeCroy", u"LeDuc",
- u"LeFevbre", u"LeFever", u"LeFevre", u"LeFlore", u"LeGette", u"LeGrand",
- u"LeGrave", u"LeGro", u"LeGros", u"LeJeune", u"LeMaistre", u"LeMaitre",
- u"LeMaster", u"LeMesurier", u"LeMieux", u"LeMoe", u"LeMoigne", u"LeMoine",
- u"LeNeve", u"LePage", u"LeQuire", u"LeQuyer", u"LeRou", u"LeRoy", u"LeSuer",
- u"LeSueur", u"LeTardif", u"LeVally", u"LeVert", u"LoMonaco", u"Macabe",
- u"Macaluso", u"MacaTasney", u"Macaulay", u"Macchitelli", u"Maccoone",
- u"Maccurry", u"Macdermattroe", u"Macdiarmada", u"Macelvaine", u"Macey",
- u"Macgraugh", u"Machan", u"Machann", u"Machum", u"Maciejewski", u"Maciel",
- u"Mackaben", u"Mackall", u"Mackartee", u"Mackay", u"Macken", u"Mackert",
- u"Mackey", u"Mackie", u"Mackin", u"Mackins", u"Macklin", u"Macko",
- u"Macksey", u"Mackwilliams", u"Maclean", u"Maclinden", u"Macomb",
- u"Macomber", u"Macon", u"Macoombs", u"Macraw", u"Macumber", u"Macurdy",
- u"Macwilliams", u"MaGuinness", u"MakCubyn", u"MakCumby", u"Mcelvany",
- u"Mcsherry", u"Op den Dyck", u"Op den Graeff", u"regory", u"Schweißguth",
- u"StElmo", u"StGelais", u"StJacques", u"te Boveldt", u"VanAernam",
- u"VanAken", u"VanAlstine", u"VanAmersfoort", u"VanAntwerp", u"VanArlem",
- u"VanArnam", u"VanArnem", u"VanArnhem", u"VanArnon", u"VanArsdale",
- u"VanArsdalen", u"VanArsdol", u"vanAssema", u"vanAsten", u"VanAuken",
- u"VanAwman", u"VanBaucom", u"VanBebber", u"VanBeber", u"VanBenschoten",
- u"VanBibber", u"VanBilliard", u"vanBlare", u"vanBlaricom", u"VanBuren",
- u"VanBuskirk", u"VanCamp", u"VanCampen", u"VanCleave", u"VanCleef",
- u"VanCleve", u"VanCouwenhoven", u"VanCovenhoven", u"VanCowenhoven",
- u"VanCuren", u"VanDalsem", u"VanDam", u"VanDe Poel", u"vanden Dijkgraaf",
- u"vanden Kommer", u"VanDer Aar", u"vander Gouwe", u"VanDer Honing",
- u"VanDer Hooning", u"vander Horst", u"vander Kroft", u"vander Krogt",
- u"VanDer Meer", u"vander Meulen", u"vander Putte", u"vander Schooren",
- u"VanDer Veen", u"VanDer Ven", u"VanDer Wal", u"VanDer Weide",
- u"VanDer Willigen", u"vander Wulp", u"vander Zanden", u"vander Zwan",
- u"VanDer Zweep", u"VanDeren", u"VanDerlaan", u"VanDerveer",
- u"VanderWoude", u"VanDeursen", u"VanDeusen", u"vanDijk", u"VanDoren",
- u"VanDorn", u"VanDort", u"VanDruff", u"VanDryer", u"VanDusen", u"VanDuzee",
- u"VanDuzen", u"VanDuzer", u"VanDyck", u"VanDyke", u"VanEman", u"VanEmmen",
- u"vanEmmerik", u"VanEngen", u"vanErp", u"vanEssen", u"VanFleet",
- u"VanGalder", u"VanGelder", u"vanGerrevink", u"VanGog", u"vanGogh",
- u"VanGorder", u"VanGordon", u"VanGroningen", u"VanGuilder", u"VanGundy",
- u"VanHaaften", u"VanHaute", u"VanHees", u"vanHeugten", u"VanHise",
- u"VanHoeck", u"VanHoek", u"VanHook", u"vanHoorn", u"VanHoornbeeck",
- u"VanHoose", u"VanHooser", u"VanHorn", u"VanHorne", u"VanHouten",
- u"VanHoye", u"VanHuijstee", u"VanHuss", u"VanImmon", u"VanKersschaever",
- u"VanKeuren", u"VanKleeck", u"VanKoughnet", u"VanKouwenhoven",
- u"VanKuykendaal", u"vanLeeuwen", u"vanLent", u"vanLet", u"VanLeuven",
- u"vanLingen", u"VanLoozen", u"VanLopik", u"VanLuven", u"vanMaasdijk",
- u"VanMele", u"VanMeter", u"vanMoorsel", u"VanMoorst", u"VanMossevelde",
- u"VanNaarden", u"VanNamen", u"VanNemon", u"VanNess", u"VanNest",
- u"VanNimmen", u"vanNobelen", u"VanNorman", u"VanNormon", u"VanNostrunt",
- u"VanNote", u"VanOker", u"vanOosten", u"VanOrden", u"VanOrder",
- u"VanOrma", u"VanOrman", u"VanOrnum", u"VanOstrander", u"VanOvermeire",
- u"VanPelt", u"VanPool", u"VanPoole", u"VanPoorvliet", u"VanPutten",
- u"vanRee", u"VanRhijn", u"vanRijswijk", u"VanRotmer", u"VanSchaick",
- u"vanSchelt", u"VanSchoik", u"VanSchoonhoven", u"VanSciver", u"VanScoy",
- u"VanScoyoc", u"vanSeters", u"VanSickle", u"VanSky", u"VanSnellenberg",
- u"vanStaveren", u"VanStraten", u"VanSuijdam", u"VanTassel", u"VanTassell",
- u"VanTessel", u"VanTexel", u"VanTuyl", u"VanValckenburgh", u"vanValen",
- u"VanValkenburg", u"VanVelsor", u"VanVelzor", u"VanVlack", u"VanVleck",
- u"VanVleckeren", u"VanWaard", u"VanWart", u"VanWassenhove", u"VanWinkle",
- u"VanWoggelum", u"vanWordragen", u"VanWormer", u"VanZuidam",
- u"VanZuijdam", u"VonAdenbach", u"vonAllmen", u"vonBardeleben",
- u"vonBerckefeldt", u"VonBergen", u"vonBreyman", u"VonCannon",
- u"vonFreymann", u"vonHeimburg", u"VonHuben", u"vonKramer",
- u"vonKruchenburg", u"vonPostel", u"VonRohr", u"VonRohrbach",
- u"VonSass", u"VonSasse", u"vonSchlotte", u"VonSchneider", u"VonSeldern",
- u"VonSpringer", u"VonVeyelmann", u"VonZweidorff"]
-
#class Name(str):
# """A Class (based on the string type) that properly capitalizes a name."""
#
@@ -232,6 +111,132 @@ surnames = [
def proper_name(name):
"""Does the work of capitalizing a name (can be a full name)."""
+
+ suffixes = [
+ u"II", u"(II)", u"III", u"(III)", u"IV", u"(IV)", u"VI", u"(VI)",
+ u"VII", u"(VII)", u"2nd", u"(2nd)", u"3rd", u"(3rd)", u"4th", u"(4th)",
+ u"5th", u"(5th)"
+ ]
+
+ # The names listed here are included by permission from John Cardinal's TMG Utility.
+ # http://www.johncardinal.com/tmgutil/index.htm
+ # John Cardinal maintains the copyright for this list of names.
+ surnames = [
+ u"ApShaw", u"d'Albini", "d'Aubigney", u"d'Aubigné", u"d'Autry",
+ u"d'Entremont", u"d'Hurst", u"D'ovidio", u"da Graça", u"DaSilva",
+ u"DeAnda", u"deAnnethe", u"deAubigne", u"deAubigny", u"DeBardelaben",
+ u"DeBardeleben", u"DeBaugh", u"deBeauford", u"DeBerry", u"deBethune",
+ u"DeBetuile", u"DeBoard", u"DeBoer", u"DeBohun", u"DeBord", u"DeBose",
+ u"DeBrouwer", u"DeBroux", u"DeBruhl", u"deBruijn", u"deBrus", u"deBruse",
+ u"deBrusse", u"DeBruyne", u"DeBusk", u"DeCamp", u"deCastilla", u"DeCello",
+ u"deClare", u"DeClark", u"DeClerck", u"DeCoste", u"deCote", u"DeCoudres",
+ u"DeCoursey", u"DeCredico", u"deCuire", u"DeCuyre", u"DeDominicios",
+ u"DeDuyster", u"DeDuytscher", u"DeDuytser", u"deFiennes", u"DeFord",
+ u"DeForest", u"DeFrance", u"DeFriece", u"DeGarmo", u"deGraaff", u"DeGraff",
+ u"DeGraffenreid", u"DeGraw", u"DeGrenier", u"DeGroats", u"DeGroft",
+ u"DeGrote", u"DeHaan", u"DeHaas", u"DeHaddeclive", u"deHannethe",
+ u"DeHatclyf", u"DeHaven", u"DeHeer", u"DeJager", u"DeJarnette", u"DeJean",
+ u"DeJong", u"deJonge", u"deKemmeter", u"deKirketon", u"DeKroon",
+ u"deKype", u"del-Rosario", u"dela Chamotte", u"DeLa Cuadra",
+ u"DeLa Force", u"dela Fountaine", u"dela Greña", u"dela Place",
+ u"DeLa Ward", u"DeLaci", u"DeLacy", u"DeLaet", u"DeLalonde", u"DelAmarre",
+ u"DeLancey", u"DeLascy", u"DelAshmutt", u"DeLassy", u"DeLattre",
+ u"DeLaughter", u"DeLay", u"deLessine", u"DelGado", u"DelGaudio",
+ u"DeLiberti", u"DeLoache", u"DeLoatch", u"DeLoch", u"DeLockwood",
+ u"DeLong", u"DeLozier", u"DeLuca", u"DeLucenay", u"deLucy", u"DeMars",
+ u"DeMartino", u"deMaule", u"DeMello", u"DeMinck", u"DeMink", u"DeMoree",
+ u"DeMoss", u"DeMott", u"DeMuynck", u"deNiet", u"DeNise", u"DeNure",
+ u"DePalma", u"DePasquale", u"dePender", u"dePercy", u"DePoe", u"DePriest",
+ u"DePu", u"DePui", u"DePuis", u"DeReeper", u"deRochette", u"deRose",
+ u"DeRossett", u"DeRover", u"deRuggele", u"deRuggle", u"DeRuyter",
+ u"deSaint-Sauveur", u"DeSantis", u"desCuirs", u"DeSentis", u"DeShane",
+ u"DeSilva", u"DesJardins", u"DesMarest", u"deSoleure", u"DeSoto",
+ u"DeSpain", u"DeStefano", u"deSwaert", u"deSwart", u"DeVall", u"DeVane",
+ u"DeVasher", u"DeVasier", u"DeVaughan", u"DeVaughn", u"DeVault", u"DeVeau",
+ u"DeVeault", u"deVilleneuve", u"DeVilliers", u"DeVinney", u"DeVito",
+ u"deVogel", u"DeVolder", u"DeVolld", u"DeVore", u"deVos", u"DeVries",
+ u"deVries", u"DeWall", u"DeWaller", u"DeWalt", u"deWashington",
+ u"deWerly", u"deWessyngton", u"DeWet", u"deWinter", u"DeWitt", u"DeWolf",
+ u"DeWolfe", u"DeWolff", u"DeWoody", u"DeYager", u"DeYarmett", u"DeYoung",
+ u"DiCicco", u"DiCredico", u"DiFillippi", u"DiGiacomo", u"DiMarco",
+ u"DiMeo", u"DiMonte", u"DiNonno", u"DiPietro", u"diPilato", u"DiPrima",
+ u"DiSalvo", u"du Bosc", u"du Hurst", u"DuFort", u"DuMars", u"DuPre",
+ u"DuPue", u"DuPuy", u"FitzUryan", u"kummel", u"LaBarge", u"LaBarr",
+ u"LaBauve", u"LaBean", u"LaBelle", u"LaBerteaux", u"LaBine", u"LaBonte",
+ u"LaBorde", u"LaBounty", u"LaBranche", u"LaBrash", u"LaCaille", u"LaCasse",
+ u"LaChapelle", u"LaClair", u"LaComb", u"LaCoste", u"LaCount", u"LaCour",
+ u"LaCroix", u"LaFarlett", u"LaFarlette", u"LaFerry", u"LaFlamme",
+ u"LaFollette", u"LaForge", u"LaFortune", u"LaFoy", u"LaFramboise",
+ u"LaFrance", u"LaFuze", u"LaGioia", u"LaGrone", u"LaLiberte", u"LaLonde",
+ u"LaLone", u"LaMaster", u"LaMay", u"LaMere", u"LaMont", u"LaMotte",
+ u"LaPeer", u"LaPierre", u"LaPlante", u"LaPoint", u"LaPointe", u"LaPorte",
+ u"LaPrade", u"LaRocca", u"LaRochelle", u"LaRose", u"LaRue", u"LaVallee",
+ u"LaVaque", u"LaVeau", u"LeBleu", u"LeBoeuf", u"LeBoiteaux", u"LeBoyteulx",
+ u"LeCheminant", u"LeClair", u"LeClerc", u"LeCompte", u"LeCroy", u"LeDuc",
+ u"LeFevbre", u"LeFever", u"LeFevre", u"LeFlore", u"LeGette", u"LeGrand",
+ u"LeGrave", u"LeGro", u"LeGros", u"LeJeune", u"LeMaistre", u"LeMaitre",
+ u"LeMaster", u"LeMesurier", u"LeMieux", u"LeMoe", u"LeMoigne", u"LeMoine",
+ u"LeNeve", u"LePage", u"LeQuire", u"LeQuyer", u"LeRou", u"LeRoy", u"LeSuer",
+ u"LeSueur", u"LeTardif", u"LeVally", u"LeVert", u"LoMonaco", u"Macabe",
+ u"Macaluso", u"MacaTasney", u"Macaulay", u"Macchitelli", u"Maccoone",
+ u"Maccurry", u"Macdermattroe", u"Macdiarmada", u"Macelvaine", u"Macey",
+ u"Macgraugh", u"Machan", u"Machann", u"Machum", u"Maciejewski", u"Maciel",
+ u"Mackaben", u"Mackall", u"Mackartee", u"Mackay", u"Macken", u"Mackert",
+ u"Mackey", u"Mackie", u"Mackin", u"Mackins", u"Macklin", u"Macko",
+ u"Macksey", u"Mackwilliams", u"Maclean", u"Maclinden", u"Macomb",
+ u"Macomber", u"Macon", u"Macoombs", u"Macraw", u"Macumber", u"Macurdy",
+ u"Macwilliams", u"MaGuinness", u"MakCubyn", u"MakCumby", u"Mcelvany",
+ u"Mcsherry", u"Op den Dyck", u"Op den Graeff", u"regory", u"Schweißguth",
+ u"StElmo", u"StGelais", u"StJacques", u"te Boveldt", u"VanAernam",
+ u"VanAken", u"VanAlstine", u"VanAmersfoort", u"VanAntwerp", u"VanArlem",
+ u"VanArnam", u"VanArnem", u"VanArnhem", u"VanArnon", u"VanArsdale",
+ u"VanArsdalen", u"VanArsdol", u"vanAssema", u"vanAsten", u"VanAuken",
+ u"VanAwman", u"VanBaucom", u"VanBebber", u"VanBeber", u"VanBenschoten",
+ u"VanBibber", u"VanBilliard", u"vanBlare", u"vanBlaricom", u"VanBuren",
+ u"VanBuskirk", u"VanCamp", u"VanCampen", u"VanCleave", u"VanCleef",
+ u"VanCleve", u"VanCouwenhoven", u"VanCovenhoven", u"VanCowenhoven",
+ u"VanCuren", u"VanDalsem", u"VanDam", u"VanDe Poel", u"vanden Dijkgraaf",
+ u"vanden Kommer", u"VanDer Aar", u"vander Gouwe", u"VanDer Honing",
+ u"VanDer Hooning", u"vander Horst", u"vander Kroft", u"vander Krogt",
+ u"VanDer Meer", u"vander Meulen", u"vander Putte", u"vander Schooren",
+ u"VanDer Veen", u"VanDer Ven", u"VanDer Wal", u"VanDer Weide",
+ u"VanDer Willigen", u"vander Wulp", u"vander Zanden", u"vander Zwan",
+ u"VanDer Zweep", u"VanDeren", u"VanDerlaan", u"VanDerveer",
+ u"VanderWoude", u"VanDeursen", u"VanDeusen", u"vanDijk", u"VanDoren",
+ u"VanDorn", u"VanDort", u"VanDruff", u"VanDryer", u"VanDusen", u"VanDuzee",
+ u"VanDuzen", u"VanDuzer", u"VanDyck", u"VanDyke", u"VanEman", u"VanEmmen",
+ u"vanEmmerik", u"VanEngen", u"vanErp", u"vanEssen", u"VanFleet",
+ u"VanGalder", u"VanGelder", u"vanGerrevink", u"VanGog", u"vanGogh",
+ u"VanGorder", u"VanGordon", u"VanGroningen", u"VanGuilder", u"VanGundy",
+ u"VanHaaften", u"VanHaute", u"VanHees", u"vanHeugten", u"VanHise",
+ u"VanHoeck", u"VanHoek", u"VanHook", u"vanHoorn", u"VanHoornbeeck",
+ u"VanHoose", u"VanHooser", u"VanHorn", u"VanHorne", u"VanHouten",
+ u"VanHoye", u"VanHuijstee", u"VanHuss", u"VanImmon", u"VanKersschaever",
+ u"VanKeuren", u"VanKleeck", u"VanKoughnet", u"VanKouwenhoven",
+ u"VanKuykendaal", u"vanLeeuwen", u"vanLent", u"vanLet", u"VanLeuven",
+ u"vanLingen", u"VanLoozen", u"VanLopik", u"VanLuven", u"vanMaasdijk",
+ u"VanMele", u"VanMeter", u"vanMoorsel", u"VanMoorst", u"VanMossevelde",
+ u"VanNaarden", u"VanNamen", u"VanNemon", u"VanNess", u"VanNest",
+ u"VanNimmen", u"vanNobelen", u"VanNorman", u"VanNormon", u"VanNostrunt",
+ u"VanNote", u"VanOker", u"vanOosten", u"VanOrden", u"VanOrder",
+ u"VanOrma", u"VanOrman", u"VanOrnum", u"VanOstrander", u"VanOvermeire",
+ u"VanPelt", u"VanPool", u"VanPoole", u"VanPoorvliet", u"VanPutten",
+ u"vanRee", u"VanRhijn", u"vanRijswijk", u"VanRotmer", u"VanSchaick",
+ u"vanSchelt", u"VanSchoik", u"VanSchoonhoven", u"VanSciver", u"VanScoy",
+ u"VanScoyoc", u"vanSeters", u"VanSickle", u"VanSky", u"VanSnellenberg",
+ u"vanStaveren", u"VanStraten", u"VanSuijdam", u"VanTassel", u"VanTassell",
+ u"VanTessel", u"VanTexel", u"VanTuyl", u"VanValckenburgh", u"vanValen",
+ u"VanValkenburg", u"VanVelsor", u"VanVelzor", u"VanVlack", u"VanVleck",
+ u"VanVleckeren", u"VanWaard", u"VanWart", u"VanWassenhove", u"VanWinkle",
+ u"VanWoggelum", u"vanWordragen", u"VanWormer", u"VanZuidam",
+ u"VanZuijdam", u"VonAdenbach", u"vonAllmen", u"vonBardeleben",
+ u"vonBerckefeldt", u"VonBergen", u"vonBreyman", u"VonCannon",
+ u"vonFreymann", u"vonHeimburg", u"VonHuben", u"vonKramer",
+ u"vonKruchenburg", u"vonPostel", u"VonRohr", u"VonRohrbach",
+ u"VonSass", u"VonSasse", u"vonSchlotte", u"VonSchneider", u"VonSeldern",
+ u"VonSpringer", u"VonVeyelmann", u"VonZweidorff"
+ ]
+
hyphen_indexes = []
while name.find('-') > -1:
index = name.find('-')
diff --git a/apps/common/views.py b/apps/common/views.py
index d9dde52e54..f62c570365 100644
--- a/apps/common/views.py
+++ b/apps/common/views.py
@@ -1,15 +1,20 @@
from django.shortcuts import redirect
from django.utils.translation import ugettext as _
from django.contrib import messages
-from django.http import HttpResponse, HttpResponseRedirect, Http404
+from django.http import HttpResponseRedirect
def password_change_done(request):
+ '''View called when the new user password has been accepted'''
+
messages.success(request, _(u'Your password has been successfully changed.'))
return redirect('home')
def multi_object_action_view(request):
+ '''Proxy view called first when usuing a multi object action, which
+ then redirects to the appropiate specialized view'''
+
action = request.GET.get('action', None)
id_list = u','.join([key[3:] for key in request.GET.keys() if key.startswith('pk_')])
diff --git a/apps/converter/api.py b/apps/converter/api.py
index 5b72b4a043..cd69d592a3 100644
--- a/apps/converter/api.py
+++ b/apps/converter/api.py
@@ -1,11 +1,7 @@
import os
-import shlex
import subprocess
-import tempfile
-import shutil
from django.utils.importlib import import_module
-from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
from django.template.defaultfilters import slugify
@@ -17,8 +13,7 @@ from converter.conf.settings import LOW_QUALITY_OPTIONS
from converter.conf.settings import HIGH_QUALITY_OPTIONS
from converter.conf.settings import GRAPHICS_BACKEND
-from exceptions import ConvertError, UnknownFormat, UnpaperError, \
- IdentifyError, UnkownConvertError
+from exceptions import UnpaperError
#from converter.conf.settings import UNOCONV_PATH
from common import TEMPORARY_DIRECTORY
@@ -164,17 +159,9 @@ def convert_document_for_ocr(document, page=0, format='tif'):
#Catch invalid or non existing pages
document_page = document.documentpage_set.get(document=document, page_number=page+1)
for page_transformation in document_page.documentpagetransformation_set.all():
- try:
- if page_transformation.transformation in TRANFORMATION_CHOICES:
- output = TRANFORMATION_CHOICES[page_transformation.transformation] % eval(page_transformation.arguments)
- transformation_list.append(output)
- except Exception, e:
- if request.user.is_staff:
- messages.warning(request, _(u'Error for transformation %(transformation)s:, %(error)s') %
- {'transformation':page_transformation.get_transformation_display(),
- 'error':e})
- else:
- pass
+ if page_transformation.transformation in TRANFORMATION_CHOICES:
+ output = TRANFORMATION_CHOICES[page_transformation.transformation] % eval(page_transformation.arguments)
+ transformation_list.append(output)
except ObjectDoesNotExist:
pass
diff --git a/apps/converter/backends/graphicsmagick.py b/apps/converter/backends/graphicsmagick.py
index d70a3b9844..cb93739ae8 100644
--- a/apps/converter/backends/graphicsmagick.py
+++ b/apps/converter/backends/graphicsmagick.py
@@ -3,8 +3,7 @@ import subprocess
from converter.conf.settings import GM_PATH
from converter.api import QUALITY_DEFAULT, QUALITY_SETTINGS
-from converter.exceptions import ConvertError, UnknownFormat, UnpaperError, \
- IdentifyError, UnkownConvertError
+from converter.exceptions import ConvertError, UnknownFormat, IdentifyError
CONVERTER_ERROR_STRING_NO_DECODER = 'No decode delegate for this image format'
diff --git a/apps/converter/backends/imagemagick.py b/apps/converter/backends/imagemagick.py
index 12a8df04e5..0a8d4a0de1 100644
--- a/apps/converter/backends/imagemagick.py
+++ b/apps/converter/backends/imagemagick.py
@@ -4,8 +4,8 @@ import subprocess
from converter.conf.settings import IM_IDENTIFY_PATH
from converter.conf.settings import IM_CONVERT_PATH
from converter.api import QUALITY_DEFAULT, QUALITY_SETTINGS
-from converter.exceptions import ConvertError, UnknownFormat, UnpaperError, \
- IdentifyError, UnkownConvertError
+from converter.exceptions import ConvertError, UnknownFormat, \
+ IdentifyError
CONVERTER_ERROR_STRING_NO_DECODER = 'no decode delegate for this image format'
diff --git a/apps/converter/exceptions.py b/apps/converter/exceptions.py
index 2a57f39d21..23f4fbcee4 100644
--- a/apps/converter/exceptions.py
+++ b/apps/converter/exceptions.py
@@ -1,18 +1,29 @@
class ConvertError(Exception):
+ '''Base exception for all coverter app exceptions
+ '''
pass
class UnknownFormat(ConvertError):
+ '''Raised when the converter backend can't understand or there
+ isn't an appropiate driver available'''
pass
class UnpaperError(ConvertError):
+ '''Raised by upaper
+ '''
pass
class IdentifyError(ConvertError):
+ '''Raised by identify
+ '''
pass
class UnkownConvertError(ConvertError):
+ '''Raised when an error is found but there is no disernible way to
+ identify the kind of error
+ '''
pass
diff --git a/apps/converter/utils.py b/apps/converter/utils.py
index 2f125733f7..bf678aa58a 100644
--- a/apps/converter/utils.py
+++ b/apps/converter/utils.py
@@ -1,8 +1,3 @@
-import os
-import tempfile
-
-from common import TEMPORARY_DIRECTORY
-
#http://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python
def copyfile(source, dest, buffer_size=1024*1024):
"""
diff --git a/apps/documents/forms.py b/apps/documents/forms.py
index 9ee808037e..f193989503 100644
--- a/apps/documents/forms.py
+++ b/apps/documents/forms.py
@@ -73,7 +73,6 @@ class ImageWidget(forms.widgets.Widget):
if not self.attrs.get('hide_detail_link', False):
for document_page in value.documentpage_set.all():
output.append('
%(text)s' % {
- 'page_number': document_page.page_number,
'url':reverse('document_page_view', args=[document_page.id]),
'text':ugettext(u'Page %s details') % document_page.page_number})
@@ -108,7 +107,7 @@ class DocumentPreviewForm(forms.Form):
super(DocumentPreviewForm, self).__init__(*args, **kwargs)
self.fields['preview'].initial = self.document
- self.fields['preview'].widget.attrs['hide_detail_link']=self.hide_detail_link
+ self.fields['preview'].widget.attrs['hide_detail_link'] = self.hide_detail_link
preview = forms.CharField(widget=ImageWidget())
@@ -141,7 +140,7 @@ class StagingDocumentForm(forms.Form):
def __init__(self, *args, **kwargs):
super(StagingDocumentForm, self).__init__(*args, **kwargs)
try:
- self.fields['staging_file_id'].choices=[(staging_file.id, staging_file) for staging_file in StagingFile.get_all()]
+ self.fields['staging_file_id'].choices = [(staging_file.id, staging_file) for staging_file in StagingFile.get_all()]
except:
pass
@@ -170,17 +169,17 @@ class MetadataForm(forms.Form):
self.metadata_type = kwargs['initial'].pop('metadata_type', None)
self.document_type = kwargs['initial'].pop('document_type', None)
- required=self.document_type.documenttypemetadatatype_set.get(metadata_type=self.metadata_type).required
+ required = self.document_type.documenttypemetadatatype_set.get(metadata_type=self.metadata_type).required
required_string = u''
if required:
- self.fields['value'].required=True
+ self.fields['value'].required = True
required_string = ' (%s)' % ugettext(u'required')
else:
#TODO: FIXME: not working correctly
- self.fields['value'].required=False
+ self.fields['value'].required = False
- self.fields['name'].initial='%s%s' % ((self.metadata_type.title if self.metadata_type.title else self.metadata_type.name), required_string)
- self.fields['id'].initial=self.metadata_type.id
+ self.fields['name'].initial = '%s%s' % ((self.metadata_type.title if self.metadata_type.title else self.metadata_type.name), required_string)
+ self.fields['id'].initial = self.metadata_type.id
if self.metadata_type.default:
try:
self.fields['value'].initial = eval(self.metadata_type.default, AVAILABLE_FUNCTIONS)
@@ -198,7 +197,7 @@ class MetadataForm(forms.Form):
self.fields['value'].required = required
except Exception, err:
self.fields['value'].initial = err
- self.fields['value'].widget=forms.TextInput(attrs={'readonly':'readonly'})
+ self.fields['value'].widget = forms.TextInput(attrs={'readonly':'readonly'})
id = forms.CharField(label=_(u'id'), widget=forms.HiddenInput)
name = forms.CharField(label=_(u'Name'),
@@ -235,7 +234,7 @@ class DocumentCreateWizard(BoundFormWizard):
return super(DocumentCreateWizard, self).render_template(request, form, previous_fields, step, context)
def parse_params(self, request, *args, **kwargs):
- self.extra_context={'step_titles':self.step_titles}
+ self.extra_context = {'step_titles':self.step_titles}
def process_step(self, request, form, step):
#if step == 0:
diff --git a/apps/documents/metadata.py b/apps/documents/metadata.py
index f9a6e0a4da..6313f25527 100644
--- a/apps/documents/metadata.py
+++ b/apps/documents/metadata.py
@@ -52,7 +52,7 @@ def save_metadata(metadata_dict, document):
#unquote_plus handles utf-8?!?
#http://stackoverflow.com/questions/4382875/handling-iri-in-django
- document_metadata.value=unquote_plus(metadata_dict['value'])#.decode('utf-8')
+ document_metadata.value = unquote_plus(metadata_dict['value'])#.decode('utf-8')
document_metadata.save()
diff --git a/apps/documents/models.py b/apps/documents/models.py
index bac1373775..540ae9a091 100644
--- a/apps/documents/models.py
+++ b/apps/documents/models.py
@@ -128,7 +128,7 @@ class Document(models.Model):
total_pages = get_page_count(filepath)
for page_number in range(total_pages):
- document_page, created = DocumentPage.objects.get_or_create(
+ DocumentPage.objects.get_or_create(
document=self, page_number=page_number+1)
os.close(handle)
@@ -197,7 +197,7 @@ class Document(models.Model):
def apply_default_transformations(self):
#Only apply default transformations on new documents
- if DEFAULT_TRANSFORMATIONS and reduce(lambda x,y : x+y, [page.documentpagetransformation_set.count() for page in self.documentpage_set.all()]) == 0:
+ if DEFAULT_TRANSFORMATIONS and reduce(lambda x, y : x+y, [page.documentpagetransformation_set.count() for page in self.documentpage_set.all()]) == 0:
for transformation in DEFAULT_TRANSFORMATIONS:
if 'name' in transformation:
for document_page in self.documentpage_set.all():
diff --git a/apps/documents/staging.py b/apps/documents/staging.py
index ef839ae0bb..7ecb51548c 100644
--- a/apps/documents/staging.py
+++ b/apps/documents/staging.py
@@ -2,10 +2,8 @@ import errno
import os
import hashlib
-from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist
-from django.core.files.uploadedfile import InMemoryUploadedFile, \
- SimpleUploadedFile
+from django.core.files.uploadedfile import SimpleUploadedFile
from django.utils.translation import ugettext
diff --git a/apps/documents/statistics.py b/apps/documents/statistics.py
index 341393a9d6..9a9d10d1d7 100644
--- a/apps/documents/statistics.py
+++ b/apps/documents/statistics.py
@@ -1,5 +1,4 @@
from django.utils.translation import ugettext as _
-from django.core.urlresolvers import reverse
from common.utils import pretty_size, pretty_size_10
from permissions.api import check_permissions
diff --git a/apps/documents/utils.py b/apps/documents/utils.py
index 9e4fa81848..f5f9384e9c 100644
--- a/apps/documents/utils.py
+++ b/apps/documents/utils.py
@@ -1,6 +1,4 @@
import os
-import tempfile
-
from common import TEMPORARY_DIRECTORY
diff --git a/apps/documents/views.py b/apps/documents/views.py
index 7b13b3d4e3..2dcc3f8c15 100644
--- a/apps/documents/views.py
+++ b/apps/documents/views.py
@@ -1,8 +1,8 @@
import zipfile
from django.utils.translation import ugettext as _
-from django.http import HttpResponse, HttpResponseRedirect, Http404
-from django.shortcuts import render_to_response, get_object_or_404, redirect
+from django.http import HttpResponse, HttpResponseRedirect
+from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.contrib import messages
from django.views.generic.list_detail import object_detail, object_list
@@ -11,7 +11,6 @@ from django.views.generic.create_update import create_object, delete_object, upd
from django.core.files.base import File
from django.conf import settings
from django.utils.http import urlencode
-from django.template.defaultfilters import slugify
from django.core.exceptions import ObjectDoesNotExist
from django.core.files.uploadedfile import SimpleUploadedFile
@@ -30,7 +29,6 @@ from documents.conf.settings import USE_STAGING_DIRECTORY
from documents.conf.settings import STAGING_FILES_PREVIEW_SIZE
from documents.conf.settings import PREVIEW_SIZE
from documents.conf.settings import THUMBNAIL_SIZE
-from documents.conf.settings import TRANFORMATION_PREVIEW_SIZE
from documents.conf.settings import GROUP_MAX_RESULTS
from documents.conf.settings import GROUP_SHOW_EMPTY
from documents.conf.settings import GROUP_SHOW_THUMBNAIL
@@ -51,7 +49,7 @@ from forms import DocumentTypeSelectForm, DocumentCreateWizard, \
MetadataFormSet, DocumentPageForm, DocumentPageTransformationForm, \
DocumentContentForm
-from metadata import save_metadata, save_metadata_list, \
+from metadata import save_metadata_list, \
decode_metadata_from_url, metadata_repr_as_list
from models import Document, DocumentMetadata, DocumentType, MetadataType, \
DocumentPage, DocumentPageTransformation
@@ -315,7 +313,7 @@ def document_view(request, document_id):
else:
total_string = ''
- extra_columns = [{'name':'current','attribute':lambda x:
+ extra_columns = [{'name':'current', 'attribute':lambda x:
'' if x == document else ''}]
if GROUP_SHOW_THUMBNAIL:
@@ -708,18 +706,14 @@ def document_page_transformation_edit(request, document_page_transformation_id):
object_id=document_page_transformation_id,
post_save_redirect=reverse('document_page_view', args=[document_page_transformation.document_page_id]),
extra_context={
- 'object_name':_(u'transformation')}
+ 'object_name':_(u'transformation'),
+ 'title':_(u'Edit transformation "%(transformation)s" for page: %(page)s of document: %(document)s') % {
+ 'transformation':document_page_transformation.get_transformation_display(),
+ 'page':document_page_transformation.document_page.page_number,
+ 'document':document_page_transformation.document_page.document},
+ }
)
- return render_to_response('generic_form.html', {
- 'form':form,
- 'object':document_page_transformation.document_page,
- 'title':_(u'Edit transformation "%(transformation)s" for page: %(page)s of document: %(document)s') % {
- 'transformation':document_page_transformation.get_transformation_display(),
- 'page':document_page_transformation.document_page.page_number,
- 'document':document_page_transformation.document_page.document},
- }, context_instance=RequestContext(request))
-
def document_page_transformation_delete(request, document_page_transformation_id):
check_permissions(request.user, 'documents', [PERMISSION_DOCUMENT_TRANSFORM])
@@ -879,7 +873,7 @@ def document_view_simple(request, document_id):
else:
total_string = ''
- extra_columns = [{'name':'current','attribute':lambda x:
+ extra_columns = [{'name':'current', 'attribute':lambda x:
'' if x == document else ''}]
if GROUP_SHOW_THUMBNAIL:
diff --git a/apps/filesystem_serving/api.py b/apps/filesystem_serving/api.py
index 0d43550d8f..2a4a0ffb93 100644
--- a/apps/filesystem_serving/api.py
+++ b/apps/filesystem_serving/api.py
@@ -101,7 +101,7 @@ def next_available_filename(document, metadata_index, path, filename, extension,
if suffix:
target = '_'.join([filename, unicode(suffix)])
filepath = os.path.join(path, os.extsep.join([target, extension]))
- matches=DocumentMetadataIndex.objects.filter(filename=filepath)
+ matches = DocumentMetadataIndex.objects.filter(filename=filepath)
if matches.count() == 0:
document_metadata_index = DocumentMetadataIndex(
document=document, metadata_index=metadata_index,
diff --git a/apps/filesystem_serving/views.py b/apps/filesystem_serving/views.py
index 0020b4c47d..6667bee728 100644
--- a/apps/filesystem_serving/views.py
+++ b/apps/filesystem_serving/views.py
@@ -1,5 +1,5 @@
from django.utils.translation import ugettext_lazy as _
-from django.http import HttpResponse, HttpResponseRedirect, Http404
+from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.contrib import messages
diff --git a/apps/main/templatetags/main_settings_tags.py b/apps/main/templatetags/main_settings_tags.py
index 6346c9cc98..3b227e9a46 100644
--- a/apps/main/templatetags/main_settings_tags.py
+++ b/apps/main/templatetags/main_settings_tags.py
@@ -1,9 +1,7 @@
import re
-from django.template import Node, Variable
-from django.template import TemplateSyntaxError, Library, VariableDoesNotExist
-from django.template.defaultfilters import stringfilter
-from django.template.defaultfilters import date as datefilter
+from django.template import Node
+from django.template import TemplateSyntaxError, Library
from main.conf import settings
register = Library()
diff --git a/apps/main/views.py b/apps/main/views.py
index 58482d6a01..5d6ab0f335 100644
--- a/apps/main/views.py
+++ b/apps/main/views.py
@@ -93,7 +93,7 @@ def check_settings(request):
{'name':'SEARCH_LIMIT', 'value':search_settings.LIMIT},
]
- context={
+ context = {
'title':_(u'settings'),
'object_list':settings,
'hide_link':True,
diff --git a/apps/navigation/api.py b/apps/navigation/api.py
index 6d62a770eb..a493a11b90 100644
--- a/apps/navigation/api.py
+++ b/apps/navigation/api.py
@@ -1,8 +1,5 @@
import copy
-from django.db.utils import DatabaseError
-
-
object_navigation = {}
multi_object_navigation = {}
menu_links = []
@@ -57,7 +54,7 @@ def register_menu(links):
for link in links:
menu_links.append(link)
- menu_links.sort(lambda x,y: 1 if x>y else -1, lambda x:x['position'] if 'position' in x else 1)
+ menu_links.sort(lambda x, y: 1 if x>y else -1, lambda x:x['position'] if 'position' in x else 1)
def register_model_list_columns(model, columns):
diff --git a/apps/navigation/templatetags/navigation_tags.py b/apps/navigation/templatetags/navigation_tags.py
index 71d1cfba55..2044e7f7cb 100644
--- a/apps/navigation/templatetags/navigation_tags.py
+++ b/apps/navigation/templatetags/navigation_tags.py
@@ -1,8 +1,6 @@
-import types
import copy
import re
-from django.conf import settings
from django.core.urlresolvers import reverse, NoReverseMatch
from django.core.urlresolvers import RegexURLResolver, RegexURLPattern, Resolver404, get_resolver
from django.template import TemplateSyntaxError, Library, \
@@ -246,7 +244,6 @@ def object_navigation_template(context):
'horizontal':True,
'object_navigation_links':_get_object_navigation_links(context)
}
- return new_context
@register.tag
diff --git a/apps/ocr/api.py b/apps/ocr/api.py
index e19217cc5a..3f3648d8b9 100644
--- a/apps/ocr/api.py
+++ b/apps/ocr/api.py
@@ -6,12 +6,8 @@ import subprocess
import tempfile
from django.utils.translation import ugettext as _
-from django.contrib import messages
from common import TEMPORARY_DIRECTORY
-
-from documents.models import Document
-
from converter.api import convert_document_for_ocr
from ocr.conf.settings import TESSERACT_PATH
diff --git a/apps/ocr/models.py b/apps/ocr/models.py
index 20b891134a..095036ffd2 100644
--- a/apps/ocr/models.py
+++ b/apps/ocr/models.py
@@ -5,8 +5,8 @@ from django.core.exceptions import ObjectDoesNotExist
from documents.models import Document
-from literals import DOCUMENTQUEUE_STATE_STOPPED,\
- DOCUMENTQUEUE_STATE_CHOICES, QUEUEDOCUMENT_STATE_PENDING,\
+from literals import DOCUMENTQUEUE_STATE_STOPPED, \
+ DOCUMENTQUEUE_STATE_CHOICES, QUEUEDOCUMENT_STATE_PENDING, \
QUEUEDOCUMENT_STATE_CHOICES
from exceptions import AlreadyQueued
diff --git a/apps/ocr/tasks.py b/apps/ocr/tasks.py
index 36c4e70a2d..98ff963a84 100644
--- a/apps/ocr/tasks.py
+++ b/apps/ocr/tasks.py
@@ -1,15 +1,13 @@
-from datetime import date, timedelta, datetime
+from datetime import timedelta, datetime
import platform
import time
import random
from django.db.models import Q
-from celery.task import Task, PeriodicTask
+from celery.task import PeriodicTask
from celery.decorators import task
-from documents import Document
-
from ocr.api import do_document_ocr
from literals import QUEUEDOCUMENT_STATE_PENDING, \
QUEUEDOCUMENT_STATE_PROCESSING, DOCUMENTQUEUE_STATE_ACTIVE, \
diff --git a/apps/ocr/views.py b/apps/ocr/views.py
index 48ccd56eff..66281214a0 100644
--- a/apps/ocr/views.py
+++ b/apps/ocr/views.py
@@ -1,13 +1,11 @@
import datetime
-from django.http import HttpResponse, HttpResponseRedirect, Http404
+from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response, get_object_or_404, redirect
from django.template import RequestContext
from django.contrib import messages
-from django.views.generic.list_detail import object_detail, object_list
+from django.views.generic.list_detail import object_list
from django.core.urlresolvers import reverse
-from django.views.generic.create_update import create_object, delete_object, update_object
-from django.conf import settings
from django.utils.translation import ugettext as _
from permissions.api import check_permissions
diff --git a/apps/permissions/admin.py b/apps/permissions/admin.py
index 96ae45f5e5..8fd827998e 100644
--- a/apps/permissions/admin.py
+++ b/apps/permissions/admin.py
@@ -1,8 +1,6 @@
from django.contrib import admin
from models import Permission, PermissionHolder, Role, RoleMember
-from django.contrib.contenttypes import generic
-
class PermissionHolderInline(admin.StackedInline):
model = PermissionHolder
diff --git a/apps/permissions/api.py b/apps/permissions/api.py
index 19b3f96f38..f31c7c3e14 100644
--- a/apps/permissions/api.py
+++ b/apps/permissions/api.py
@@ -1,4 +1,3 @@
-from django.http import Http404
from django.contrib.auth.models import User
from django.contrib.auth.models import Group
from django.db.utils import DatabaseError
@@ -20,7 +19,7 @@ def register_permissions(namespace, permissions):
try:
permission_obj, created = Permission.objects.get_or_create(
namespace=namespace, name=permission['name'])
- permission_obj.label=unicode(permission['label'])
+ permission_obj.label = unicode(permission['label'])
permission_obj.save()
except DatabaseError:
#Special case for ./manage.py syncdb
diff --git a/apps/permissions/middleware/permission_denied_middleware.py b/apps/permissions/middleware/permission_denied_middleware.py
index e4e0cac081..2902d7c0af 100644
--- a/apps/permissions/middleware/permission_denied_middleware.py
+++ b/apps/permissions/middleware/permission_denied_middleware.py
@@ -11,8 +11,8 @@ class PermissionDeniedMiddleware(object):
try:
# Handle import error but allow any type error from view
callback = getattr(import_module(settings.ROOT_URLCONF),'handler403')
- return callback(request,exception)
- except (ImportError,AttributeError):
+ return callback(request, exception)
+ except (ImportError, AttributeError):
# Try to get a 403 template
try:
# First look for a user-defined template named "403.html"
diff --git a/apps/permissions/models.py b/apps/permissions/models.py
index 06c5549c04..013a236812 100644
--- a/apps/permissions/models.py
+++ b/apps/permissions/models.py
@@ -7,7 +7,7 @@ from django.contrib.contenttypes import generic
class PermissionManager(models.Manager):
def get_for_holder(self, holder):
ct = ContentType.objects.get_for_model(holder)
- return [Permission.objects.get(id=id) for id in PermissionHolder.objects.filter(holder_type=ct,holder_id=holder.id).values_list('permission_id', flat=True)]
+ return [Permission.objects.get(id=id) for id in PermissionHolder.objects.filter(holder_type=ct, holder_id=holder.id).values_list('permission_id', flat=True)]
class Permission(models.Model):
namespace = models.CharField(max_length=64, verbose_name=_(u'namespace'))
diff --git a/apps/permissions/templatetags/permission_tags.py b/apps/permissions/templatetags/permission_tags.py
index 31eb2b60eb..7f77d3c198 100644
--- a/apps/permissions/templatetags/permission_tags.py
+++ b/apps/permissions/templatetags/permission_tags.py
@@ -1,6 +1,6 @@
from django.core.exceptions import PermissionDenied
from django.template import TemplateSyntaxError, Library, \
- VariableDoesNotExist, Node, Variable
+ Node, Variable
from permissions.api import check_permissions as check_permission_function
@@ -32,7 +32,7 @@ def check_permissions(parser, token):
# Splitting by None == splitting by spaces.
tag_name, args = token.contents.split(None, 1)
except ValueError:
- raise template.TemplateSyntaxError, "%r tag requires arguments" % token.contents.split()[0]
+ raise TemplateSyntaxError, "%r tag requires arguments" % token.contents.split()[0]
return CheckPermissionsNode(*args.split())
diff --git a/apps/permissions/views.py b/apps/permissions/views.py
index e9180fe020..8b9d031c09 100644
--- a/apps/permissions/views.py
+++ b/apps/permissions/views.py
@@ -1,12 +1,11 @@
from django.utils.translation import ugettext as _
-from django.http import HttpResponse, HttpResponseRedirect, Http404
-from django.shortcuts import render_to_response, get_object_or_404, redirect
+from django.http import HttpResponseRedirect
+from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.contrib import messages
-from django.views.generic.list_detail import object_detail, object_list
+from django.views.generic.list_detail import object_list
from django.core.urlresolvers import reverse
from django.views.generic.create_update import create_object, delete_object, update_object
-from django.conf import settings
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ObjectDoesNotExist
@@ -55,7 +54,7 @@ def role_permissions(request, role_id):
role = get_object_or_404(Role, pk=role_id)
form = RoleForm_view(instance=role)
- role_permissions = Permission.objects.get_for_holder(role)
+ role_permissions_list = Permission.objects.get_for_holder(role)
subtemplates_dict = [
{
'name':'generic_list_subtemplate.html',
@@ -64,7 +63,7 @@ def role_permissions(request, role_id):
'extra_columns':[
{'name':_(u'namespace'), 'attribute':'namespace'},
{'name':_(u'name'), 'attribute':'label'},
- {'name':_(u'state'), 'attribute':lambda x: _role_permission_link(role, x, role_permissions)}
+ {'name':_(u'state'), 'attribute':lambda x: _role_permission_link(role, x, role_permissions_list)}
],
'hide_link':True,
'hide_object':True,
diff --git a/apps/storage/backends/filebasedstorage.py b/apps/storage/backends/filebasedstorage.py
index 2a358f8426..957304539c 100644
--- a/apps/storage/backends/filebasedstorage.py
+++ b/apps/storage/backends/filebasedstorage.py
@@ -9,5 +9,5 @@ class FileBasedStorage(FileSystemStorage):
def __init__(self, *args, **kwargs):
super(FileBasedStorage, self).__init__(*args, **kwargs)
- self.location=FILESTORAGE_LOCATION
+ self.location = FILESTORAGE_LOCATION