Project

General

Profile

1
import hashlib
2
import urllib2
3

    
4
from flask import json
5

    
6

    
7
class DLIRelation(object):
8
    def __init__(self, entity):
9

    
10
        m = hashlib.md5()
11
        m.update("%s::%s" % (entity['targetPID']['id'], entity['targetPID']['type']))
12
        self.relatedDnetId = m.hexdigest()
13
        if "targetType" in entity:
14
            self.relatedEntityType = entity['targetType']
15
        if "relationSemantics" in entity:
16
            self.typeOfRelation = entity['relationSemantics']
17
        if "targetTitle" in entity:
18
            self.related_title = entity['targetTitle']
19
        self.authors = []
20
        if 'authors' in entity:
21
            for author in entity['authors']:
22
                self.authors.append(author)
23
        self.relation_provenance = []
24
        if 'relationProvenance' in entity:
25
            for provenance in entity['relationProvenance']:
26
                item = {'name': provenance['datasource'], 'completionStatus': provenance['completionStatus'],
27
                        'provisionMode': provenance['provisionMode'],
28
                        'collectionDate': provenance['collectionDate']}
29
                self.relation_provenance.append(item)
30

    
31

    
32
class DLIObject(object):
33
    def __init__(self, id, basepath):
34
        self.identifier = ""
35
        self.pid = ""
36
        self.pid_type = ""
37
        self.resolved_url = ""
38
        self.completionStatus = ""
39
        self.provenance_record = []
40
        self.objectType = "unknown"
41
        self.title = ""
42
        self.date = ""
43
        self.authors = []
44
        self.relations = []
45
        try:
46
            request = urllib2.urlopen("%s/mvc/ui/dli/dli_objectStore/retrieveObject.do?id=%s" % (basepath, id))
47
            data = json.loads(request.read())
48
            self.pid = data['pid']
49
            self.identifier = id
50
            self.pid_type = data['pidType']
51

    
52
            if 'resolvedTypes' in data:
53
                if self.pid_type in data['resolvedTypes']:
54
                    self.resolved_url = data['resolvedTypes'][self.pid_type] % self.pid
55

    
56
            if "titles" in data:
57
                if len(data['titles']) > 0:
58
                    self.title = data['titles'][0]
59
            self.authors = data['authors']
60
            if 'type' in data:
61
                self.objectType = data['type']
62
            self.completionStatus = data['completionStatus']
63
            if 'date' in data:
64
                self.date = data['date']
65
            if 'datasourceProvenance' in data:
66
                for provenance in data['datasourceProvenance']:
67
                    item = {'name': provenance['datasource'], 'completionStatus': provenance['completionStatus'],
68
                            'provisionMode': provenance['provisionMode'],
69
                            'collectionDate': provenance['collectionDate']}
70
                    self.provenance_record.append(item)
71
            if 'relations' in data:
72
                for rels in data['relations']:
73
                    self.relations.append(DLIRelation(rels))
74
        except Exception as e:
75
            print "error on request object"
76
            print e
(4-4/9)