iro/controller/viewinterface.py
branchdevel
changeset 268 d0fcb1cde990
parent 253 e8d56537c9cc
child 275 88d45c846f2b
equal deleted inserted replaced
267:ef2df3f23cb1 268:d0fcb1cde990
    12     @validate(kwd="detailed", func=vBool, need=False)
    12     @validate(kwd="detailed", func=vBool, need=False)
    13     @validate(kwd="id", func=vInteger, minv=0, need=False, none_allowed=True)
    13     @validate(kwd="id", func=vInteger, minv=0, need=False, none_allowed=True)
    14     @vUser
    14     @vUser
    15     @dbdefer
    15     @dbdefer
    16     def status(self, session, user, id=None, detailed=False):
    16     def status(self, session, user, id=None, detailed=False):
    17         '''Gibt den aktuellen Status eines Auftrages oder Mehreren zurück.
    17         '''Returns the status of one or more jobs.
    18 
    18 
    19         :param string apikey: der API Key
    19         :param string user: apikey of a user
    20         :param hash id: Eine Auftragsnummer
    20         :param integer id: one job id
    21         :param `boolean` detailed: Details ausgeben
    21         :param `boolean` detailed: return more details about the status
    22 
    22 
    23         :return dict: 
    23         :return dict: 
    24            - `key` ist die Auftragsnummer
    24            - `key` -- is the job id
    25            - [`key`][**'status'**] -- Status des Auftrages
    25            - [`key`][**'status'**] -- status of the job
    26 
    26 
    27         .. warning:: detailed is not used yet.
    27         .. warning:: detailed is not used yet.
    28         
    28         
    29         >>> status(APIKEY)
    29         >>> status(APIKEY)
    30         {"1":  {"status":"sended"},
    30         {"1":  {"status":"sended"},
    31          "2":  {"status":"error"},
    31          "2":  {"status":"error"},
    32          "10": {"status":"sending"}}
    32          "10": {"status":"sending"}}
    33 
    33 
    34         >>> status(APIKEY,"10")
    34         >>> status(APIKEY,10)
    35         {"10": {"status":"sending"}}
    35         {"10": {"status":"sending"}}
    36         '''
    36         '''
    37         user = session.merge(user)
    37         user = session.merge(user)
    38         ret={}
    38         ret={}
    39         if not id:
    39         if not id:
    46    
    46    
    47     @validate(kwd="recipients",func=vTel)
    47     @validate(kwd="recipients",func=vTel)
    48     @vUser
    48     @vUser
    49     @validate(kwd="route", func=vRoute, typ="sms")
    49     @validate(kwd="route", func=vRoute, typ="sms")
    50     def sms(self, user, message, recipients, route="default", info=""):
    50     def sms(self, user, message, recipients, route="default", info=""):
    51         '''Versendet eine SMS.
    51         '''Send a sms.
    52 
    52 
    53         :param string apikey: Der API Key
    53         :param string user: apikey of a user
    54         :param string message: Nachricht
    54         :param string message: message
    55         :param list recipients: eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
    55         :param list recipients:  a list of telefon numbers (use ITU-T E.123)
    56         :param route: Route über den geschickt werden soll, 
    56         :param route: route to use to send, or a list of routes as fallback
    57                             oder eine Liste von Routen, um Fallbacks anzugeben
       
    58         :type route: string|list
    57         :type route: string|list
    59         :param string info: Infostring um eine Nachricht einer Gruppe zuorden zu können.
    58         :param string info: a name, to combine different jobs to one billing group
    60 
    59 
    61         :return hash: Die ID des Auftrages
    60         :return integer: the job id
    62 
       
    63         '''
    61         '''
    64         d = createJob(user, recipients, SMS(message), route, info)
    62         d = createJob(user, recipients, SMS(message), route, info)
    65         def ret(job):
    63         def ret(job):
    66             return job.dbjob
    64             return job.dbjob
    67         d.addCallback(ret)
    65         d.addCallback(ret)
    69    
    67    
    70     @validate(kwd="recipients",func=vTel)
    68     @validate(kwd="recipients",func=vTel)
    71     @vUser
    69     @vUser
    72     @validate(kwd="route",func=vRoute, typ="fax")
    70     @validate(kwd="route",func=vRoute, typ="fax")
    73     def fax(self, user, subject, fax, recipients, route="default", info=""):
    71     def fax(self, user, subject, fax, recipients, route="default", info=""):
    74         '''Versendet ein FAX.
    72         '''Send a fax.
    75 
    73 
    76         :param string apikey: Der API Key
    74         :param string user: apikey of a user
    77         :param string subject: Der Betreff
    75         :param string subject: subject
    78         :param string fax: Der base64 kodierte content
    76         :param string fax: content (base64 encoded)
    79         :param list recipients: Eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
    77         :param list recipients:  a list of telefon numbers (use ITU-T E.123)
    80         :param route: Route über den geschickt werden soll, 
    78         :param route: route to use to send, or a list of routes as fallback
    81                             oder eine Liste von Routen, um Fallbacks anzugeben
       
    82         :type route: string|list
    79         :type route: string|list
    83         :param string info: Infostring um eine Nachricht einer Gruppe zuorden zu können.
    80         :param string info: a name, to combine different jobs to one billing group
    84 
    81 
    85         :return hash: Die ID des Auftrages
    82         :return integer: the job id
    86         '''
    83         '''
    87         d = createJob(user, recipients, Fax(subject, fax), route, info)
    84         d = createJob(user, recipients, Fax(subject, fax), route, info)
    88         def ret(job):
    85         def ret(job):
    89             return job.dbjob
    86             return job.dbjob
    90         d.addCallback(ret)
    87         d.addCallback(ret)
    93     @validate(kwd="recipients",func=vEmail, allowString=False)
    90     @validate(kwd="recipients",func=vEmail, allowString=False)
    94     @validate(kwd="frm",func=vEmail, need=False, allowList=False)
    91     @validate(kwd="frm",func=vEmail, need=False, allowList=False)
    95     @vUser
    92     @vUser
    96     @validate(kwd="route",func=vRoute, typ="mail")
    93     @validate(kwd="route",func=vRoute, typ="mail")
    97     def mail(self, user, subject, body, recipients, frm=None, route="default", info=""):
    94     def mail(self, user, subject, body, recipients, frm=None, route="default", info=""):
    98         '''Versendet eine Email.
    95         '''Send a mail.
    99 
    96 
   100         :param string apikey: Der API Key
    97         :param string user: apikey of a user
   101         :param string subject: Der Betreff
    98         :param string subject: subject
   102         :param string body: Der Email Body
    99         :param string body: mail body
   103         :param list recipients: Eine Liste von Emailadressen
   100         :param list recipients:  a list of email addresses
   104         :param string frm: Die Absender Emailadresse
   101         :param route: route to use to send, or a list of routes as fallback
   105         :param route: Route über den geschickt werden soll, 
       
   106                             oder eine Liste von Routen, um Fallbacks anzugeben
       
   107         :type route: string|list
   102         :type route: string|list
   108         :param string info: Infostring um eine Nachricht einer Gruppe zuorden zu können.
   103         :param string info: a name, to combine different jobs to one billing group
   109 
   104 
   110         :return hash: Die ID des Auftrages
   105         :return integer: the job id
   111         '''
   106         '''
   112 
       
   113         d = createJob(user, recipients, Mail(subject, body, frm), route, info)
   107         d = createJob(user, recipients, Mail(subject, body, frm), route, info)
   114         def ret(job):
   108         def ret(job):
   115             return job.dbjob
   109             return job.dbjob
   116         d.addCallback(ret)
   110         d.addCallback(ret)
   117         return d
   111         return d
   118        
   112        
   119     @validate(kwd="typ", func=vTyp)
   113     @validate(kwd="typ", func=vTyp)
   120     @vUser
   114     @vUser
   121     @dbdefer
   115     @dbdefer
   122     def routes(self, session, user, typ):
   116     def routes(self, session, user, typ):
   123         '''Gibt eine Liste aller verfügbaren Provider zurück.
   117         '''Returns a list of all possible offernames.
   124 
   118 
   125         :param string apikey: Der API Key
   119         :param string user: apikey of a user
   126         :param string typ: Der Typ zu dem die Providerloste ausgeben werden soll
   120         :param string typ: a typ of message -- one of in this list ["sms","fax","mail"]
   127                      Einer der Liste ["sms","fax","mail"]
   121 
   128 
   122         :return list: a list of all possible offer names for a typ
   129         :return list: Eine Liste aller möglichen Provider
       
   130         '''
   123         '''
   131         user = session.merge(user)
   124         user = session.merge(user)
   132         offers = user.routes(typ)
   125         offers = user.routes(typ)
   133         return [u[0] for u in offers]
   126         return [u[0] for u in offers]
   134         
   127         
   135     @validate(kwd="typ", func=vTyp)
   128     @validate(kwd="typ", func=vTyp)
   136     @vUser
   129     @vUser
   137     @dbdefer
   130     @dbdefer
   138     def defaultRoute(self, session, user, typ):
   131     def defaultRoute(self, session, user, typ):
   139         '''Gibt den Standardprovider zurück.
   132         '''Returns all default offernames.
   140  
   133  
   141         :param string apikey: Der API Key
   134         :param string user: apikey of a user
   142         :param string typ: Der Typ zu dem die Providerliste ausgeben werden soll
   135 
   143                      Einer der Liste ["sms","fax","mail"]
   136         :return list: a list of all possible offer names for a typ
   144 
       
   145         :return string: Der Standardprovider für den angeben Typ
       
   146         '''
   137         '''
   147         user = session.merge(user)
   138         user = session.merge(user)
   148         offers = user.routes(typ, default=True)
   139         offers = user.routes(typ, default=True)
   149         return [u[0] for u in offers]
   140         return [u[0] for u in offers]
   150 
   141 
   151     @vUser
   142     @vUser
   152     @dbdefer
   143     @dbdefer
   153     def bill(self, session, user):
   144     def bill(self, session, user):
   154         '''Gibt eine Rechnung zurück über die noch nicht abgerechneten Nachrichten und des Preises.
   145         '''Returns the bill, of not paid messages.
   155 
   146 
   156         :param string apikey: Der API Key
   147         :param string user: apikey of a user
   157 
   148 
   158         :return dict:
   149         :return dict:
   159             - `route` -- Entspricht einer Route; **"total"** für die Gesammtübersicht
   150             - `route` -- one offer name ; **"total"** complete sum
   160             - [`route`][`info`][**anz**] -- Anzahl der verschickten Nachrichten pro "Infoklasse"
   151             - [`route`][`info`][**anz**] -- Number of sended messages in one billing group
   161             - [`route`][`info`][**price**] -- Preis pro "Infoklasse"
   152             - [`route`][`info`][**price**] -- Price for one billing group
   162             - [`route` | **total**][**anz**] -- Anzahl der verschickten Nachrichten pro Route 
   153             - [`route` | **total**][**anz**] -- Number of sended messages for one offer
   163             - [`route` | **total**][**price**] -- Preis für eine Route
   154             - [`route` | **total**][**price**] -- Price for one offer
   164 
   155 
   165         >>> bill(APIKEY)
   156         >>> bill(APIKEY)
   166         {"route1": {"info1":{"anz":1,"price":2.00},
   157         {"route1": {"info1":{"anz":1,"price":2.00},
   167                     "info2":{"anz":2,"price":5.00},
   158                     "info2":{"anz":2,"price":5.00},
   168                     "anz":3,"price":7.00},
   159                     "anz":3,"price":7.00},
   189         ret['total']['price'] = float(ret['total']['price'])
   180         ret['total']['price'] = float(ret['total']['price'])
   190         return ret
   181         return ret
   191 
   182 
   192     @validate(kwd="recipients",func=vTel)
   183     @validate(kwd="recipients",func=vTel)
   193     def telnumber(self,recipients):
   184     def telnumber(self,recipients):
   194         '''Gibt True zurück, falls alle übergebene Telefonnummern valide sind.
   185         '''Return True, if all telnumbers a vaild.
   195         
   186         
   196         :param list recipients: Eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
   187         :param list recipients:  a list of telnumbers (use ITU-T E.123)
   197 
   188 
   198         :return: True -- alle übergebene Nummern sind valide
   189         :return: True -- all numbers are valid
   199         '''
   190         '''
   200         return True
   191         return True
   201 
   192 
   202     @validate(kwd="recipients",func=vEmail)
   193     @validate(kwd="recipients",func=vEmail)
   203     def email(self,recipients):
   194     def email(self,recipients):
   204         '''Gibt True zurück, falls alle übergebene Emailadressen valide sind.
   195         '''Return True, if all mailadresses a valid.
   205         
   196         
   206         :param list recipients: Eine Liste von Emailadressen
   197         :param list recipients:  a list of mailadresses
   207 
   198 
   208         :return: True -- alle übergebene Nummern sind valide
   199         :return: True -- all addresses are valid
   209         '''
   200         '''
   210         return True
   201         return True