]> git.evergreen-ils.org Git - working/random.git/blob - contrib/evergreen/eg_tasks.py
fixed bug in property reading from eg_data module. more python style tweaks
[working/random.git] / contrib / evergreen / eg_tasks.py
1 from constrictor.task import Task
2 from constrictor.log import *
3 import eg_utils
4 from oils.const import *
5 import osrf.net_obj
6
7 class AbstractMethodTask(Task):
8     ''' Generic superclass for tasks that perform a single
9         server-side operation '''
10
11     def __init__(self, name=None):
12         if not name: 
13             name = self.__class__.__name__
14         Task.__init__(self, name)
15         self.service = None
16         self.method = None
17
18     def run_method(self, *args):
19         return eg_utils.request(self.service, self.method, *args).send()
20
21 class CheckoutTask(AbstractMethodTask):
22
23     def __init__(self):
24         AbstractMethodTask.__init__(self)
25         self.service = OILS_APP_CIRC
26         self.method = 'open-ils.circ.checkout.full'
27
28     def run(self, **kw):
29         ''' kw[copy_barcode] The item barcode
30             kw[patron_id] The user's id 
31             kw[permit_key] The key returned by checkout permit '''
32
33         return self.run_method(eg_utils.authtoken(), dict(kw))
34
35
36 class RenewTask(AbstractMethodTask):
37     def __init__(self):
38         AbstractMethodTask.__init__(self)
39         self.service = OILS_APP_CIRC
40         self.method = 'open-ils.circ.renew'
41
42     def run(self, **kw):
43         ''' kw[copy_barcode] The item barcode '''
44
45         return self.run_method(eg_utils.authtoken(), dict(kw))
46
47
48 class CheckinTask(AbstractMethodTask):
49     
50     def __init__(self):
51         AbstractMethodTask.__init__(self)
52         self.service = OILS_APP_CIRC
53         self.method = 'open-ils.circ.checkin'
54
55     def run(self, **kw):
56         ''' kw[copy_barcode] '''
57         return self.run_method(eg_utils.authtoken(), dict(kw))
58
59
60 class AbortTransitTask(AbstractMethodTask):
61     def __init__(self):
62         AbstractMethodTask.__init__(self)
63         self.service = OILS_APP_CIRC
64         self.method = 'open-ils.circ.transit.abort'
65
66     def run(self, **kw):
67         ''' kw[copy_barcode] '''
68         return self.run_method(eg_utils.authtoken(), {"barcode":kw['copy_barcode']})
69
70
71 class TitleHoldPermitTask(AbstractMethodTask):                                                                                                                                                       
72     def __init__(self):
73         AbstractMethodTask.__init__(self)
74         self.service = OILS_APP_CIRC
75         self.method = 'open-ils.circ.title_hold.is_possible'                                                                                                                                         
76     def run(self, **kw):                                                                                                                                                                             
77         ''' kw[title_id]
78             kw[patron_id]
79             kw[pickup_lib]
80             '''                                                                                                                                                                                      
81         return self.run_method(eg_utils.authtoken(), {
82             "patronid" : kw['patron_id'], 
83             "titleid" : kw['title_id'],
84             "pickup_lib" : kw['pickup_lib']})                                                                                                   
85
86
87 class TitleHoldTask(AbstractMethodTask):
88     def __init__(self):
89         AbstractMethodTask.__init__(self)
90         self.service = OILS_APP_CIRC
91         self.method = 'open-ils.circ.holds.create'
92
93     def run(self, **kw):
94         ''' kw[title_id] 
95             kw[patron_id]
96             kw[pickup_lib]
97         '''
98         # construct the hold object
99         hold = osrf.net_obj.NetworkObject.ahr()
100         hold.pickup_lib(kw['pickup_lib'])
101         hold.usr(kw['patron_id'])
102         hold.target(kw['title_id'])
103         hold.hold_type('T')
104
105         return self.run_method(eg_utils.authtoken(), hold)
106
107
108 class TitleHoldCancelTask(AbstractMethodTask):
109     def __init__(self):
110         AbstractMethodTask.__init__(self)
111         self.service = OILS_APP_CIRC
112         self.method = 'open-ils.circ.hold.cancel'
113
114     def run(self, **kw):
115         ''' kw['hold_id'] '''
116         return self.run_method(eg_utils.authtoken(), kw['hold_id'])
117
118
119 class TitleHoldFetchAllTask(AbstractMethodTask):
120
121     def __init__(self):
122         AbstractMethodTask.__init__(self)
123         self.service = OILS_APP_CIRC
124         self.method = 'open-ils.circ.holds.id_list.retrieve'
125
126     def run(self, **kw):
127         ''' kw['patron_id'] '''
128         return self.run_method(eg_utils.authtoken(), kw['patron_id'])
129
130 class BibSearchTask(AbstractMethodTask):
131     
132     def __init__(self):
133         AbstractMethodTask.__init__(self)
134         self.service = OILS_APP_SEARCH
135         self.method = 'open-ils.search.biblio.multiclass.query'
136
137     def run(self, **kw):
138         return self.run_method(kw['search_args'], kw['search_term'], True)
139
140 class BibRetrieveTask(AbstractMethodTask):
141     
142     def __init__(self):
143         AbstractMethodTask.__init__(self)
144         self.service = OILS_APP_SEARCH
145         self.method = 'open-ils.search.biblio.record.mods_slim.retrieve'
146
147     def run(self, **kw):
148         return self.run_method(kw['bib_id'])
149
150
151 class UserTransactionsByType(AbstractMethodTask):
152
153     def __init__(self):
154         AbstractMethodTask.__init__(self)
155         self.service = 'open-ils.actor'
156
157     def run(self, **kw):
158         self.method = kw['method']
159         return self.run_method(eg_utils.authtoken(), kw['user_id'])
160
161 class UserSearchTask(AbstractMethodTask):
162
163     def __init__(self):
164         AbstractMethodTask.__init__(self)
165         self.service = 'open-ils.actor'
166         self.method = 'open-ils.actor.patron.search.advanced'
167
168     def run(self, **kw):
169         return self.run_method(eg_utils.authtoken(), kw['search_args'], 100)
170