示例#1
0
 def test_parse_person(self):
     print('Number of Persons: {}'.format(Person.objects.all().count()))
     o = GenericRDFParser(self.uriP, self.kindP)
     o2 = o.save()
     print('got following person: {}'.format(o2))
     self.assertEqual(o.objct.name, 'Eosander')
     self.assertEqual(o.objct.first_name, 'Johann Friedrich')
示例#2
0
 def test_merge_places(self):
     txt = Text.objects.create(text='test text')
     src = Source.objects.create(orig_id=24, pubinfo='test pub')
     pp = Place(name="Wien")
     pp.source = src
     pp.save()
     pp.text.add(txt)
     rel_type_birth = PersonPlaceRelation.objects.create(
         name='place of birth')
     pers = Person.objects.create(name="tesdt", first_name="test3")
     rel_1 = PersonPlace.objects.create(related_person=pers,
                                        relation_type=rel_type_birth,
                                        related_place=pp)
     ow = GenericRDFParser(self.uriGeon, 'Place')
     print('name: {}, lat: {}, long: {}, labels: {}'.format(
         ow.objct.name, ow.objct.lat, ow.objct.lng, ' / '.join(
             Label.objects.filter(temp_entity=ow.objct).values_list(
                 'label', flat=True))))
     if ow.created:
         print('created triggered')
         ow.save()
     ow2 = ow.merge(pp)
     print(ow)
     print(ow2)
     self.assertEqual(pp.source.pubinfo, ow.objct.source.pubinfo)
     self.assertEqual(txt.text, ow.objct.text.all()[0].text)
     for x in PersonPlace.objects.all():
         self.assertEqual(x.related_place.pk, ow.objct.pk)
示例#3
0
 def test_merge_place(self):
     col = Collection.objects.create(name='test coll one')
     col2 = Collection.objects.create(name='test coll 2')
     w1 = Place.objects.create(name='Wien 21 test')
     w1.collection.add(col)
     w1.collection.add(col2)
     w1_label = Label.objects.create(label='Wien label 1', temp_entity=w1)
     w1_uri = Uri.objects.create(uri='http://test.uri.ac.at/orig:id',
                                 entity=w1)
     o = GenericRDFParser(self.uriGeon, self.kindP)
     o2 = o.save()
     o.merge(w1)
     for col in o2.collection.all():
         print('collection: {}'.format(col.name))
     self.assertEqual(
         Label.objects.filter(temp_entity=o2, label='Wien label 1').count(),
         1)
     self.assertEqual(
         Uri.objects.filter(entity=o2,
                            uri='http://test.uri.ac.at/orig:id').count(), 1)
     self.assertEqual(
         Label.objects.filter(label='Wien 21 test',
                              temp_entity=o2,
                              label_type__name='legacy name').count(), 1)
     self.assertEqual(o2.collection.all().count(), 3)
示例#4
0
 def test_related_places(self):
     o = GenericRDFParser(self.uriGeon, self.kindP)
     o2 = o.save()
     print(o2)
     print('related_objects: {}'.format(o.related_objcts))
     print('number of placeplace: {}'.format(
         PlacePlace.objects.all().count()))
     pp = PlacePlace.objects.filter(
         Q(related_placeA=o2) | Q(related_placeB=o2))
     self.assertEqual(pp.count(), 2)
示例#5
0
def resolve_ambigue_place(request, pk, uri):
    '''Only used to resolve place names.'''
    with reversion.create_revision():
        uri = 'http://' + uri
        entity = Place.objects.get(pk=pk)
        pl_n = GenericRDFParser(uri, kind='Place')
        pl_n_1 = pl_n.save()
        pl_n_1 = pl_n.merge(entity)
        url = pl_n_1.get_absolute_url()
        if pl_n.created:
            pl_n_1.status = 'distinct (manually resolved)'
            pl_n_1.save()
        UriCandidate.objects.filter(entity=entity).delete()
        reversion.set_user(request.user)

    return HttpResponseRedirect(url)
示例#6
0
 def test_place_of_birth_death(self):
     o = GenericRDFParser(self.uriP, self.kindP)
     p2 = o.save()
     print(p2.start_date)
     print(p2.end_date)
     rel_type_birth = PersonPlaceRelation.objects.get(name='place of birth')
     rel_type_death = PersonPlaceRelation.objects.get(name='place of death')
     rel_birth = PersonPlace.objects.get(related_person=o.objct,
                                         relation_type=rel_type_birth)
     rel_death = PersonPlace.objects.get(related_person=o.objct,
                                         relation_type=rel_type_death)
     self.assertEqual(rel_birth.related_place.name, 'Stralsund')
     self.assertEqual(rel_death.related_place.name, 'Dresden')
     plc_list = Label.objects.filter(
         temp_entity=rel_death.related_place).values_list('label',
                                                          flat=True)
     print(plc_list)
     self.assertTrue('Dressden' in plc_list)
     self.assertEqual(rel_death.related_place.lat, 13.738319)
     print('lat: {}, lng: {}'.format(rel_death.related_place.lat,
                                     rel_death.related_place.lng))
示例#7
0
 def test_existing_place(self):
     c = GenericRDFParser('http://sws.geonames.org/2782113/', self.kindP)
     c.save()
     o = GenericRDFParser(self.uriGeon, self.kindP)
     o2 = o.save()
     Uri.objects.create(uri='http://test.at', entity=o2)
     pp = PlacePlace.objects.filter(
         Q(related_placeA=o2) | Q(related_placeB=o2))
     self.assertEqual(pp.count(), 2)
     for p in Place.objects.all():
         print('name: {}, uri: {}'.format(
             p.name, ' / '.join(p.uri_set.all().values_list('uri',
                                                            flat=True))))
     cc = Place.objects.filter(
         uri__uri__icontains='http://sws.geonames.org/2782113').distinct()
     self.assertEqual(cc.count(), 1)
     i = GenericRDFParser(self.uriGeon, self.kindP)
     i2 = i.save()
     print(' / '.join(i.objct.uri_set.all().values_list('uri', flat=True)))
     print(i.objct)
     cc = Place.objects.filter(uri__uri=self.uriGeon).distinct()
     self.assertEqual(cc.count(), 1)
示例#8
0
 def save(self, site_instance, instance=None, commit=True):
     """
     Save function of the GenericRelationForm.
     :param site_instance: Instance where the form is used on
     :param instance: PK of the relation that is saved
     :param commit: Whether to already commit the save.
     :type site_instance: object
     :type instance: int
     :type commit: bool
     :rtype: object
     :return: instance of relation
     """
     cd = self.cleaned_data
     if instance:
         x = self.relation_form.objects.get(pk=instance)
     else:
         x = self.relation_form()
     x.relation_type_id = cd['relation_type']
     x.start_date_written = cd['start_date_written']
     x.end_date_written = cd['end_date_written']
     x.notes = cd['notes']
     x.references = cd['references']
     setattr(x, self.rel_accessor[3], site_instance)
     target = ContentType.objects.get(app_label='apis_entities', model=self.rel_accessor[0].lower()).model_class()
     t1 = target.get_or_create_uri(cd['target'])
     if not t1:
         t1 = GenericRDFParser(cd['target'], self.rel_accessor[0]).get_or_create()
     setattr(x, self.rel_accessor[2], t1)
     if commit:
         x.save()
     if self.highlighter:
         if not commit:
             x.save()
         txt = Text.objects.get(pk=cd['HL_text_id'][5:])
         a = Annotation(
             start=cd['HL_start'],
             end=cd['HL_end'],
             text=txt,
             user_added=self.request.user,
             annotation_project_id=int(self.request.session.get('annotation_project', 1)))
         a.save()
         a.entity_link.add(x)
     print('saved: {}'.format(x))
     return x
示例#9
0
 def test_parse_place(self):
     o = GenericRDFParser(self.uriGeon, self.kindP)
     o2 = o.save()
     print('name: {}, lat: {}, long: {}, labels: {}, kind: {}'.format(
         o2.place.name, o2.place.lat, o2.place.lng, ' / '.join(
             Label.objects.filter(temp_entity=o2.place).values_list(
                 'label', flat=True)), o2.kind.name))
     t = GenericRDFParser(self.uri_gnd_geo, self.kindP)
     t2 = t.save()
     print('name: {}, lat: {}, long: {}, labels: {}'.format(
         t2.name, t2.lat, t2.lng, ' / '.join(
             Label.objects.filter(temp_entity=t2).values_list('label',
                                                              flat=True))))
     self.assertEqual(o2.lat, '48.20849')
     self.assertEqual(t2.lat, '053.583329')
示例#10
0
 def get(self, request):
     entity = request.query_params.get("entity2", None)
     uri = request.query_params.get("uri", None)
     if uri.startswith('http:'):
         ent = GenericRDFParser(uri, entity.title()).get_or_create()
     else:
         print(uri)
         r1 = re.search(r"^[^<]+", uri)
         r2 = re.search(r"<([^>]+)>", uri)
         q_d = dict()
         q_d['name'] = r1
         if r2:
             for x in r2.group(1).split(';'):
                 x2 = x.split('=')
                 q_d[x2[0].strip()] = x2[1].strip()
         if entity == 'person':
             r1_2 = r1.group(0).split(',')
             if len(r1_2) == 2:
                 q_d['first_name'] = r1_2[1].strip()
                 q_d['name'] = r1_2[0].strip()
         ent = ContentType.objects.get(
             app_label="apis_entities",
             model=entity.lower()).model_class().objects.create(**q_d)
     res = {
         "id":
         ent.pk,
         "url":
         reverse_lazy(
             "apis:apis_entities:generic_entities_edit_view",
             request=request,
             kwargs={
                 "pk": ent.pk,
                 "entity": entity
             },
         ),
     }
     return Response(res)
示例#11
0
 def save(self, *args, **kwargs):
     cd = self.cleaned_data
     entity = GenericRDFParser(cd['entity'],
                               self.entity.title()).get_or_create()
     return entity
示例#12
0
 def save(self, *args, **kwargs):
     cd = self.cleaned_data
     pl = Place.get_or_create_uri(cd['place_uri'])
     if not pl:
         pl = GenericRDFParser(cd['place_uri'], 'Place').get_or_create()
     return pl