[TASK] Big unicode cleanup.
This commit is contained in:
parent
9b06e3aac6
commit
13058a41f7
|
@ -10,12 +10,12 @@ from frontend.views import IndexView, ProjectView, ProjectUpdateView, ProjectPer
|
|||
|
||||
urlpatterns = patterns(
|
||||
'',
|
||||
url(r'^$', IndexView.as_view(), name='frontend-index'),
|
||||
url(r'^project/$', ProjectView.as_view(), name='frontend-projects'),
|
||||
url(r'^project/(?P<project_id>\d+)/update$', ProjectUpdateView.as_view(), name='frontend-project-update'),
|
||||
url(r'^project/(?P<project_id>\d+)/map/person$', ProjectPersonView.as_view(), name='frontend-project-view-person'),
|
||||
url(r'^project/(?P<project_id>\d+)/map/person/(?P<person_uuid>[\w\d-]+)$', ProjectMapPersonView.as_view(), name='frontend-project-map-person'),
|
||||
url(r'^login/$', login_wrap, name='frontend-login'),
|
||||
url(r'^logout/$', logout_wrap, name='frontend-logout'),
|
||||
url(r'^$', IndexView.as_view(), name=u'frontend-index'),
|
||||
url(r'^project/$', ProjectView.as_view(), name=u'frontend-projects'),
|
||||
url(r'^project/(?P<project_id>\d+)/update$', ProjectUpdateView.as_view(), name=u'frontend-project-update'),
|
||||
url(r'^project/(?P<project_id>\d+)/map/person$', ProjectPersonView.as_view(), name=u'frontend-project-view-person'),
|
||||
url(r'^project/(?P<project_id>\d+)/map/person/(?P<person_uuid>[\w\d-]+)$', ProjectMapPersonView.as_view(), name=u'frontend-project-map-person'),
|
||||
url(r'^login/$', login_wrap, name=u'frontend-login'),
|
||||
url(r'^logout/$', logout_wrap, name=u'frontend-logout'),
|
||||
url(r'^admin/', include(admin.site.urls)),
|
||||
)
|
|
@ -9,42 +9,42 @@ class NewProjectForm(forms.ModelForm):
|
|||
def __init__(self, *args, **kwargs):
|
||||
super(NewProjectForm, self).__init__(*args, **kwargs)
|
||||
self.helper = FormHelper()
|
||||
self.helper.form_class = 'form-horizontal'
|
||||
self.helper.label_class = 'col-lg-2'
|
||||
self.helper.field_class = 'col-lg-4'
|
||||
self.helper.form_method = 'post'
|
||||
self.helper.form_class = u'form-horizontal'
|
||||
self.helper.label_class = u'col-lg-2'
|
||||
self.helper.field_class = u'col-lg-4'
|
||||
self.helper.form_method = u'post'
|
||||
self.helper.layout = Layout(
|
||||
'name',
|
||||
'description',
|
||||
Submit('send', 'Create', css_class='btn-default')
|
||||
u'name',
|
||||
u'description',
|
||||
Submit(u'send', u'Create', css_class=u'btn-default')
|
||||
)
|
||||
|
||||
name = forms.CharField(
|
||||
label="Name",
|
||||
label=u"Name",
|
||||
max_length=255,
|
||||
required=True,
|
||||
)
|
||||
|
||||
description = forms.CharField(
|
||||
label="Description",
|
||||
label=u"Description",
|
||||
required=True,
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Project
|
||||
fields = ['name', 'description']
|
||||
fields = [u'name', u'description']
|
||||
|
||||
class FileUploadForm(forms.Form):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(FileUploadForm, self).__init__(*args, **kwargs)
|
||||
self.helper = FormHelper()
|
||||
self.helper.form_class = 'form-horizontal'
|
||||
self.helper.label_class = 'col-lg-2'
|
||||
self.helper.field_class = 'col-lg-4'
|
||||
self.helper.form_method = 'post'
|
||||
self.helper.form_class = u'form-horizontal'
|
||||
self.helper.label_class = u'col-lg-2'
|
||||
self.helper.field_class = u'col-lg-4'
|
||||
self.helper.form_method = u'post'
|
||||
self.helper.layout = Layout(
|
||||
'file',
|
||||
Submit('send', 'Upload', css_class='btn-default')
|
||||
u'file',
|
||||
Submit(u'send', u'Upload', css_class=u'btn-default')
|
||||
)
|
||||
|
||||
file = forms.FileField()
|
||||
|
@ -54,17 +54,17 @@ class PersonMapForm(forms.Form):
|
|||
def __init__(self, *args, **kwargs):
|
||||
super(PersonMapForm, self).__init__(*args, **kwargs)
|
||||
self.helper = FormHelper()
|
||||
self.helper.form_class = 'form-horizontal'
|
||||
self.helper.label_class = 'col-lg-2'
|
||||
self.helper.field_class = 'col-lg-4'
|
||||
self.helper.form_method = 'post'
|
||||
self.helper.form_class = u'form-horizontal'
|
||||
self.helper.label_class = u'col-lg-2'
|
||||
self.helper.field_class = u'col-lg-4'
|
||||
self.helper.form_method = u'post'
|
||||
self.helper.layout = Layout(
|
||||
'action',
|
||||
'global_identity',
|
||||
Submit('skip', 'Skip', css_class='btn-default'),
|
||||
Submit('save-continue', 'Save and continue', css_class='btn-default'),
|
||||
u'action',
|
||||
u'global_identity',
|
||||
Submit(u'skip', u'Skip', css_class=u'btn-default'),
|
||||
Submit(u'save-continue', u'Save and continue', css_class=u'btn-default'),
|
||||
)
|
||||
|
||||
action = forms.ChoiceField(choices=[('new', 'Create new global Identity'), ('existing', 'Map to existing identity')], initial='new', widget=forms.RadioSelect())
|
||||
action = forms.ChoiceField(choices=[(u'new', u'Create new global Identity'), (u'existing', u'Map to existing identity')], initial=u'new', widget=forms.RadioSelect())
|
||||
global_identity = forms.ModelChoiceField(queryset=PersonGlobalIdentity.objects.all(), required=False)
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Project(models.Model):
|
||||
""" Model representing a citavi project. """
|
||||
name = models.CharField(max_length=255)
|
||||
|
@ -10,12 +9,12 @@ class Project(models.Model):
|
|||
associated_filename = models.CharField(max_length=255, blank=True, null=True)
|
||||
|
||||
def __unicode__(self):
|
||||
repr = self.name
|
||||
temp = unicode(self.name)
|
||||
if self.associated_filename:
|
||||
repr += " (" + self.associated_filename + ")"
|
||||
temp += u" (" + unicode(self.associated_filename) + u")"
|
||||
else:
|
||||
repr += " (empty)"
|
||||
return repr
|
||||
temp += u" (empty)"
|
||||
return temp
|
||||
|
||||
|
||||
class PersonGlobalIdentity(models.Model):
|
||||
|
@ -24,8 +23,9 @@ class PersonGlobalIdentity(models.Model):
|
|||
# TODO: Extend this for further stuff - maybe vivo external url or something?
|
||||
|
||||
def __unicode__(self):
|
||||
repr = "<PersonGlobalIdentity ID=" + str(self.id) + ", type=" + self.type + ">"
|
||||
return repr
|
||||
from service.Mapper import PersonMapper
|
||||
pm = PersonMapper()
|
||||
return u"<PersonGlobalIdentity repr=" + pm.get_representation_for_global_identity(self) + u" ID=" + unicode(self.id) + u", type=" + unicode(self.type) + u">"
|
||||
|
||||
|
||||
class CitaviProjectIdentity(models.Model):
|
||||
|
@ -36,5 +36,4 @@ class CitaviProjectIdentity(models.Model):
|
|||
preferred = models.BooleanField()
|
||||
|
||||
def __unicode__(self):
|
||||
repr = "<CitaviProjectIdentity project=" + str(self.project) + ", citavi_uuid=" + self.citavi_uuid + ", global_identity=" + str(self.global_identity) + ", preferred=" + str(self.preferred) + ">"
|
||||
return repr
|
||||
return u"<CitaviProjectIdentity project=" + unicode(self.project) + u", citavi_uuid=" + unicode(self.citavi_uuid) + u", global_identity=" + unicode(self.global_identity) + u", preferred=" + unicode(self.preferred) + u">"
|
||||
|
|
|
@ -11,11 +11,6 @@
|
|||
<p><strong>Description:</strong> {{project.description}}</h3>
|
||||
<p><strong>Current uploaded database filename:</strong> {{project.associated_filename}}</p>
|
||||
|
||||
<!--
|
||||
<h3>Upload the new database version</h3>
|
||||
<p>{% crispy form %}</p>
|
||||
-->
|
||||
|
||||
<h3>Stats</h3>
|
||||
<p>
|
||||
<strong>Mapped:</strong> {{mapped_persons|length}}<br>
|
||||
|
|
|
@ -27,8 +27,8 @@
|
|||
<td>{{project.description}}</td>
|
||||
<td>{{project.associated_filename}}</td>
|
||||
<td>
|
||||
<a href="{% url 'frontend-project-update' project.id %}">Update project</a>
|
||||
<a href="{% url 'frontend-project-view-person' project.id %}">Persons</a>
|
||||
<a href="{% url 'frontend-project-update' project.id %}">Update</a>,
|
||||
<a href="{% url 'frontend-project-view-person' project.id %}">Map</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
|
|
@ -17,25 +17,25 @@ from frontend.forms import NewProjectForm, FileUploadForm, PersonMapForm
|
|||
|
||||
from frontend.models import Project
|
||||
|
||||
FRONTEND_PAGE_NAME = 'Citavi Mapper'
|
||||
FRONTEND_PAGE_NAME = u'Citavi Mapper'
|
||||
|
||||
# Login wrapper functions
|
||||
def login_wrap(*args, **kwargs):
|
||||
""" Wrapper function for login page. """
|
||||
kwargs['extra_context'] = {
|
||||
'page': {
|
||||
'name': FRONTEND_PAGE_NAME,
|
||||
'title': 'Login'
|
||||
kwargs[u'extra_context'] = {
|
||||
u'page': {
|
||||
u'name': FRONTEND_PAGE_NAME,
|
||||
u'title': 'Login'
|
||||
}
|
||||
}
|
||||
return login(*args, **kwargs)
|
||||
|
||||
def logout_wrap(*args, **kwargs):
|
||||
""" Wrapper function for logout page. """
|
||||
kwargs['extra_context'] = {
|
||||
'page': {
|
||||
'name': FRONTEND_PAGE_NAME,
|
||||
'title': 'Logout'
|
||||
kwargs[u'extra_context'] = {
|
||||
u'page': {
|
||||
u'name': FRONTEND_PAGE_NAME,
|
||||
u'title': 'Logout'
|
||||
}
|
||||
}
|
||||
return logout(*args, **kwargs)
|
||||
|
@ -44,9 +44,9 @@ def logout_wrap(*args, **kwargs):
|
|||
# My base classes for views
|
||||
class MyViewMixin(object):
|
||||
""" Basic view mixin to add global variables to all templates. """
|
||||
template_name = 'base.html'
|
||||
template_name = u'base.html'
|
||||
page_name = FRONTEND_PAGE_NAME
|
||||
page_title = 'BASE'
|
||||
page_title = u'BASE'
|
||||
|
||||
def get_page_data(self):
|
||||
return {
|
||||
|
@ -95,18 +95,18 @@ class ProtectedUpdateView(LoggedInMixin, MyUpdateView):
|
|||
|
||||
# Actual Views
|
||||
class IndexView(ProtectedTemplateView):
|
||||
template_name = 'index.html'
|
||||
page_title = 'Index'
|
||||
template_name = u'index.html'
|
||||
page_title = u'Index'
|
||||
|
||||
|
||||
class ProjectView(ProtectedFormView):
|
||||
template_name = 'projects.html'
|
||||
page_title = 'Projects'
|
||||
template_name = u'projects.html'
|
||||
page_title = u'Projects'
|
||||
form_class = NewProjectForm
|
||||
success_url = '/project'
|
||||
success_url = u'/project'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
kwargs[u'projects'] = Project.objects.order_by('id')
|
||||
kwargs[u'projects'] = Project.objects.order_by(u'id')
|
||||
return super(ProjectView, self).get_context_data(**kwargs)
|
||||
|
||||
def form_valid(self, form):
|
||||
|
@ -115,11 +115,11 @@ class ProjectView(ProtectedFormView):
|
|||
|
||||
|
||||
class ProjectUpdateView(ProtectedFormView, SingleObjectMixin):
|
||||
template_name = 'project/update.html'
|
||||
page_title = 'Update project'
|
||||
template_name = u'project/update.html'
|
||||
page_title = u'Update project'
|
||||
form_class = FileUploadForm
|
||||
|
||||
success_url = '/project/'
|
||||
success_url = u'/project/'
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
self.project_id = kwargs[u'project_id']
|
||||
|
@ -128,16 +128,17 @@ class ProjectUpdateView(ProtectedFormView, SingleObjectMixin):
|
|||
|
||||
def post(self, request, *args, **kwargs):
|
||||
self.project_id = kwargs[u'project_id']
|
||||
self.success_url = self.success_url + self.project_id + '/update'
|
||||
self.object = Project.objects.get(pk=self.project_id)
|
||||
self.success_url = self.success_url + self.project_id + u'/update'
|
||||
return super(ProjectUpdateView, self).post(request, *args, **kwargs)
|
||||
|
||||
def form_valid(self, form, *args, **kwargs):
|
||||
""" This form_valid handles the file upload. """
|
||||
original_file = form.files[u'file']
|
||||
original_filename = str(original_file)
|
||||
original_filename = unicode(original_file)
|
||||
original_contentfile = ContentFile(original_file.read())
|
||||
""" Put file into temporary folder for analysis """
|
||||
target_filename = 'tmp/project_' + str(self.project_id) + '.ctt4'
|
||||
target_filename = u'tmp/project_' + unicode(self.project_id) + u'.ctt4'
|
||||
relative_path = default_storage.save(target_filename, original_contentfile)
|
||||
temp_sqlite = os.path.join(settings.MEDIA_ROOT, relative_path)
|
||||
|
||||
|
@ -154,7 +155,7 @@ class ProjectUpdateView(ProtectedFormView, SingleObjectMixin):
|
|||
""" TODO: Put up an error message or something. """
|
||||
pass
|
||||
else:
|
||||
target_filename = 'citavi/project_' + str(self.project_id) + '.ctt4'
|
||||
target_filename = u'citavi/project_' + unicode(self.project_id) + u'.ctt4'
|
||||
""" Remove eventually pre-existing citavi file. """
|
||||
if default_storage.exists(target_filename):
|
||||
default_storage.delete(target_filename)
|
||||
|
@ -177,11 +178,11 @@ class ProjectUpdateView(ProtectedFormView, SingleObjectMixin):
|
|||
|
||||
|
||||
class ProjectPersonView(ProtectedFormView, SingleObjectMixin):
|
||||
template_name = 'project/view-person.html'
|
||||
page_title = 'Person List View'
|
||||
template_name = u'project/view-person.html'
|
||||
page_title = u'Person List View'
|
||||
form_class = FileUploadForm
|
||||
|
||||
success_url = '/projects/'
|
||||
success_url = u'/project/'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
project = self.object
|
||||
|
@ -207,11 +208,11 @@ class ProjectPersonView(ProtectedFormView, SingleObjectMixin):
|
|||
|
||||
|
||||
class ProjectMapPersonView(ProtectedFormView, SingleObjectMixin):
|
||||
template_name = 'project/map-person.html'
|
||||
page_title = 'Person Mapping'
|
||||
template_name = u'project/map-person.html'
|
||||
page_title = u'Person Mapping'
|
||||
form_class = PersonMapForm
|
||||
|
||||
success_url = '/project'
|
||||
success_url = u'/project'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
project = self.object
|
||||
|
@ -239,11 +240,11 @@ class ProjectMapPersonView(ProtectedFormView, SingleObjectMixin):
|
|||
pm = Mapper.PersonMapper()
|
||||
person = pm.get_person_by_uuid(self.object, self.person_uuid)
|
||||
|
||||
print str(form.cleaned_data)
|
||||
print unicode(form.cleaned_data)
|
||||
# TODO: do mapping according to parameters, override success_url to point to next person!
|
||||
if form.cleaned_data['action'] == 'new':
|
||||
if form.cleaned_data[u'action'] == u'new':
|
||||
pm.create_new_identity(self.object, person)
|
||||
elif form.cleaned_data['action'] == 'skip':
|
||||
elif form.cleaned_data[u'action'] == u'skip':
|
||||
pass
|
||||
|
||||
return super(ProjectMapPersonView, self).form_valid(form)
|
||||
|
|
|
@ -31,19 +31,19 @@ class Project():
|
|||
except:
|
||||
self._is_error = True
|
||||
# TODO: better error handling!
|
||||
print "An error occured within a get_persons call!"
|
||||
print u"An error occured within a get_persons call!"
|
||||
return False
|
||||
|
||||
def get_person_by_uuid(self, uuid):
|
||||
""" Returns a person from the Citavi project by their uuid. """
|
||||
try:
|
||||
person_class = self._sa_sqlite_autobase.classes.Person
|
||||
citavi_person = self._sa_sqlite_session.query(person_class).filter('ID=\'' + str(uuid) + '\'').all()
|
||||
citavi_person = self._sa_sqlite_session.query(person_class).filter(u'ID=\'' + unicode(uuid) + u'\'').all()
|
||||
return citavi_person[0]
|
||||
except:
|
||||
self._is_error = True
|
||||
# TODO: better error handling!
|
||||
print "An error occured within a get_person_by_uuid call!"
|
||||
print u"An error occured within a get_person_by_uuid call!"
|
||||
return False
|
||||
|
||||
def open(self):
|
||||
|
@ -59,7 +59,7 @@ class Project():
|
|||
def _open(self):
|
||||
""" Internal method to open a citavi project file. """
|
||||
try:
|
||||
self._sa_sqlite_engine = create_engine('sqlite+pysqlite:///' + self.sqlite_file)
|
||||
self._sa_sqlite_engine = create_engine(u'sqlite+pysqlite:///' + self.sqlite_file)
|
||||
self._sa_sqlite_session = Session(self._sa_sqlite_engine)
|
||||
self._sa_sqlite_meta = MetaData(bind=self._sa_sqlite_engine)
|
||||
self._sa_sqlite_meta.reflect()
|
||||
|
@ -96,7 +96,7 @@ class ProjectManager():
|
|||
self._projects.clear()
|
||||
|
||||
def get_path_for_project_id(self, project_id):
|
||||
return 'media/citavi/project_' + str(project_id) + '.ctt4'
|
||||
return u'media/citavi/project_' + unicode(project_id) + u'.ctt4'
|
||||
|
||||
def _add_project(self, project_id):
|
||||
""" Internal method to add a Project instance if not existing. """
|
||||
|
|
|
@ -26,3 +26,7 @@ class PersonIdentityManager():
|
|||
def get_mapped_identities_for_project(self, project_instance):
|
||||
""" Returns all existing (mapped) identies for a given project. """
|
||||
return CitaviProjectIdentity.objects.filter(project=project_instance).all()
|
||||
|
||||
def get_citavi_identity_by_global_identity(self, global_identity):
|
||||
""" Returns the preferred citavi identity based on their global identity. """
|
||||
return CitaviProjectIdentity.objects.filter(global_identity=global_identity, preferred=True).all()[0]
|
||||
|
|
|
@ -46,3 +46,12 @@ class PersonMapper():
|
|||
def get_person_by_uuid(self, project, uuid):
|
||||
""" Returns a person from a citavi project by uuid. """
|
||||
return self._citavi_project_manager.get_person_by_uuid(project.id, uuid)
|
||||
|
||||
def get_representation_for_global_identity(self, global_identity):
|
||||
""" Returns a unicode string representation for a global identiy. """
|
||||
if global_identity.type == 'citavi':
|
||||
citavi_identity = self._person_identity_manager.get_citavi_identity_by_global_identity(global_identity)
|
||||
citavi_person = self._citavi_project_manager.get_person_by_uuid(citavi_identity.project_id, citavi_identity.citavi_uuid)
|
||||
return unicode(citavi_person.ID) + u" " + unicode(citavi_person.FirstName) + u" " + unicode(citavi_person.LastName)
|
||||
else:
|
||||
return unicode(global_identity)
|
Loading…
Reference in New Issue