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'\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