| author | Sandro Knauß <bugs@sandroknauss.de> |
| Tue, 15 Apr 2025 01:19:47 +0200 | |
| changeset 312 | 42fd5075a5d1 |
| parent 294 | 0e75bd39767d |
| permissions | -rw-r--r-- |
|
294
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
1 |
# Copyright (c) 2012 netzguerilla.net <iro@netzguerilla.net> |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
2 |
# |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
3 |
# This file is part of Iro. |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
4 |
# |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
5 |
# Permission is hereby granted, free of charge, to any person obtaining a copy of |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
6 |
# this software and associated documentation files (the "Software"), to deal in |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
7 |
# the Software without restriction, including without limitation the rights to use, |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
8 |
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
9 |
# #Software, and to permit persons to whom the Software is furnished to do so, |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
10 |
# subject to the following conditions: |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
11 |
# |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
12 |
# The above copyright notice and this permission notice shall be included in |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
13 |
# all copies or substantial portions of the Software. |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
14 |
# |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
15 |
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
16 |
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
17 |
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
18 |
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
19 |
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
20 |
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
0e75bd39767d
adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents:
263
diff
changeset
|
21 |
|
|
245
4526747a42ca
some more messages about job status
Sandro Knauß <knauss@netzguerilla.net>
parents:
218
diff
changeset
|
22 |
from twisted.python import log, threadable |
|
175
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
23 |
|
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
24 |
from datetime import datetime |
| 312 | 25 |
from collections.abc import MutableMapping |
| 135 | 26 |
|
| 312 | 27 |
from . import schema |
28 |
from . import offer |
|
| 135 | 29 |
from .dbdefer import dbdefer |
30 |
||
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
31 |
class ExJob: |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
32 |
''' A ExJob object represents a message to multiple recipients over multiple offers to send. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
33 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
34 |
One single message to one recipient is handeld in :class:`iro.controller.task.Task`. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
35 |
This class holds connections to all tasks. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
36 |
This class is responsiple to update the status in database of one job and updating the bill. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
37 |
''' |
|
175
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
38 |
|
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
39 |
synchronized = ["incStatus", "_status"] |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
40 |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
41 |
def __init__(self, dbjob, recipients, message, offers): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
42 |
"""Constructor of ExJob. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
43 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
44 |
:param dbjob: primary key of the job element in database |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
45 |
:param list recipients: list of all recipients |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
46 |
:param `iro.model.message.Message` message: message to send |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
47 |
:param list offers: list of all possible offers to send message over |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
48 |
""" |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
49 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
50 |
self.dbjob = dbjob #Connection to database job element (id) |
| 135 | 51 |
self.message = message |
52 |
self.recipients = recipients |
|
53 |
self.offers = offers |
|
54 |
self.tasks={} |
|
|
175
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
55 |
self.c = 0 |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
56 |
self.status = "started" |
|
245
4526747a42ca
some more messages about job status
Sandro Knauß <knauss@netzguerilla.net>
parents:
218
diff
changeset
|
57 |
log.msg("Job(%s) created."%(self.dbjob)) |
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
58 |
|
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
59 |
def addTask(self,task): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
60 |
"""adding a task to tasks dict - key is the recipient. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
61 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
62 |
:param `iro.controller.task.Task` task: a task |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
63 |
""" |
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
64 |
self.tasks[task.recipient] = task |
| 135 | 65 |
|
|
175
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
66 |
def incStatus(self): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
67 |
"""increments the processed messages (function is threadsafe).""" |
|
175
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
68 |
self.c += 1 |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
69 |
return self.c |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
70 |
|
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
71 |
def _status(self, session, status): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
72 |
"""updates the status of the database object (function is threadsafe). |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
73 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
74 |
:param session: a valid database session |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
75 |
:param string status: new status |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
76 |
""" |
|
175
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
77 |
job = schema.Job.get(session, self.dbjob) |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
78 |
if self.status == "error": |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
79 |
return |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
80 |
elif self.status == "sended" and status != "error": |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
81 |
return |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
82 |
job.status = status |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
83 |
self.status = status |
|
245
4526747a42ca
some more messages about job status
Sandro Knauß <knauss@netzguerilla.net>
parents:
218
diff
changeset
|
84 |
log.msg("Job(%s) status changed to: %s."%(self.dbjob, status)) |
|
175
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
85 |
session.commit() |
| 135 | 86 |
|
|
175
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
87 |
@dbdefer |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
88 |
def setStatus(self, session, task, status): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
89 |
"""callback of one task. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
90 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
91 |
This function updates the database object and the bill. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
92 |
""" |
|
175
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
93 |
c = self.incStatus() |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
94 |
job = schema.Job.get(session, self.dbjob) |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
95 |
|
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
96 |
if c == len(self.recipients): |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
97 |
self._status(session,"sended") |
|
245
4526747a42ca
some more messages about job status
Sandro Knauß <knauss@netzguerilla.net>
parents:
218
diff
changeset
|
98 |
elif job.status in ["started","init"]: |
|
4526747a42ca
some more messages about job status
Sandro Knauß <knauss@netzguerilla.net>
parents:
218
diff
changeset
|
99 |
self._status(session,"sending") |
|
175
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
100 |
|
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
101 |
if status.costs > 0: |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
102 |
o = schema.Offer.get(session, status.provider.name, status.route, self.message.typ) |
|
215
5bacdb7e94d1
smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents:
175
diff
changeset
|
103 |
job.messages.append(schema.Message(price=status.costs, isBilled=False, recipient=str(task.recipient), count=status.count, exID=status.exID, date=datetime.today(), offer=o)) |
|
175
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
104 |
session.commit() |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
105 |
|
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
106 |
log.msg("Job(%s) to '%s' ended sucecessfully via %s:%s."%(self.dbjob, task.recipient, status.provider.name,status.route)) |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
107 |
|
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
108 |
@dbdefer |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
109 |
def setError(self, session, task, err): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
110 |
"""errback for one task. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
111 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
112 |
This function updates the database object. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
113 |
""" |
|
175
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
114 |
self.incStatus() |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
115 |
if self.status != "error": |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
116 |
self._status(session,"error") |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
117 |
log.err(_why="Error: Job(%s) to '%s' failed."%(self.dbjob, task.recipient),_stuff=err) |
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
118 |
|
|
c29acd5fb841
splitting tests.job -> test.job, tests.tasks
Sandro Knauß <knauss@netzguerilla.net>
parents:
156
diff
changeset
|
119 |
threadable.synchronize(ExJob) |
| 135 | 120 |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
121 |
class ExJobs(dict, MutableMapping): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
122 |
""" a dict to handle all jobs. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
123 |
""" |
| 135 | 124 |
@dbdefer |
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
125 |
def create(self, session, user, recipients, message, offers, info=None): |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
126 |
"""creates on new Job. |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
127 |
|
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
128 |
:param session: a valid session ( created by decorator :func:`iro.model.dbdefer.dbdefer`) |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
129 |
:param `iro.model.schema.User` user: a user object |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
130 |
:param list recipients: list of all recipients |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
131 |
:param `iro.model.message.Message` message: message to send |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
132 |
:param list offers: a list of offers ( list will be reduced to the allowed offers for the **user** -- using :func:`iro.model.offer.extendProvider`) |
|
263
52284710c0b4
iro.model: adding docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents:
258
diff
changeset
|
133 |
:param string info: a bill group name |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
134 |
:returns: the new job |
|
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
135 |
""" |
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
136 |
user = session.merge(user) |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
137 |
job = schema.Job(info=info, status="started") |
|
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
138 |
user.jobs.append(job) |
| 135 | 139 |
session.commit() |
|
152
14c99c89edf4
using extendProvide in Job.create
Sandro Knauß <knauss@netzguerilla.net>
parents:
142
diff
changeset
|
140 |
|
|
156
a4ad521b127b
moving Status to own file
Sandro Knauß <knauss@netzguerilla.net>
parents:
152
diff
changeset
|
141 |
o = offer.extendProvider(user, message.typ, offers, session=session) |
|
152
14c99c89edf4
using extendProvide in Job.create
Sandro Knauß <knauss@netzguerilla.net>
parents:
142
diff
changeset
|
142 |
self[job.id] = ExJob(job.id, recipients, message, o) |
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
143 |
return self[job.id] |
| 135 | 144 |
|
|
140
75d0eaaa871d
start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents:
135
diff
changeset
|
145 |
exJobs = ExJobs() |
|
258
0a5eb5aac0be
iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents:
245
diff
changeset
|
146 |
"""the dict of all available jobs.""" |