iro/model/schema.py
author Sandro Knauß <bugs@sandroknauss.de>
Tue, 15 Apr 2025 01:22:19 +0200
changeset 316 63c681b8e92c
parent 312 42fd5075a5d1
permissions -rw-r--r--
fix link to about.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
294
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
     1
# Copyright (c) 2012 netzguerilla.net <iro@netzguerilla.net>
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
     2
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
     3
# This file is part of Iro.
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
     4
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
     5
# Permission is hereby granted, free of charge, to any person obtaining a copy of
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
     6
# this software and associated documentation files (the "Software"), to deal in
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
     7
# the Software without restriction, including without limitation the rights to use,
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
     8
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
     9
# #Software, and to permit persons to whom the Software is furnished to do so,
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
    10
# subject to the following conditions:
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
    11
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
    12
# The above copyright notice and this permission notice shall be included in
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
    13
# all copies or substantial portions of the Software.
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
    14
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
    15
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
    16
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
    17
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
    18
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
    19
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
    20
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 275
diff changeset
    21
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
# -*- coding: utf-8 -*- 
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    23
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
from sqlalchemy import Column, Integer, String, Sequence, Boolean, DateTime, Numeric, Enum
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
from sqlalchemy.ext.declarative import declarative_base
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    26
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    27
#relationship
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    28
from sqlalchemy import ForeignKey
121
ca63b6776231 putting routes logic to schema
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    29
from sqlalchemy.orm import relationship, backref, object_session
ca63b6776231 putting routes logic to schema
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    30
127
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    31
from sqlalchemy import and_
153
0e50d10c8b6c handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents: 150
diff changeset
    32
from sqlalchemy.orm.exc import DetachedInstanceError 
127
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    33
import sqlalchemy.sql.functions as func
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    34
312
Sandro Knauß <bugs@sandroknauss.de>
parents: 308
diff changeset
    35
from . import job
125
19b3f383c9ce getting job status form db
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    36
from ..error import JobNotFound
19b3f383c9ce getting job status form db
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    37
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    38
Base = declarative_base()
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    39
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    40
class Userright(Base):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    41
    """Allowed offers for one user. Default routes are sorted by **default** value."""
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    42
    __tablename__ = 'userright'
94
4349f10d77a6 updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    43
    user_name = Column('user', String(100), ForeignKey('apiuser.name'), primary_key=True)
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    44
    """username"""
94
4349f10d77a6 updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    45
    offer_name = Column('offer', String(100), ForeignKey('offer.name'), primary_key=True)
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    46
    """offername"""
201
843a7bcecbc8 renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents: 176
diff changeset
    47
    default = Column(Integer)
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    48
    """sorting defaults routes with this value"""
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    49
    offer = relationship("Offer")
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    50
    """connected :class:`Offer` object"""
127
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    51
    user = relationship("User")
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    52
    """connected :class:`User` object"""
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    53
201
843a7bcecbc8 renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents: 176
diff changeset
    54
    def __init__(self, offer, default=None):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    55
        """Constructor of Userright class.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    56
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    57
        :param `Offer` offer: a offer object
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    58
        :param integer default: default value
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    59
        """
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    60
117
351a02310dd8 model restructuring
Sandro Knauß <knauss@netzguerilla.net>
parents: 94
diff changeset
    61
        self.offer = offer
201
843a7bcecbc8 renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents: 176
diff changeset
    62
        self.default = default
117
351a02310dd8 model restructuring
Sandro Knauß <knauss@netzguerilla.net>
parents: 94
diff changeset
    63
127
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    64
    @property
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    65
    def bill(self):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    66
        """returns a list of unbilled messages grouped by Job.info"""
127
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    67
        query = [ func.count(Message.id).label('anz'),      # anz of messages
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    68
                  func.sum(Message.price).label("price"),   # price of the messages
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    69
                  Job.info.label('info'),                   # info tag
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    70
                  ]
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    71
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    72
        filters = [ Message.isBilled==False,                # only unbilled messages
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    73
                   Job.user==self.user,                     # only jobs connected to user
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    74
                   Message.offer==self.offer,               # only messages in the right offer
136
ca926774e16c now using job.id - integer autoincrement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    75
                   Message.job_id==Job.id,                  # join Message and Job
127
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    76
                ]
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    77
        return object_session(self).query(*query).filter(and_(*filters)).group_by(Job.info)
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
    78
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    79
class Offer(Base):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    80
    """All possible Offers over a Message can be sended. **provider**, **typ** and **route** are used to get the data form configuration file."""
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    81
    __tablename__ = "offer"
94
4349f10d77a6 updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    82
    name = Column(String(100), primary_key=True)
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    83
    """name of the offer"""
94
4349f10d77a6 updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    84
    provider = Column(String(100))
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    85
    """provider name"""
94
4349f10d77a6 updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    86
    route = Column(String(100))
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    87
    """route of the provider"""
94
4349f10d77a6 updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
    88
    typ = Column(String(100))
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    89
    """typ of message"""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    90
    
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    91
    def __init__(self, **kwargs):
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    92
        Base.__init__(self,**kwargs)
122
b55754aa4f96 nun typs query into session object
Sandro Knauß <knauss@netzguerilla.net>
parents: 121
diff changeset
    93
  
176
71f1108758ef more logic to schema.
Sandro Knauß <knauss@netzguerilla.net>
parents: 153
diff changeset
    94
    @classmethod
71f1108758ef more logic to schema.
Sandro Knauß <knauss@netzguerilla.net>
parents: 153
diff changeset
    95
    def get(cls, session, provider, route, typ):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
    96
        """returns a Offer object."""
176
71f1108758ef more logic to schema.
Sandro Knauß <knauss@netzguerilla.net>
parents: 153
diff changeset
    97
        return session.query(cls).filter(and_(cls.provider==provider, cls.route==route, cls.typ==typ)).first()
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    98
205
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 203
diff changeset
    99
    @classmethod
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 203
diff changeset
   100
    def routes(cls, session, typ):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   101
        """returns a query object of all possible offers.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   102
        
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   103
        :param string typ: get all offers that support this typ
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   104
        """
205
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 203
diff changeset
   105
        return session.query(cls).filter_by(typ=typ)
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 203
diff changeset
   106
208
5da0f00ef872 session.typs -> Offer.typs
Sandro Knauß <knauss@netzguerilla.net>
parents: 205
diff changeset
   107
    @classmethod
5da0f00ef872 session.typs -> Offer.typs
Sandro Knauß <knauss@netzguerilla.net>
parents: 205
diff changeset
   108
    def typs(cls, session):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   109
        """returns a list of all possible types.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   110
        """
208
5da0f00ef872 session.typs -> Offer.typs
Sandro Knauß <knauss@netzguerilla.net>
parents: 205
diff changeset
   111
        return session.query(cls.typ).distinct()
205
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 203
diff changeset
   112
211
3fc1f400c107 adding Offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 208
diff changeset
   113
    @classmethod
3fc1f400c107 adding Offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 208
diff changeset
   114
    def providers(cls, session, typ):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   115
        """returns a list of all possible providers.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   116
        
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   117
        :param string typ: get all providers that support this typ
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   118
        """
211
3fc1f400c107 adding Offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 208
diff changeset
   119
        return session.query(cls.provider).filter_by(typ=typ).distinct()
3fc1f400c107 adding Offer.provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 208
diff changeset
   120
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   121
class Message(Base):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   122
    """A message that has created costs.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   123
    
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   124
    **isBilled** is False since the bill is paid.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   125
    """
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   126
    __tablename__ = "message"
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   127
    id = Column(Integer, Sequence('message_id_seq'), primary_key=True)
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   128
    """primary key of the message"""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   129
94
4349f10d77a6 updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
   130
    recipient = Column(String(100))
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   131
    """string representation of the recipient"""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   132
    
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   133
    isBilled = Column(Boolean)
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   134
    """is bill paid?"""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   135
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   136
    date = Column(DateTime)
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   137
    """date of sending the message"""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   138
127
79966b937274 made bill (aka statistic) function ready
Sandro Knauß <knauss@netzguerilla.net>
parents: 125
diff changeset
   139
    price = Column(Numeric(8,4))
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   140
    """price of sending the message"""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   141
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 211
diff changeset
   142
    count = Column(Integer)
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   143
    """Count of sended messages"""
215
5bacdb7e94d1 smstrade.StatusCode update
Sandro Knauß <knauss@netzguerilla.net>
parents: 211
diff changeset
   144
    exID = Column(String(100))
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   145
    """external API id """
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   146
136
ca926774e16c now using job.id - integer autoincrement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
   147
    job_id = Column("job", String(40), ForeignKey('job.id'))
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   148
    """id of the connected job"""
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   149
    job = relationship("Job", backref=backref('messages'))
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   150
    """connected :class:`Job` object"""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   151
    
94
4349f10d77a6 updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
   152
    offer_id = Column("offer",String(100), ForeignKey('offer.name'))
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   153
    """sended message over this offer woth ithe offer.name"""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   154
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   155
    offer = relationship("Offer", backref=backref('messages'))
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   156
    """connected :class:`Offer` object"""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   157
    
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   158
    def __init__(self, **kwargs):
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   159
        Base.__init__(self,**kwargs)
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   160
308
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   161
class Status(Base):
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   162
    """ Status updates from external"""
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   163
    __tablename__ = "status"
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   164
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   165
    id = Column(Integer, Sequence('status_id_seq'), primary_key=True)
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   166
    """primary key of the message"""
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   167
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   168
    date = Column(DateTime)
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   169
    """date of status message"""
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   170
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   171
    recipient = Column(String(100))
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   172
    """string representation of the recipient"""
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   173
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   174
    exID = Column(String(100))
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   175
    """external API id """
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   176
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   177
    status = Column(Integer)
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   178
    """ status of the message"""
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   179
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   180
    sender = Column(String(100))
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   181
    """ sender of the message """
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   182
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   183
    data = Column(String(2550))
a891fdd0c1a9 cmtelecom status inbound provider added.
hefee
parents: 294
diff changeset
   184
    """ rest of the data """
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   185
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   186
class Job(Base):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   187
    """A complete Job.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   188
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   189
    - **status** show the status of the job (``init``, ``started``, ``sending``, ``sended`` or ``error``). 
263
52284710c0b4 iro.model: adding docstrings
Sandro Knauß <knauss@netzguerilla.net>
parents: 258
diff changeset
   190
    - **info** is used to make it possible to create different billing groups for user.
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   191
    """
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   192
    __tablename__ = "job"
136
ca926774e16c now using job.id - integer autoincrement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
   193
    id = Column(Integer, Sequence('job_id_seq'), primary_key=True)
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   194
    """job id"""
94
4349f10d77a6 updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
   195
    info = Column(String(100))
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   196
    """job info, for billing porpuse"""
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   197
    status = Column(Enum("init","started","sending","sended","error"))
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   198
    """status of a job"""
94
4349f10d77a6 updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
   199
    user_id = Column("user", String(100), ForeignKey('apiuser.name'))
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   200
    """connected user id"""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   201
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   202
    user = relationship("User", backref=backref('jobs'))
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   203
    """connected :class:`User` object"""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   204
    
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   205
    def __init__(self, **kwargs):
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   206
        """
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   207
        .. automethod:: __repr__
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   208
        """
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   209
        Base.__init__(self,**kwargs)
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   210
140
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 136
diff changeset
   211
    @property
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 136
diff changeset
   212
    def extend(self):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   213
        """returns the connected :class:`iro.model.job.ExJob`"""
140
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 136
diff changeset
   214
        return job.exJobs[self.id]
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 136
diff changeset
   215
75d0eaaa871d start fixing job mangement
Sandro Knauß <knauss@netzguerilla.net>
parents: 136
diff changeset
   216
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents: 127
diff changeset
   217
    def __repr__(self):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   218
        """string representation of the Job class.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   219
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   220
        :return: ``<Job('id' ,'info', 'status', 'user_id')>``
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   221
        """
153
0e50d10c8b6c handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents: 150
diff changeset
   222
        try:
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   223
            return "<Job('%s' ,'%s', '%s', '%s')>"%(self.id,self.info, self.status, self.user_id)
153
0e50d10c8b6c handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents: 150
diff changeset
   224
        except DetachedInstanceError:
0e50d10c8b6c handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents: 150
diff changeset
   225
            return Base.__repr__(self)
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents: 127
diff changeset
   226
176
71f1108758ef more logic to schema.
Sandro Knauß <knauss@netzguerilla.net>
parents: 153
diff changeset
   227
    @classmethod
71f1108758ef more logic to schema.
Sandro Knauß <knauss@netzguerilla.net>
parents: 153
diff changeset
   228
    def get(cls, session, id):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   229
        """returns a job object from a given id"""
176
71f1108758ef more logic to schema.
Sandro Knauß <knauss@netzguerilla.net>
parents: 153
diff changeset
   230
        return session.query(cls).filter_by(id=id).first()
71f1108758ef more logic to schema.
Sandro Knauß <knauss@netzguerilla.net>
parents: 153
diff changeset
   231
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   232
class User(Base):
275
88d45c846f2b docu fixes
Sandro Knauß <knauss@netzguerilla.net>
parents: 263
diff changeset
   233
    """An user in iro."""
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   234
    __tablename__ = "apiuser"
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   235
    
94
4349f10d77a6 updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
   236
    name = Column(String(100), primary_key=True)
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   237
    """Username"""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   238
    
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   239
    ng_kunde = Column(Integer)
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   240
    """Connection to the netzguerilla userdatabase"""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   241
94
4349f10d77a6 updatating schema for mysql
Sandro Knauß <knauss@netzguerilla.net>
parents: 92
diff changeset
   242
    apikey = Column(String(50),unique=True)
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   243
    """apikey only [0-9a-f]"""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   244
    
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   245
    rights = relationship('Userright')
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   246
    """all allowed offers to send with."""
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   247
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   248
    def __init__(self, name, apikey):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   249
        """Constructor of User class.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   250
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   251
        :param string name: username
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   252
        :param string apikey: apikey for the user
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   253
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   254
        .. automethod:: __repr__
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   255
        """
92
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   256
        self.name=name
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   257
        self.apikey=apikey
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   258
f479738b4879 umbau zu MVC
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   259
    def __repr__(self):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   260
        """string representation of the user class.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   261
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   262
        :return: ``<User('name', 'apikey')>``
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   263
        """
153
0e50d10c8b6c handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents: 150
diff changeset
   264
        try:
0e50d10c8b6c handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents: 150
diff changeset
   265
            return "<User('%s','%s')>"%(self.name,self.apikey)
0e50d10c8b6c handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents: 150
diff changeset
   266
        except DetachedInstanceError:
0e50d10c8b6c handle detached objects
Sandro Knauß <knauss@netzguerilla.net>
parents: 150
diff changeset
   267
            return Base.__repr__(self)
121
ca63b6776231 putting routes logic to schema
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
   268
    
201
843a7bcecbc8 renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents: 176
diff changeset
   269
    def routes(self, typ, default = False):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   270
        """returns a query object to get all possible routes for a given typ
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   271
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   272
        :param string typ: the typ
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   273
        :param boolean default: use only default routes
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   274
        """
121
ca63b6776231 putting routes logic to schema
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
   275
        filters=[User.name == self.name,
ca63b6776231 putting routes logic to schema
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
   276
                Offer.typ == typ, 
ca63b6776231 putting routes logic to schema
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
   277
                ]
201
843a7bcecbc8 renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents: 176
diff changeset
   278
        if default:
843a7bcecbc8 renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents: 176
diff changeset
   279
            filters.append(Userright.default != None)
203
b543ab9a9724 tests for Userright.default added
Sandro Knauß <knauss@netzguerilla.net>
parents: 201
diff changeset
   280
        return object_session(self).query(Userright.offer_name).join(Offer,User).filter(and_(*filters)).order_by(Userright.default)
148
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   281
   
201
843a7bcecbc8 renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents: 176
diff changeset
   282
    def providers(self, typ, default = False):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   283
        """return a query object for all possible providers for a given typ
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   284
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   285
        :param string typ: the typ
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   286
        :param boolean default: use only default routes
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   287
        """
148
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   288
        filters=[User.name == self.name,
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   289
                Offer.typ == typ, 
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   290
                ]
201
843a7bcecbc8 renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents: 176
diff changeset
   291
        if default:
843a7bcecbc8 renameing Userright.isDefault(bool) -> default(int)
Sandro Knauß <knauss@netzguerilla.net>
parents: 176
diff changeset
   292
            filters.append(Userright.default != None)
148
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   293
        return object_session(self).query(Offer.provider).join(Userright,User).filter(and_(*filters))
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   294
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   295
    def has_right(self, typ, offer_name = None, provider = None, route = None):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   296
        """if a user has the right to use a offer, provider e. al. (arguments are and connected).
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   297
        
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   298
        :param string typ: the typ
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   299
        :param string offer_name: offer name
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   300
        :param string provider: provider name
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   301
        :param string route: a route name
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   302
        :return: offer_name or  None (not allwoed)
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   303
        :raises: :class:`sqlalchemy.orm.exc.MultipleResultsFound` if not a single offer match"""
148
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   304
        filters=[User.name == self.name,
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   305
                Offer.typ == typ, 
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   306
                ]
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   307
        if offer_name:
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   308
            filters.append(Userright.offer_name==offer_name)
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   309
        if provider:
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   310
            filters.append(Offer.provider==provider)
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   311
        if route:
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   312
            filters.append(Offer.route==route)
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   313
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   314
        return object_session(self).query(Userright.offer_name).join(Offer,User).filter(and_(*filters)).scalar()
11e0fdc1a58c fill extendProvider with life
Sandro Knauß <knauss@netzguerilla.net>
parents: 140
diff changeset
   315
125
19b3f383c9ce getting job status form db
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
   316
    def job(self, id):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   317
        """returns a job object.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   318
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   319
        :param integer id: id of a Job
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   320
        :return: :class:`Job`
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   321
        :raises: :exc:`iro.error.JobNotFound`
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 219
diff changeset
   322
        """
136
ca926774e16c now using job.id - integer autoincrement
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
   323
        job = object_session(self).query(Job).join(User).filter(and_(User.name == self.name, Job.id==id)).first()
125
19b3f383c9ce getting job status form db
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
   324
        if job is None:
19b3f383c9ce getting job status form db
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
   325
            raise JobNotFound()
19b3f383c9ce getting job status form db
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
   326
        return job