iro/model/schema.py
branchdevel
changeset 136 ca926774e16c
parent 135 f8640c663e3e
child 140 75d0eaaa871d
equal deleted inserted replaced
135:f8640c663e3e 136:ca926774e16c
    38                   ]
    38                   ]
    39 
    39 
    40         filters = [ Message.isBilled==False,                # only unbilled messages
    40         filters = [ Message.isBilled==False,                # only unbilled messages
    41                    Job.user==self.user,                     # only jobs connected to user
    41                    Job.user==self.user,                     # only jobs connected to user
    42                    Message.offer==self.offer,               # only messages in the right offer
    42                    Message.offer==self.offer,               # only messages in the right offer
    43                    Message.job_hash==Job.hash,              # join Message and Job
    43                    Message.job_id==Job.id,                  # join Message and Job
    44                 ]
    44                 ]
    45         return object_session(self).query(*query).filter(and_(*filters)).group_by(Job.info)
    45         return object_session(self).query(*query).filter(and_(*filters)).group_by(Job.info)
    46 
    46 
    47 class Offer(Base):
    47 class Offer(Base):
    48     """Alle Routen über die SMS, Faxe und Mails verschickt werden könnnen. <em>provider</em>, <em>typ</em> und <em>route</em> werden verwendet, um die entsprechenden Zugangsdaten laden zu können."""
    48     """Alle Routen über die SMS, Faxe und Mails verschickt werden könnnen. <em>provider</em>, <em>typ</em> und <em>route</em> werden verwendet, um die entsprechenden Zugangsdaten laden zu können."""
    59     id = Column(Integer, Sequence('message_id_seq'), primary_key=True)
    59     id = Column(Integer, Sequence('message_id_seq'), primary_key=True)
    60     recipient = Column(String(100))
    60     recipient = Column(String(100))
    61     isBilled = Column(Boolean)
    61     isBilled = Column(Boolean)
    62     date = Column(DateTime)
    62     date = Column(DateTime)
    63     price = Column(Numeric(8,4))
    63     price = Column(Numeric(8,4))
    64     job_hash = Column("job", String(40), ForeignKey('job.hash'))
    64     job_id = Column("job", String(40), ForeignKey('job.id'))
    65     job = relationship("Job", backref=backref('messages'))
    65     job = relationship("Job", backref=backref('messages'))
    66     offer_id = Column("offer",String(100), ForeignKey('offer.name'))
    66     offer_id = Column("offer",String(100), ForeignKey('offer.name'))
    67     offer = relationship("Offer", backref=backref('messages'))
    67     offer = relationship("Offer", backref=backref('messages'))
    68 
    68 
    69 
    69 
    70 class Job(Base):
    70 class Job(Base):
    71     """Ein kompletter Auftrag, der an Iro zum verschicken übergeben wird. Status zeigt den generellen Status des Auftrages an (<em>init</em>, <em>started</em>, <em>sending</em>, <em>sended</em> oder <em>error</em>). <em>info</em> wird verwendet um dem Benutzer eine Möglickeit zu geben verschiede Auftragsgruppen zu erstellen."""
    71     """Ein kompletter Auftrag, der an Iro zum verschicken übergeben wird. Status zeigt den generellen Status des Auftrages an (<em>init</em>, <em>started</em>, <em>sending</em>, <em>sended</em> oder <em>error</em>). <em>info</em> wird verwendet um dem Benutzer eine Möglickeit zu geben verschiede Auftragsgruppen zu erstellen."""
    72     __tablename__ = "job"
    72     __tablename__ = "job"
    73     hash = Column(String(40), primary_key=True)
    73     id = Column(Integer, Sequence('job_id_seq'), primary_key=True)
    74     info = Column(String(100))
    74     info = Column(String(100))
    75     status = Column(Enum("init","started","sending","sended","error"))
    75     status = Column(Enum("init","started","sending","sended","error"))
    76     user_id = Column("user", String(100), ForeignKey('apiuser.name'))
    76     user_id = Column("user", String(100), ForeignKey('apiuser.name'))
    77     user = relationship("User", backref=backref('jobs'))
    77     user = relationship("User", backref=backref('jobs'))
    78 
    78 
    79     def __repr__(self):
    79     def __repr__(self):
    80         return "<Job('%s','%s','%s','%s')>"%(self.hash,self.info, self.status, self.user_id)
    80         return "<Job('%s','%s','%s','%s')>"%(self.id,self.info, self.status, self.user_id)
    81 
    81 
    82 class User(Base):
    82 class User(Base):
    83     """Die Benutzerdatenbank von Iro. <em>ng_kunde</em> ist der verknüpfte netzguerilla.net Benutzer, der die Rechnung zahlt."""
    83     """Die Benutzerdatenbank von Iro. <em>ng_kunde</em> ist der verknüpfte netzguerilla.net Benutzer, der die Rechnung zahlt."""
    84     __tablename__ = "apiuser"
    84     __tablename__ = "apiuser"
    85     name = Column(String(100), primary_key=True)
    85     name = Column(String(100), primary_key=True)
   100         if isDefault is not None:
   100         if isDefault is not None:
   101             filters.append(Userright.isDefault==isDefault)
   101             filters.append(Userright.isDefault==isDefault)
   102         return object_session(self).query(Userright.offer_name).join(Offer,User).filter(and_(*filters))
   102         return object_session(self).query(Userright.offer_name).join(Offer,User).filter(and_(*filters))
   103     
   103     
   104     def job(self, id):
   104     def job(self, id):
   105         job = object_session(self).query(Job).join(User).filter(and_(User.name == self.name, Job.hash==id)).first()
   105         job = object_session(self).query(Job).join(User).filter(and_(User.name == self.name, Job.id==id)).first()
   106         if job is None:
   106         if job is None:
   107             raise JobNotFound()
   107             raise JobNotFound()
   108         return job
   108         return job