web.clientjob.model

Package web :: Package clientjob :: Module model |
[hide private]
[frames] | no frames]

# Source Code for Module web.clientjob.model

     1  '''
     2  Model for client's jobs.
     3  '''
     4
     5  from db import Base
     6  from sqlalchemy import Integer, Unicode, Column, DateTime, ForeignKey
     7  from sqlalchemy.orm import relation, backref
     8  import datetime
     9  from main.model import Computer
    10
    11
    12  metadata = Base.metadata
    13
    14 -class Job(Base):
    15      '''
    16      A instance of this class is created when a plugin sends a job to a
    17      client. The client will reply to the job with a new state and
    18      with a message. When this reponse comes to the server the
    19      plugin's callback_function is called. The Job instance is updated
    20      and it's passed as argument. The response won't be always finished. For
    21      example if a job takes a long time, it could send a response with
    22      state 'in progress' and the percentage in the message.
    23
    24      * 'id' is the primary key.
    25      * 'plugins' is the plugin that made the call.
    26      * 'callback_function' is called when a response comes.
    27      * 'request' is the command sent to the client.
    28      * 'state' three posibilities: open, 'in progress' and close
    29      * 'message' is the last 'string' sent by the client
    30      * 'creation_date' is the date when the job was sent
    31      * 'last_modified_date' is the date of the last response of the client
    32      '''
    33      __tablename__ = 'job'
    34      id = Column(Integer, primary_key=True)
    35      origin = Column(Unicode(128))
    36      callback_function = Column(Unicode(128))
    37      request = Column(Unicode(1024))
    38      state = Column(Unicode(128))
    39      message = Column(Unicode())
    40      creation_date = Column(DateTime())
    41      last_modified_date = Column(DateTime())
    42
    43      computer_id = Column(Integer, ForeignKey('computer.id'))
    44
    45      computer = relation(Computer, backref=backref('jobs', order_by=id))
    46
    47 -    def __init__(self):
    48          '''
    49          Creates a new open job
    50          '''
    51          self.state = u'open'
    52          self.create_date = datetime.datetime.now()
    53          self.last_modified_date = datetime.datetime.now()
    54
    55 -    def update_response(self, message, state):
    56          '''
    57          This function is called when a new response comes.
    58          The message, the state and the modified date are updated
    59          '''
    60          self.last_modified_date = datetime.datetime.now()
    61          self.message = message
    62          self.state = state
    63