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

from collections import MutableMapping

import schema
from .dbdefer import dbdefer
from .offer import extendProvider

class Status:
    '''status for one recipient'''
    todo = 1
    good = 2
    error = 3
    
    def __init__(self, offer, status, errtext=None):
        self.status = status
        self.offer = offer             #the offer over that this job was done
        self.errtext = errtext         #the error text

class ExJob:
    '''One Job is a class that handles one job has multiple tasks'''
    def __init__(self, dbjob, recipients, message, offers):
        self.dbjob = dbjob       #Connection to mysql job element (id)
        self.message = message
        self.recipients = recipients
        self.offers = offers
        self.tasks={}

    def addTask(self,task):
        self.tasks[task.recipient] = task

    def setStatus(task,status):
        pass

    def setError(task,err):
        pass

class ExJobs(dict, MutableMapping):

    @dbdefer
    def create(self, session, user, recipients, message, offers, info=None):
        user = session.merge(user)
        job = schema.Job(info=info, status="started")
        user.jobs.append(job)
        session.commit()
        
        o = extendProvider(user, message.typ, offers, session=session)
        self[job.id] = ExJob(job.id, recipients, message, o)
        return self[job.id]

exJobs = ExJobs()