[TASK] Show more details for mapped identities.
This commit is contained in:
parent
13058a41f7
commit
fe3d26f905
@ -61,10 +61,11 @@ class PersonMapForm(forms.Form):
|
|||||||
self.helper.layout = Layout(
|
self.helper.layout = Layout(
|
||||||
u'action',
|
u'action',
|
||||||
u'global_identity',
|
u'global_identity',
|
||||||
|
u'preferred_identity',
|
||||||
Submit(u'skip', u'Skip', css_class=u'btn-default'),
|
Submit(u'skip', u'Skip', css_class=u'btn-default'),
|
||||||
Submit(u'save-continue', u'Save and continue', css_class=u'btn-default'),
|
Submit(u'save-continue', u'Save and continue', css_class=u'btn-default'),
|
||||||
)
|
)
|
||||||
|
|
||||||
action = forms.ChoiceField(choices=[(u'new', u'Create new global Identity'), (u'existing', u'Map to existing identity')], initial=u'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)
|
global_identity = forms.ModelChoiceField(queryset=PersonGlobalIdentity.objects.all(), required=False)
|
||||||
|
preferred_identity = forms.BooleanField(initial=False, required=False)
|
||||||
|
@ -25,14 +25,14 @@ class PersonGlobalIdentity(models.Model):
|
|||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
from service.Mapper import PersonMapper
|
from service.Mapper import PersonMapper
|
||||||
pm = 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">"
|
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):
|
class CitaviProjectIdentity(models.Model):
|
||||||
""" Model representing an identity from a citavi project. """
|
""" Model representing an identity from a citavi project. """
|
||||||
global_identity = models.ForeignKey(PersonGlobalIdentity, blank=True, null=True)
|
global_identity = models.ForeignKey(PersonGlobalIdentity, blank=True, null=True, db_index=True)
|
||||||
project = models.ForeignKey(Project, blank=False, null=False)
|
project = models.ForeignKey(Project, blank=False, null=False, db_index=True)
|
||||||
citavi_uuid = models.CharField(max_length=255, blank=False, null=False)
|
citavi_uuid = models.CharField(max_length=255, blank=False, null=False, db_index=True)
|
||||||
preferred = models.BooleanField()
|
preferred = models.BooleanField()
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
|
@ -65,15 +65,17 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Citavi_UUID</th>
|
<th>Citavi_UUID</th>
|
||||||
<th>Features</th>
|
<th>Name</th>
|
||||||
|
<th>Global Identity</th>
|
||||||
<th>Features</th>
|
<th>Features</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for person_id, person in mapped_persons.items %}
|
{% for person_id, person in mapped_persons.items %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{person.citavi_uuid}}</td>
|
<td>{{person.0.citavi_uuid}}</td>
|
||||||
<td>{{person.global_identity}}</td>
|
<td>{{person.1}}</td>
|
||||||
|
<td>{{person.0.global_identity}}</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="#TODO" title="Enter mapping wizard starting here.">Delete Mapping</a>
|
<a href="#TODO" title="Enter mapping wizard starting here.">Delete Mapping</a>
|
||||||
</td>
|
</td>
|
||||||
|
@ -190,7 +190,8 @@ class ProjectPersonView(ProtectedFormView, SingleObjectMixin):
|
|||||||
from service import Mapper
|
from service import Mapper
|
||||||
pm = Mapper.PersonMapper()
|
pm = Mapper.PersonMapper()
|
||||||
kwargs[u'unmapped_persons'] = pm.get_unmapped_identities(project)
|
kwargs[u'unmapped_persons'] = pm.get_unmapped_identities(project)
|
||||||
kwargs[u'mapped_persons'] = pm.get_mapped_identities(project)
|
kwargs[u'mapped_persons'] = pm.get_mapped_identities_with_representation(project)
|
||||||
|
kwargs[u'mapped_persons'] = pm.get_mapped_identities_with_representation(project)
|
||||||
return super(ProjectPersonView, self).get_context_data(**kwargs)
|
return super(ProjectPersonView, self).get_context_data(**kwargs)
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
@ -240,12 +241,16 @@ class ProjectMapPersonView(ProtectedFormView, SingleObjectMixin):
|
|||||||
pm = Mapper.PersonMapper()
|
pm = Mapper.PersonMapper()
|
||||||
person = pm.get_person_by_uuid(self.object, self.person_uuid)
|
person = pm.get_person_by_uuid(self.object, self.person_uuid)
|
||||||
|
|
||||||
print unicode(form.cleaned_data)
|
if form.data.get(u'skip', False):
|
||||||
|
""" Nothing to do here, just go on ... """
|
||||||
|
pass
|
||||||
|
elif form.data.get(u'save-continue', False):
|
||||||
# TODO: do mapping according to parameters, override success_url to point to next person!
|
# TODO: do mapping according to parameters, override success_url to point to next person!
|
||||||
if form.cleaned_data[u'action'] == u'new':
|
if form.cleaned_data[u'action'] == u'new':
|
||||||
pm.create_new_identity(self.object, person)
|
pm.create_new_identity(self.object, person)
|
||||||
elif form.cleaned_data[u'action'] == u'skip':
|
elif form.cleaned_data[u'action'] == u'existing':
|
||||||
pass
|
# TODO preferred = FALSE is not desired.
|
||||||
|
print form.cleaned_data
|
||||||
|
pm.map_identity_to_existing(form.cleaned_data[u'global_identity'], self.object, person.ID, form.cleaned_data[u'preferred_identity'])
|
||||||
return super(ProjectMapPersonView, self).form_valid(form)
|
return super(ProjectMapPersonView, self).form_valid(form)
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ class Project():
|
|||||||
except:
|
except:
|
||||||
self._is_error = True
|
self._is_error = True
|
||||||
# TODO: better error handling!
|
# TODO: better error handling!
|
||||||
print u"An error occured within a get_persons call!"
|
print str(u"An error occured within a get_persons call!")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def get_person_by_uuid(self, uuid):
|
def get_person_by_uuid(self, uuid):
|
||||||
@ -43,7 +43,7 @@ class Project():
|
|||||||
except:
|
except:
|
||||||
self._is_error = True
|
self._is_error = True
|
||||||
# TODO: better error handling!
|
# TODO: better error handling!
|
||||||
print u"An error occured within a get_person_by_uuid call!"
|
print str(u"An error occured within a get_person_by_uuid call!")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def open(self):
|
def open(self):
|
||||||
|
@ -15,7 +15,7 @@ class PersonIdentityManager():
|
|||||||
|
|
||||||
def add_identity_to_global_identity(self, global_identity, project, uuid, preferred):
|
def add_identity_to_global_identity(self, global_identity, project, uuid, preferred):
|
||||||
""" Maps given citavi project identity to existing global identity. """
|
""" Maps given citavi project identity to existing global identity. """
|
||||||
cpi = CitaviProjectIdentity(global_identity=global_identity, project=project, citavi_uuid=uuid, preferred=True)
|
cpi = CitaviProjectIdentity(global_identity=global_identity, project=project, citavi_uuid=uuid, preferred=preferred)
|
||||||
cpi.save()
|
cpi.save()
|
||||||
return cpi
|
return cpi
|
||||||
|
|
||||||
|
@ -16,6 +16,10 @@ class PersonMapper():
|
|||||||
del self._citavi_project_manager
|
del self._citavi_project_manager
|
||||||
del self._person_identity_manager
|
del self._person_identity_manager
|
||||||
|
|
||||||
|
def get_citavi_persons_from_project(self, project):
|
||||||
|
""" Returns all citavi persons from a project. """
|
||||||
|
return self._citavi_project_manager.get_persons_from_project(project.id)
|
||||||
|
|
||||||
def get_unmapped_identities(self, project):
|
def get_unmapped_identities(self, project):
|
||||||
""" Returns a uuid->person dict for all unmapped persons within a project. """
|
""" Returns a uuid->person dict for all unmapped persons within a project. """
|
||||||
citavi_persons = self._citavi_project_manager.get_persons_from_project(project.id)
|
citavi_persons = self._citavi_project_manager.get_persons_from_project(project.id)
|
||||||
@ -39,19 +43,39 @@ class PersonMapper():
|
|||||||
mapped_uuid_dict[person.citavi_uuid] = person
|
mapped_uuid_dict[person.citavi_uuid] = person
|
||||||
return mapped_uuid_dict
|
return mapped_uuid_dict
|
||||||
|
|
||||||
|
def get_mapped_identities_with_representation(self, project):
|
||||||
|
""" Returns a uuid->person dict for all mapped persons within a project in a tuple containing a unicode representation. """
|
||||||
|
mapped_persons = self._person_identity_manager.get_mapped_identities_for_project(project)
|
||||||
|
mapped_uuid_dict = {}
|
||||||
|
for person in mapped_persons:
|
||||||
|
person_representation = self.get_representation_for_citavi_identity(person)
|
||||||
|
mapped_uuid_dict[person.citavi_uuid] = (person, person_representation)
|
||||||
|
return mapped_uuid_dict
|
||||||
|
|
||||||
def create_new_identity(self, project, person):
|
def create_new_identity(self, project, person):
|
||||||
""" Creates a new identity for a given person. """
|
""" Creates a new identity for a given person. """
|
||||||
return self._person_identity_manager.create_identity(project, person.ID)
|
return self._person_identity_manager.create_identity(project, person.ID)
|
||||||
|
|
||||||
|
def map_identity_to_existing(self, global_identity, project, uuid, preferred):
|
||||||
|
""" Maps a person person to an existing global identity. """
|
||||||
|
return self._person_identity_manager.add_identity_to_global_identity(global_identity, project, uuid, preferred)
|
||||||
|
|
||||||
def get_person_by_uuid(self, project, uuid):
|
def get_person_by_uuid(self, project, uuid):
|
||||||
""" Returns a person from a citavi project by uuid. """
|
""" Returns a person from a citavi project by uuid. """
|
||||||
return self._citavi_project_manager.get_person_by_uuid(project.id, uuid)
|
return self._citavi_project_manager.get_person_by_uuid(project.id, uuid)
|
||||||
|
|
||||||
def get_representation_for_global_identity(self, global_identity):
|
def get_representation_for_global_identity(self, global_identity):
|
||||||
""" Returns a unicode string representation for a global identiy. """
|
""" Returns a unicode representation for a global identiy. """
|
||||||
if global_identity.type == 'citavi':
|
if global_identity.type == 'citavi':
|
||||||
citavi_identity = self._person_identity_manager.get_citavi_identity_by_global_identity(global_identity)
|
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)
|
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)
|
return unicode(citavi_person.ID) + u" " + unicode(citavi_person.FirstName) + u" " + unicode(citavi_person.LastName)
|
||||||
else:
|
else:
|
||||||
return unicode(global_identity)
|
return u'Not implemented yet!'
|
||||||
|
|
||||||
|
def get_representation_for_citavi_identity(self, citavi_identity):
|
||||||
|
""" Returns a unicode representation for a citavi project identiy. """
|
||||||
|
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)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user