source: web/IbidasSimpleMessage.py @ 265

Last change on this file since 265 was 265, checked in by jjbot, 11 years ago
File size: 3.7 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 = tuple()
30    SET_FN = ('set_id', 'name') # Removed description due to Nones
31    SETLINK_FN = tuple()
32    TERM_FN = ('term_id', 'source_id', 'name', 'identifier', 'description')
33    TERMLINK_FN = tuple()
34   
35    def __init__(self):
36        self.items      = None
37        self.itemlinks  = None
38        self.terms      = None
39        self.termlinks  = None
40        self.sets       = None
41        self.setlinks   = None
42
43        self.item_fn        = colMap(self.ITEM_FN)
44        self.itemlink_fn    = colMap(self.ITEMLINK_FN)
45        self.term_fn        = colMap(self.TERM_FN)
46        self.termlink_fn    = colMap(self.TERMLINK_FN)
47        self.set_fn         = colMap(self.SET_FN)
48        self.setlink_fn     = colMap(self.SETLINK_FN)
49
50    def addItems(self, cont):
51        print "addItems called."
52        if not self.items is None:
53            self.items = self.items.stack(cont)
54        else:
55            self.items = cont
56
57    def addItemLinks(self, cont):
58        print "addItemLinks called."
59        if not self.itemlinks is None:
60            self.itemlinks = self.itemlinks.stack(cont)
61        else:
62            self.itemlinks = cont
63
64    def addTerms(self, cont):
65        print "addTerms called."
66        if not self.terms is None:
67            self.terms = self.terms.stack(cont)
68        else:
69            self.terms = cont
70
71    def addTermlinks(self, cont):
72        print "addTermlinks called."
73        if not self.termlinks is None:
74            self.termlinks = self.termlinks.stack(cont)
75        else:
76            self.termlinks = cont
77
78    def addSets(self, cont):
79        print "addSets called."
80       
81        print cont
82        print self.sets
83
84        if not self.sets is None:
85            self.sets = self.sets.stack(cont)
86        else:
87            self.sets = cont
88
89    def addSetlinks(self, cont):
90        print "addSetlinks called."
91        if not self.setlinks is None:
92            self.setlinks = self.setlinks.stack(cont)
93        else:
94            self.setlinks = cont
95
96    def finalize(self):
97        """Creates the message to be send to the client.
98        """
99        out = {}
100        if not self.items is None: 
101            out[self.ITEM_STR] = self.items.to_python()
102            out[self.ITEM_FN_STR] = self.item_fn
103        if not self.itemlinks is None: 
104            out[self.ITEMLINK_STR] = self.itemlinks.to_python()
105            out[self.ITEMLINK_FN_STR] = self.item_fn
106        if not self.terms is None: 
107            out[self.TERM_STR] = self.terms.to_python()
108            out[self.TERM_FN_STR] = self.term_fn
109        if not self.termlinks is None: 
110            out[self.TERMLINK_STR] = self.termlinks.to_python()
111            out[self.TERMLINK_FN_STR] = self.termlink_fn
112        if not self.sets is None:
113            out[self.SET_STR] = self.sets.to_python()
114            out[self.SET_FN_STR] = self.set_fn
115        if not self.setlinks is None:
116            out[self.SETLINK_STR] = self.setlinks.to_python()
117            out[self.SETLINK_FN_STR] = self.setlink_fn
118        return out
119
Note: See TracBrowser for help on using the repository browser.