iro/user.py
changeset 71 0f3063b5e96b
parent 70 a9ee0fe847a8
child 73 f2f247a5b6c9
equal deleted inserted replaced
70:a9ee0fe847a8 71:0f3063b5e96b
    36         self.jobs={}
    36         self.jobs={}
    37         self.name=name
    37         self.name=name
    38         self.features=["mail", "sms", "fax", ]
    38         self.features=["mail", "sms", "fax", ]
    39 
    39 
    40     def status(self,id=None,detailed=False):
    40     def status(self,id=None,detailed=False):
    41         '''
    41         u'''Gibt den aktuellen Status eines Auftrages zurück.
    42         gets the status for a job
    42 
    43         if the id is None all Jobs of an user are given back
    43         Keywords:
       
    44         id[hash]: Eine Auftragsnummer
       
    45                   default - alle Aufträge ausgeben
       
    46         detailed[boolean]: Details ausgeben
       
    47                            default - False
       
    48 
       
    49         Return:
       
    50         jobs[list]: Eine Liste der Aufträge.
       
    51         job.name[string]: Angebener Name
       
    52         job.status[string]: Status des Auftrages
       
    53 
       
    54 
    44         '''
    55         '''
    45         try:
    56         try:
    46             jobs={}
    57             jobs={}
    47             if id==None:
    58             if id==None:
    48                 jobs=self.jobs
    59                 jobs=self.jobs
    64         except:
    75         except:
    65             logger.exception("Fehler in iro.user.status")
    76             logger.exception("Fehler in iro.user.status")
    66             return {}
    77             return {}
    67 
    78 
    68     def stop(self,id):
    79     def stop(self,id):
    69         '''
    80         u'''Stoppt den angegeben Auftrag.
    70         stops an job with id
    81 
       
    82         Keywords:
       
    83         id[hash]: Eine Auftragsnummer
       
    84 
       
    85         Return:
       
    86 
    71         '''
    87         '''
    72         try:
    88         try:
    73             job=self.jobs[id]
    89             job=self.jobs[id]
    74             job.stop()
    90             job.stop()
    75         except:
    91         except:
    76             raise NoID(id)
    92             raise NoID(id)
    77         job.stop()
    93         job.stop()
    78 
    94 
    79     
    95     
    80     def startSMS(self, message, recipients, provider="default"):
    96     def startSMS(self, message, recipients, provider="default"):
    81         '''
    97         u'''Versendet eine SMS.
    82         starts the SMS with message to recipients
    98 
       
    99         Keywords:
       
   100         message[string]: Nachricht
       
   101         recipients[list]: eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
       
   102         provider[string]: Provider über den geschickt werden soll;
       
   103                           default - verschickt über den Standardprovider
       
   104 
       
   105         Return:
       
   106         id[hash]: Die ID des Auftrages
       
   107 
    83         '''
   108         '''
    84         if not "sms" in self.features:
   109         if not "sms" in self.features:
    85             raise NotSupportedFeature("sms")
   110             raise NotSupportedFeature("sms")
    86         id = self.jobqueue.newSMS(message,recipients,provider,user=self.name)
   111         id = self.jobqueue.newSMS(message,recipients,provider,user=self.name)
    87         self.jobs[id]=self.jobqueue[id]
   112         self.jobs[id]=self.jobqueue[id]
    88         return id
   113         return id
    89     
   114     
    90     
   115     
    91     def startFAX(self, subject, fax, recipients, provider="default"):
   116     def startFAX(self, subject, fax, recipients, provider="default"):
    92         '''
   117         u'''Versendet ein FAX.
    93         starts the FAX  with the pdf file fax and the subject
   118 
       
   119         Keywords:
       
   120         subject[string]: der Betreff
       
   121         fax[string]: das pdf base64 kodiert
       
   122         recipients[list]: eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)
       
   123         provider[string]: Provider über den geschickt werden soll;
       
   124                           default - verschickt über den Standardprovider
       
   125 
       
   126         Return:
       
   127         id[hash]: Die ID des Auftrages
       
   128 
    94         '''
   129         '''
    95         logger.debug("startFAX(%s,%s,%s,%s)"%(subject, fax, recipients, provider))
   130         logger.debug("startFAX(%s,%s,%s,%s)"%(subject, fax, recipients, provider))
    96         if not "fax" in self.features:
   131         if not "fax" in self.features:
    97             raise NotSupportedFeature("fax")
   132             raise NotSupportedFeature("fax")
    98         
   133         
   103         id = self.jobqueue.newFAX(subject, f,recipients,provider,user=self.name)
   138         id = self.jobqueue.newFAX(subject, f,recipients,provider,user=self.name)
   104         self.jobs[id]=self.jobqueue[id]
   139         self.jobs[id]=self.jobqueue[id]
   105         return id
   140         return id
   106 
   141 
   107     def startMail(self, subject,  body, recipients, frm, provider="default"):
   142     def startMail(self, subject,  body, recipients, frm, provider="default"):
       
   143         u'''Versendet eine Email.
       
   144 
       
   145         Keywords:
       
   146         subject[string]: der Betreff
       
   147         body[string]: der Email Body
       
   148         recipients[list]: eine Liste von Emailadressen
       
   149         frm[string]: Die Absender Emailadresse
       
   150         provider[string]: Provider über den geschickt werden soll;
       
   151                           default - verschickt über den Standardprovider
       
   152 
       
   153         Return:
       
   154         id[hash]: Die ID des Auftrages
       
   155 
       
   156         '''
   108         if not "mail" in self.features:
   157         if not "mail" in self.features:
   109             raise NotSupportedFeature("mail")
   158             raise NotSupportedFeature("mail")
   110         logger.debug("startMail(%s,%s,%s,%s,%s)"%(subject, body, recipients, frm, provider))
   159         logger.debug("startMail(%s,%s,%s,%s,%s)"%(subject, body, recipients, frm, provider))
   111         id = self.jobqueue.newMail(subject, body, recipients, frm,  provider,user=self.name)
   160         id = self.jobqueue.newMail(subject, body, recipients, frm,  provider,user=self.name)
   112         self.jobs[id]=self.jobqueue[id]
   161         self.jobs[id]=self.jobqueue[id]
   113         return id    
   162         return id    
   114        
   163        
   115     def getProvider(self, name):
   164     def getProvider(self, typ):
   116         if not name in self.features:
   165         u'''Gibt eine Liste aller verfügbaren Provider zurück.
   117             raise NotSupportedFeature(name)
   166 
       
   167         Keywords:
       
   168         typ[string]: Der Typ zu dem die Providerloste ausgeben werden soll
       
   169                      Einer der Liste ["sms","fax","mail"]
       
   170 
       
   171         Return:
       
   172         providerlist[list]: Eine Liste aller möglichen Provider
       
   173 
       
   174         '''
       
   175         if not typ in self.features:
       
   176             raise NotSupportedFeature(typ)
   118        
   177        
   119         return self.jobqueue.providerlist.getProviderlist(name)
   178         return self.jobqueue.providerlist.getProviderlist(typ)
   120         
   179         
   121     def getDefaultProvider(self, name):
   180     def getDefaultProvider(self, typ):
   122         if not name in self.features:
   181         u'''Gibt den Standardprovider zurück.
   123             raise NotSupportedFeature(name)
   182  
       
   183         Keywords:
       
   184         typ[string]: Der Typ zu dem die Providerloste ausgeben werden soll
       
   185                      Einer der Liste ["sms","fax","mail"]
       
   186 
       
   187         Return:
       
   188         provider[string]: Der Standardprovider für den angeben Typ
       
   189 
       
   190 
       
   191         '''
       
   192         if not typ in self.features:
       
   193             raise NotSupportedFeature(typ)
   124        
   194        
   125         return self.jobqueue.providerlist.getDefault(name)["name"]
   195         return self.jobqueue.providerlist.getDefault(typ)["name"]
   126         
   196         
   127 class Admin(User):
   197 class Admin(User):
   128     def __init__(self, name, jobqueue):
   198     def __init__(self, name, jobqueue):
   129         User.__init__(self, name, jobqueue)
   199         User.__init__(self, name, jobqueue)
   130         self.jobs=jobqueue.jobs
   200         self.jobs=jobqueue.jobs