1 from constrictor.task import Task
2 from constrictor.log import *
4 from oils.const import *
7 class AbstractMethodTask(Task):
8 ''' Generic superclass for tasks that perform a single
9 server-side operation '''
11 def __init__(self, name=None):
13 name = self.__class__.__name__
14 Task.__init__(self, name)
18 def run_method(self, *args):
19 return eg_utils.request(self.service, self.method, *args).send()
21 class CheckoutTask(AbstractMethodTask):
24 AbstractMethodTask.__init__(self)
25 self.service = OILS_APP_CIRC
26 self.method = 'open-ils.circ.checkout.full'
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 '''
33 return self.run_method(eg_utils.authtoken(), dict(kw))
36 class RenewTask(AbstractMethodTask):
38 AbstractMethodTask.__init__(self)
39 self.service = OILS_APP_CIRC
40 self.method = 'open-ils.circ.renew'
43 ''' kw[copy_barcode] The item barcode '''
45 return self.run_method(eg_utils.authtoken(), dict(kw))
48 class CheckinTask(AbstractMethodTask):
51 AbstractMethodTask.__init__(self)
52 self.service = OILS_APP_CIRC
53 self.method = 'open-ils.circ.checkin'
56 ''' kw[copy_barcode] '''
57 return self.run_method(eg_utils.authtoken(), dict(kw))
60 class AbortTransitTask(AbstractMethodTask):
62 AbstractMethodTask.__init__(self)
63 self.service = OILS_APP_CIRC
64 self.method = 'open-ils.circ.transit.abort'
67 ''' kw[copy_barcode] '''
68 return self.run_method(eg_utils.authtoken(), {"barcode":kw['copy_barcode']})
71 class TitleHoldPermitTask(AbstractMethodTask):
73 AbstractMethodTask.__init__(self)
74 self.service = OILS_APP_CIRC
75 self.method = 'open-ils.circ.title_hold.is_possible'
81 return self.run_method(eg_utils.authtoken(), {
82 "patronid" : kw['patron_id'],
83 "titleid" : kw['title_id'],
84 "pickup_lib" : kw['pickup_lib']})
87 class TitleHoldTask(AbstractMethodTask):
89 AbstractMethodTask.__init__(self)
90 self.service = OILS_APP_CIRC
91 self.method = 'open-ils.circ.holds.create'
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'])
105 return self.run_method(eg_utils.authtoken(), hold)
108 class TitleHoldCancelTask(AbstractMethodTask):
110 AbstractMethodTask.__init__(self)
111 self.service = OILS_APP_CIRC
112 self.method = 'open-ils.circ.hold.cancel'
115 ''' kw['hold_id'] '''
116 return self.run_method(eg_utils.authtoken(), kw['hold_id'])
119 class TitleHoldFetchAllTask(AbstractMethodTask):
122 AbstractMethodTask.__init__(self)
123 self.service = OILS_APP_CIRC
124 self.method = 'open-ils.circ.holds.id_list.retrieve'
127 ''' kw['patron_id'] '''
128 return self.run_method(eg_utils.authtoken(), kw['patron_id'])
130 class BibSearchTask(AbstractMethodTask):
133 AbstractMethodTask.__init__(self)
134 self.service = OILS_APP_SEARCH
135 self.method = 'open-ils.search.biblio.multiclass.query'
138 return self.run_method(kw['search_args'], kw['search_term'], True)
140 class BibRetrieveTask(AbstractMethodTask):
143 AbstractMethodTask.__init__(self)
144 self.service = OILS_APP_SEARCH
145 self.method = 'open-ils.search.biblio.record.mods_slim.retrieve'
148 return self.run_method(kw['bib_id'])
151 class UserTransactionsByType(AbstractMethodTask):
154 AbstractMethodTask.__init__(self)
155 self.service = 'open-ils.actor'
158 self.method = kw['method']
159 return self.run_method(eg_utils.authtoken(), kw['user_id'])
161 class UserSearchTask(AbstractMethodTask):
164 AbstractMethodTask.__init__(self)
165 self.service = 'open-ils.actor'
166 self.method = 'open-ils.actor.patron.search.advanced'
169 return self.run_method(eg_utils.authtoken(), kw['search_args'], 100)