source: web/IbidasAtomicServices2.py @ 266

Last change on this file since 266 was 266, checked in by jjbot, 11 years ago

Adjusted unwrapper functions to be able to deal with input hashes.

File size: 4.5 KB
Line 
1from IbidasSimpleMessage import IbidasSimpleMessage
2
3class AtomicServices:
4    def __init__(self, cd):
5        self.cd = cd
6
7    def getAvailableSets(self):
8        msg = IbidasSimpleMessage()
9        sets = self.cd.set[:, ('set_id', 'name')]
10        msg.addSets(sets)
11        print msg.finalize()
12        return msg.finalize()
13
14    def getAvailableItemRelationTypes(self):
15        """Returns all the types associated with item_child_links.
16        """
17        print "Called getAvailableItemRelationTypes"
18        msg = IbidasSimpleMessage()
19        types = self.cd.term.join(self.cd.item_child_link, 'term_id', 'type_id').up()
20        types = types.union(types)
21        msg.addTerms(types)
22        return msg.finalize()
23
24    def getAvailableItemTypes(self):
25        """Returns all the types associated with items.
26        """
27        print "Called getAvailableItemTypes"
28        msg = IbidasSimpleMessage()
29        types = self.cd.term.join(self.cd.item, 'term_id', 'type_id').up()
30        types = types.union(types)
31        msg.addTerms(types)
32        return msg.finalize()
33
34    def getItemChildren(self, items):
35        """Returns all the direct children of the provided items.
36        """
37        print items
38        items = items['items']
39        msg = IbidasSimpleMessage()
40        ids = [int(x) for x in items]
41        items = self.cd.item[_.item_id.within(*ids)]
42
43        links = self.cd.item_child_link.join(items, 'parent_id', 'item_id')
44        msg.addItemLinks(links)
45        items = self.cd.item.join(links, 'item_id', 'child_id').up()
46        print "Nr of children found: ", len(items)
47        msg.addItems(items)
48
49        return msg.finalize()
50
51    def getItemParents(self, items):
52        """Returs all the direct parents of the provided items.
53        """
54        print items
55        items = items['items']
56        msg = IbidasSimpleMessage()
57        ids = [int(x) for x in items]
58        items = self.cd.item[_.item_id.within(*ids)]
59
60        links = self.cd.item_child_link.join(items, 'child_id', 'item_id')
61        msg.addItemLinks(links)
62        items = self.cd.item.join(links, 'item_id', 'parent_id').up()
63        print "Nr of parents found: ", len(items)
64        msg.addItems(items)
65
66        return msg.finalize()
67
68    def getItemNeighbours(self, items):
69        """Returns all the direct neighbours of the provided items.
70        """
71        print items
72        items = items['items']
73        msg = IbidasSimpleMessage()
74        ids = [int(x) for x in items]
75        items = self.cd.item[_.item_id.within(*ids)]
76
77        links = self.cd.item_child_link.join(items, 'parent_id', 'item_id')
78        msg.addItemLinks(links)
79        items = self.cd.item.join(links, 'item_id', 'child_id')
80        msg.addItems(items)
81       
82        links = self.cd.item_child_link.join(items, 'child_id', 'item_id')
83        msg.addItemLinks(links)
84        items = self.cd.item.join(links, 'item_id', 'parent_id')
85        msg.addItems(items)
86
87        return msg.finalize()
88
89    def getItemsByID(self, ids):
90        pass
91
92    def getItemrelationsByID(self, ids):
93        pass
94       
95    def getSetsByID(self, ids):
96        msg = IbidasSimpleMessage()
97        sets = self.cd.set[_.set_id.within(*ids)]
98        msg.addSets(sets)
99        return msg.finalize()
100
101    def getSetsByName(self, names):
102        msg = IbidasSimpleMessage()
103        sets = self.cd.set[_.name.within(*names)]
104        msg.addSets(sets)
105        return msg.finalize()
106
107    def getSetContentBySourceName(self, name):
108        """Returns all the items and links associated with the
109        provided set_name."""
110        setid = self.cd.set[_.name==name]()
111        return self.getSetContentBySourceID(setid)
112
113    def getSetContentBySourceID(self, sourceID):
114        """Returns all the items and links associated with the
115        provided set_id."""
116        source_ids = sourceID['items']
117        print "getSetContentBySourceID called"
118        print "source_id: ", sourceID
119        msg = IbidasSimpleMessage()
120        items = self.cd.item[_.source_id.within(*source_ids)]
121        items = items[0:500]
122        msg.addItems(items)
123
124        l1 = self.cd.item_child_link.join(items, 'child_id', 'item_id')
125        l1 = l1.up()
126        l1 = l1.join(items, 'parent_id', 'item_id').up()
127        msg.addItemLinks(l1)
128
129        l2 = self.cd.item_child_link.join(items, 'parent_id', 'item_id')
130        l2 = l2.up()
131        l2 = l2.join(items, 'child_id', 'item_id').up()
132        msg.addItemLinks(l2)
133       
134        return msg.finalize()
135
136    def testConnection(self):
137        return "It works!"
138
139    def testConnectionHash(self):
140        msg = {'message': 'It works!'}
141        return msg
Note: See TracBrowser for help on using the repository browser.