source: web/IbidasSimpleMessage.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: 3.8 KB
Line 
1def colMap(fieldnames):
2    """Creates a dict with the columnnames as keys and their position in
3    the array as value.
4   
5    Inputs:
6    fieldnames: list of fieldnames.
7    """
8    m = {}
9    for ind, name in enumerate(fieldnames):
10        m[name] = ind
11    return m
12
13class IbidasSimpleMessage(object):
14   
15    ITEM_STR        = 'items'
16    ITEM_FN_STR     = 'item_fn'
17    ITEMLINK_STR    = 'itemlinks'
18    ITEMLINK_FN_STR = 'itemlink_fn'
19    SET_STR         = 'sets'
20    SET_FN_STR      = 'set_fn'
21    SETLINK_STR     = 'setlinks'
22    SETLINK_FN_STR  = 'setlink_fn'
23    TERM_STR        = 'terms'
24    TERM_FN_STR     = 'term_fn'
25    TERMLINK_STR    = 'termlinks'
26    TERMLINK_FN_STR = 'termlink_fn'
27   
28    ITEM_FN = ('item_id', 'type_id', 'source_id', 'display_name')
29    ITEMLINK_FN = ('item_link_id', 'type_id', 'source_id', 
30            'parent_id', 'child_id')
31    SET_FN = ('set_id', 'name') # Removed description due to Nones
32    SETLINK_FN = tuple()
33    TERM_FN = ('term_id', 'source_id', 'name', 'identifier', 'description')
34    TERMLINK_FN = tuple()
35   
36    def __init__(self):
37        self.items      = None
38        self.itemlinks  = None
39        self.terms      = None
40        self.termlinks  = None
41        self.sets       = None
42        self.setlinks   = None
43
44        self.item_fn        = colMap(self.ITEM_FN)
45        self.itemlink_fn    = colMap(self.ITEMLINK_FN)
46        self.term_fn        = colMap(self.TERM_FN)
47        self.termlink_fn    = colMap(self.TERMLINK_FN)
48        self.set_fn         = colMap(self.SET_FN)
49        self.setlink_fn     = colMap(self.SETLINK_FN)
50
51    def addItems(self, cont):
52        print "addItems called."
53        if not self.items is None:
54            self.items = self.items.stack(cont)
55        else:
56            self.items = cont
57
58    def addItemLinks(self, cont):
59        print "addItemLinks called."
60        if not self.itemlinks is None:
61            self.itemlinks = self.itemlinks.stack(cont)
62        else:
63            self.itemlinks = cont
64
65    def addTerms(self, cont):
66        print "addTerms called."
67        if not self.terms is None:
68            self.terms = self.terms.stack(cont)
69        else:
70            self.terms = cont
71
72    def addTermlinks(self, cont):
73        print "addTermlinks called."
74        if not self.termlinks is None:
75            self.termlinks = self.termlinks.stack(cont)
76        else:
77            self.termlinks = cont
78
79    def addSets(self, cont):
80        print "addSets called."
81       
82        print cont
83        print self.sets
84
85        if not self.sets is None:
86            self.sets = self.sets.stack(cont)
87        else:
88            self.sets = cont
89
90    def addSetlinks(self, cont):
91        print "addSetlinks called."
92        if not self.setlinks is None:
93            self.setlinks = self.setlinks.stack(cont)
94        else:
95            self.setlinks = cont
96
97    def finalize(self):
98        """Creates the message to be send to the client.
99        """
100        out = {}
101        if not self.items is None: 
102            out[self.ITEM_STR] = self.items.to_python()
103            out[self.ITEM_FN_STR] = self.item_fn
104        if not self.itemlinks is None: 
105            out[self.ITEMLINK_STR] = self.itemlinks.to_python()
106            out[self.ITEMLINK_FN_STR] = self.itemlink_fn
107        if not self.terms is None: 
108            out[self.TERM_STR] = self.terms.to_python()
109            out[self.TERM_FN_STR] = self.term_fn
110        if not self.termlinks is None: 
111            out[self.TERMLINK_STR] = self.termlinks.to_python()
112            out[self.TERMLINK_FN_STR] = self.termlink_fn
113        if not self.sets is None:
114            out[self.SET_STR] = self.sets.to_python()
115            out[self.SET_FN_STR] = self.set_fn
116        if not self.setlinks is None:
117            out[self.SETLINK_STR] = self.setlinks.to_python()
118            out[self.SETLINK_FN_STR] = self.setlink_fn
119        return out
120
Note: See TracBrowser for help on using the repository browser.