--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/model/schema.py Thu Dec 22 03:13:34 2011 +0100
@@ -0,0 +1,68 @@
+# -*- coding: utf-8 -*-
+
+from sqlalchemy import Column, Integer, String, Sequence, Boolean, DateTime, Numeric, Enum
+from sqlalchemy.ext.declarative import declarative_base
+
+#relationship
+from sqlalchemy import ForeignKey
+from sqlalchemy.orm import relationship, backref
+
+Base = declarative_base()
+
+__tables__=["User", "Job", "Message", "Offer", "Userright"]
+
+class Userright(Base):
+ """Über welche Routen darf ein Benutzer Daten verschicken und welches sind die Standardrouten (<em>isDefault=1</em>) für den Benuter."""
+ __tablename__ = 'userright'
+ user_name = Column('user', String, ForeignKey('apiuser.name'), primary_key=True)
+ offer_name = Column('offer', String, ForeignKey('offer.name'), primary_key=True)
+ isDefault = Column(Boolean)
+ offer = relationship("Offer")
+
+class Offer(Base):
+ """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."""
+ __tablename__ = "offer"
+ name = Column(String, primary_key=True)
+ provider = Column(String)
+ route = Column(String)
+ typ = Column(String)
+
+
+class Message(Base):
+ """Wenn ein Vorgang von Iro Kosten erzeugt hat wird eine neue Zeile eingefügt. Solange nicht bezahlt wurde ist <em>isBilled=0</em>."""
+ __tablename__ = "message"
+ id = Column(Integer, Sequence('message_id_seq'), primary_key=True)
+ recipient = Column(String)
+ isBilled = Column(Boolean)
+ date = Column(DateTime)
+ price = Column(Numeric(8,2))
+ job_hash = Column("job",Integer, ForeignKey('job.hash'))
+ job = relationship("Job", backref=backref('messages'))
+ offer_id = Column("offer",String, ForeignKey('offer.name'))
+ offer = relationship("Offer", backref=backref('messages'))
+
+
+class Job(Base):
+ """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."""
+ __tablename__ = "job"
+ hash = Column(String, primary_key=True)
+ info = Column(String)
+ status = Column(Enum("init","started","sending","sended","error"))
+ user_id = Column("user", String, ForeignKey('apiuser.name'))
+ user = relationship("User", backref=backref('jobs'))
+
+class User(Base):
+ """Die Benutzerdatenbank von Iro. <em>ng_kunde</em> ist der verknüpfte netzguerilla.net Benutzer, der die Rechnung zahlt."""
+ __tablename__ = "apiuser"
+ name = Column(String, primary_key=True)
+ ng_kunde = Column(Integer)
+ apikey = Column(String,unique=True)
+ rights = relationship('Userright')
+ def __init__(self, name, apikey):
+ self.name=name
+ self.apikey=apikey
+
+ def __repr__(self):
+ return "<User('%s','%s')>"%(self.name,self.apikey)
+
+