iro/model/job.py
author Sandro Knauß <knauss@netzguerilla.net>
Mon, 13 Feb 2012 19:52:54 +0100
branchdevel
changeset 152 14c99c89edf4
parent 142 7d0c1fa97123
child 156 a4ad521b127b
permissions -rw-r--r--
using extendProvide in Job.create
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     1
from collections import MutableMapping
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     2
140
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
     3
import schema
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     4
from .dbdefer import dbdefer
152
14c99c89edf4 using extendProvide in Job.create
Sandro Knauß <knauss@netzguerilla.net>
parents: 142
diff changeset
     5
from .offer import extendProvider
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     6
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     7
class Status:
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     8
    '''status for one recipient'''
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     9
    todo = 1
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    10
    good = 2
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    11
    error = 3
142
7d0c1fa97123 task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
    12
    
7d0c1fa97123 task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
    13
    def __init__(self, offer, status, errtext=None):
7d0c1fa97123 task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
    14
        self.status = status
7d0c1fa97123 task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
    15
        self.offer = offer             #the offer over that this job was done
7d0c1fa97123 task._run umbau zu inlineCallbacks
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
    16
        self.errtext = errtext         #the error text
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    17
140
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    18
class ExJob:
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    19
    '''One Job is a class that handles one job has multiple tasks'''
140
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    20
    def __init__(self, dbjob, recipients, message, offers):
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    21
        self.dbjob = dbjob       #Connection to mysql job element (id)
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
        self.message = message
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    23
        self.recipients = recipients
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
        self.offers = offers
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
        self.tasks={}
140
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    26
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    27
    def addTask(self,task):
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    28
        self.tasks[task.recipient] = task
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    29
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    30
    def setStatus(task,status):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    31
        pass
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    32
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    33
    def setError(task,err):
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    34
        pass
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    35
140
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    36
class ExJobs(dict, MutableMapping):
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    37
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    38
    @dbdefer
140
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    39
    def create(self, session, user, recipients, message, offers, info=None):
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    40
        user = session.merge(user)
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    41
        job = schema.Job(info=info, status="started")
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    42
        user.jobs.append(job)
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    43
        session.commit()
152
14c99c89edf4 using extendProvide in Job.create
Sandro Knauß <knauss@netzguerilla.net>
parents: 142
diff changeset
    44
        
14c99c89edf4 using extendProvide in Job.create
Sandro Knauß <knauss@netzguerilla.net>
parents: 142
diff changeset
    45
        o = extendProvider(user, message.typ, offers, session=session)
14c99c89edf4 using extendProvide in Job.create
Sandro Knauß <knauss@netzguerilla.net>
parents: 142
diff changeset
    46
        self[job.id] = ExJob(job.id, recipients, message, o)
140
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    47
        return self[job.id]
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    48
140
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    49
exJobs = ExJobs()