iro/controller/viewinterface.py
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 27 Jan 2012 21:21:41 +0100
branchdevel
changeset 117 351a02310dd8
parent 115 323d06431100
child 119 3462c2c90f95
permissions -rw-r--r--
model restructuring

# -*- coding: utf-8 -*-
from ..model.decorators import vUser, vRoute, dbdefer, vTyp
from ..model.schema import User
from ..validate import validate, vBool, vHash, vTel, vEmail

class Interface(object):
    '''class for a xmlrpc user
    '''
    
    @validate(kwd="detailed", func=vBool, need=False)
    @validate(kwd="id", func=vHash, need=False, maxlength=40)
    @vUser
    def status(self, user, id=None, detailed=False):
        '''Gibt den aktuellen Status eines Auftrages oder Mehreren zurück.

        Keywords:
        apikey[string]: Der API Key
        id[hash]: Eine Auftragsnummer
        detailed[boolean]: Details ausgeben

        Return:
        jobs[list]: Eine Liste der Aufträge.
        job.name[string]: Angebener Name
        job.status[string]: Status des Auftrages


        '''
        if id or detailed:
            return str(user),id,detailed
        else:
            return str(user)
        #return user.status(id,detailed)
        return ""

    @vUser
    @validate(kwd="id", func=vHash,maxlength=40)
    def stop(self, user, id):
        '''Stoppt den angegeben Auftrag.

        Keywords:
        apikey[string]: Der API Key
        id[hash]: Eine Auftragsnummer

        Return:

        '''
        return ""
    
    @validate(kwd="recipients",func=vTel)
    @vUser
    @vRoute(typ="sms")
    def sms(self, user, message, recipients, route="default", info=""):
        '''Versendet eine SMS.

        Keywords:
        apikey[string]: Der API Key
        message[string]: Nachricht
        recipients[list]: eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
        route[string|list]: Route über den geschickt werden soll, 
                            oder eine Liste von Routen, um Fallbacks anzugeben

        Return:
        id[hash]: Die ID des Auftrages

        '''
        return ""
   
    @validate(kwd="recipients",func=vTel)
    @vUser
    @vRoute(typ="fax")
    def fax(self, user, subject, fax, recipients, route="default", info=""):
        '''Versendet ein FAX.

        Keywords:
        apikey[string]: Der API Key
        subject[string]: Der Betreff
        fax[string]: Das PDF base64 kodiert
        recipients[list]: Eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
        route[string|list]: Route über den geschickt werden soll, 
                            oder eine Liste von Routen, um Fallbacks anzugeben

        Return:
        id[hash]: Die ID des Auftrages

        '''
        return ""

    @validate(kwd="recipients",func=vEmail)
    @vUser
    @vRoute(typ="mail")
    def mail(self, user, subject,  body, recipients, frm, route="default", info=""):
        '''Versendet eine Email.

        Keywords:
        apikey[string]: Der API Key
        subject[string]: Der Betreff
        body[string]: Der Email Body
        recipients[list]: Eine Liste von Emailadressen
        frm[string]: Die Absender Emailadresse
        route[string|list]: Route über den geschickt werden soll, 
                            oder eine Liste von Routen, um Fallbacks anzugeben

        Return:
        id[hash]: Die ID des Auftrages

        '''
        return ""
       
    @validate(kwd="typ", func=vTyp)
    @vUser
    @dbdefer
    def routes(self, user, typ, session):
        '''Gibt eine Liste aller verfügbaren Provider zurück.

        Keywords:
        apikey[string]: Der API Key
        typ[string]: Der Typ zu dem die Providerloste ausgeben werden soll
                     Einer der Liste ["sms","fax","mail"]

        Return:
        providerlist[list]: Eine Liste aller möglichen Provider

        '''
        user = session.query(User).filter_by(name=user.name).first()
        return [u.offer_name for u in user.rights]
        
    @validate(kwd="typ", func=vTyp)
    @vUser
    @dbdefer
    def defaultRoute(self, user, typ, session):
        '''Gibt den Standardprovider zurück.
 
        Keywords:
        apikey[string]: Der API Key
        typ[string]: Der Typ zu dem die Providerliste ausgeben werden soll
                     Einer der Liste ["sms","fax","mail"]

        Return:
        provider[string]: Der Standardprovider für den angeben Typ


        '''
        user = session.query(User).filter_by(name=user.name).first()
        return [u.offer_name for u in user.rights if u.isDefault == True]

    @vUser
    def statistic(self, user):
        '''Gibt eine Statik zurück über die versendendeten Nachrichten und des Preises.

        Keywords:
        apikey[string]: Der API Key

        Return:
        statistic[list]: Eine Liste nach Nachrichtentypen
        '''
        return ""