Fixed error and some warning returned by pylint
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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'<ul class="%s">' % 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'<li><a href="%s">%s</a></li>' % (self.queryset.get(pk=index).get_absolute_url(), string)
|
||||
output += u'<li><a href="%s">%s</a></li>' % (
|
||||
self.queryset.get(pk=index).get_absolute_url(),
|
||||
string)
|
||||
except AttributeError:
|
||||
output += u'<li>%s</li>' % (string)
|
||||
else:
|
||||
output += u'<li>%s</li>' % string
|
||||
output += u'<li>%s</li>' % string
|
||||
else:
|
||||
output += u'<li>%s</li>' % _(u"None")
|
||||
return mark_safe(output + u'</ul>\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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from django.template import TemplateSyntaxError, Library, VariableDoesNotExist
|
||||
from django.template import Library
|
||||
from django.conf import settings
|
||||
|
||||
register = Library()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 <kernd@reasonspace.com> 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('-')
|
||||
|
||||
@@ -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_')])
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
"""
|
||||
|
||||
@@ -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('<br/><a href="%(url)s"><span class="famfam active famfam-page_white"></span>%(text)s</a>' % {
|
||||
'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:
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
|
||||
@@ -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():
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
|
||||
from common import TEMPORARY_DIRECTORY
|
||||
|
||||
|
||||
@@ -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:
|
||||
'<span class="famfam active famfam-resultset_previous"></span>' 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:
|
||||
'<span class="famfam active famfam-resultset_previous"></span>' if x == document else ''}]
|
||||
|
||||
if GROUP_SHOW_THUMBNAIL:
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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, \
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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'))
|
||||
|
||||
@@ -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())
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user