iro/schema.py
author Sandro Knauß <knauss@netzguerilla.net>
Sun, 18 Dec 2011 18:03:45 +0100
branchdevel
changeset 81 fea4c6760ca5
parent 78 7a4c7b65f20b
permissions -rw-r--r--
ein wenig aufräumen
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
77
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     1
# -*- coding: utf-8 -*- 
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     2
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     3
from sqlalchemy import Column, Integer, String, Sequence, Boolean, DateTime, Numeric, Enum
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     4
from sqlalchemy import create_engine
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     5
from sqlalchemy.ext.declarative import declarative_base
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     6
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     7
#relationship
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     8
from sqlalchemy import ForeignKey
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     9
from sqlalchemy.orm import relationship, backref
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    10
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    11
engine = create_engine('sqlite:///:memory:', echo=True)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    12
Base = declarative_base()
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    13
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    14
__tables__=["User", "Job", "Message", "Offer", "Userright"]
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    15
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    16
class Userright(Base):
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    17
    """Über welche Routen darf ein Benutzer Daten verschicken und welches sind die Standardrouten (<em>isDefault=1</em>) für den Benuter."""
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    18
    __tablename__ = 'userright'
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    19
    user_name = Column('user', String, ForeignKey('apiuser.name'), primary_key=True)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    20
    offer_name = Column('offer', String, ForeignKey('offer.name'), primary_key=True)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    21
    isDefault = Column(Boolean)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
    offer = relationship("Offer")
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    23
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
class Offer(Base):
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
    """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."""
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    26
    __tablename__ = "offer"
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    27
    name = Column(String, primary_key=True)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    28
    provider = Column(String)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    29
    route = Column(String)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    30
    typ = Column(String)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    31
    
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    32
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    33
class Message(Base):
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    34
    """Wenn ein Vorgang von Iro Kosten erzeugt hat wird eine neue Zeile eingefügt. Solange nicht bezahlt wurde ist <em>isBilled=0</em>."""
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    35
    __tablename__ = "message"
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    36
    id = Column(Integer, Sequence('message_id_seq'), primary_key=True)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    37
    recipient = Column(String)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    38
    isBilled = Column(Boolean)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    39
    date = Column(DateTime)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    40
    price = Column(Numeric(8,2))
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    41
    job_hash = Column("job",Integer, ForeignKey('job.hash'))
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    42
    job = relationship("Job", backref=backref('messages'))
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    43
    offer_id = Column("offer",String, ForeignKey('offer.name'))
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    44
    offer = relationship("Offer", backref=backref('messages'))
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    45
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    46
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    47
class Job(Base):
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    48
    """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."""
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    49
    __tablename__ = "job"
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    50
    hash = Column(String, primary_key=True)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    51
    info = Column(String)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    52
    status = Column(Enum("init","started","sending","sended","error"))
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    53
    user_id = Column("user", String, ForeignKey('apiuser.name'))
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    54
    user = relationship("User", backref=backref('jobs'))
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    55
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    56
class User(Base):
78
7a4c7b65f20b adding ng_user
Sandro Knauß <knauss@netzguerilla.net>
parents: 77
diff changeset
    57
    """Die Benutzerdatenbank von Iro. <em>ng_kunde</em> ist der verknüpfte netzguerilla.net Benutzer, der die Rechnung zahlt."""
77
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    58
    __tablename__ = "apiuser"
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    59
    name = Column(String, primary_key=True)
78
7a4c7b65f20b adding ng_user
Sandro Knauß <knauss@netzguerilla.net>
parents: 77
diff changeset
    60
    ng_kunde = Column(Integer)
77
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    61
    apikey = Column(String,unique=True)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    62
    rights = relationship('Userright')
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    63
    def __init__(self, name, apikey):
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    64
        self.name=name
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    65
        self.apikey=apikey
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    66
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    67
    def __repr__(self):
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    68
        return "<User('%s','%s')>"%(self.name,self.apikey)
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    69
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    70
7dce6c0f06fb adding database schema to documentation.
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    71
#Base.metadata.create_all(engine)