iro/anbieter/smstrade.py
author Sandro Knauß <knauss@netzguerilla.net>
Sat, 31 Oct 2009 03:20:59 +0100
changeset 11 f25033cf93e0
parent 1 18918fbc397c
child 15 c04a21066aad
permissions -rw-r--r--
Backend auswahl nun möglich
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     1
# -*- coding: utf-8 -*-
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     2
#Copyright (C) 2009  Georg Bischoff
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     3
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     4
#This program is free software; you can redistribute it and/or modify it under the terms
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     5
#of the GNU General Public License as published by the Free Software Foundation;
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     6
#either version 3 of the License, or any later version.
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     7
#This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     8
#without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
     9
#See the GNU General Public License for more details.
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    10
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    11
#You should have received a copy of the GNU General Public License
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    12
#along with this program; if not, see <http://www.gnu.org/licenses/>.
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    13
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    14
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    15
from anbieter import anbieter
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    16
from sipgate import  NoValidStatusCode
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    17
from telnumber import telnumber, NotATelNumber
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    18
import ConfigParser
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    19
import xmlrpclib
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    20
import base64
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    21
import urllib, httplib
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    22
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    23
class smstrade(anbieter):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    24
    """
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    25
    s. auch http://kundencenter.smstrade.de/sites/smstrade.de.kundencenter/__pdf/SMS-Gateway_HTTP_API_v2.pdf
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    26
    """
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    27
    section="smstrade"
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    28
    url="https://gateway.smstrade.de"
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    29
    def __init__(self):       
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    30
        self.domain = "smstrade.de" # website of the sms service
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    31
        self.gateway = "gateway.smstrade.de" # gateway where the request will be sent
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    32
        self.gatewayPort = 80 # port of the gateway
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    33
        self.script = "/"  # full path to the script that will handle the request
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    34
        self.method = "POST" # method that will be used. Currently only POST is supported
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    35
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    36
        self.maxMessageLength = None # maximum length of message; None if should not be set
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    37
        self.smsCanBeSendDelayed = True # True if sms can be sent delayed by the sms service. Otherwise False
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    38
        self.senderRe = r"^.{0,11}|[0-9]{0,15}" # RegEx for the sender-input-field
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    39
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    40
        self.routes = ("basicplus", "economy", "gold", "direct") # possible routes that can be used
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    41
        self.routesWithSourceIdentifier = ("gold", "direct") # routes where a sender can be defined
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    42
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    43
        # statusCodes that the sms service returns on requests
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    44
        self.statusCodes = {10 : "Empfaengernummer nicht korrekt",
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    45
            20 : "Absenderkennung nicht korrekt",
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    46
            30 : "Nachrichtentext nicht korrekt",
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    47
            31 : "Messagetyp nicht korrekt",
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    48
            40 : "SMS Route nicht korrekt",
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    49
            50 : "Identifikation fehlgeschlagen",
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    50
            60 : "nicht genuegend Guthaben",
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    51
            70 : "Netz wird von Route nicht abgedeckt",
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    52
            71 : "Feature nicht ueber diese Route moeglich",
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    53
            80 : "Uebergabe an SMS-C fehlgeschlagen",
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    54
            90 : "Versand nicht moeglich",
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    55
            100 : "SMS wurde versendet",
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    56
            999 : "SMS wird zeitversetzt verschickt"}
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    57
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    58
        self.parameters = {} # don't write anything into this dict! Don't delete it!                   
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    59
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    60
    def read_basic_config(self,filename):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    61
        """Read basic options from the config file"""
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    62
        cp = ConfigParser.ConfigParser()
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    63
        cp.read([filename])
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    64
        self.key=cp.get(self.section, 'key')
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    65
        self.route=cp.get(self.section, 'route')
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    66
        self.from_=cp.get(self.section, 'from')
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    67
        self.debug=cp.get(self.section, 'debug')
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    68
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    69
    def sendSMS(self,sms,recipients):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    70
        """send SMS with $sms to $recipients"""
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    71
        sended = []
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    72
        key = self.key
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    73
        route = unicode(self.route)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    74
        message = unicode(sms.content)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    75
        from_ = unicode(self.from_)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    76
        timestamp = None
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    77
        for recipient in recipients:
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    78
            try:
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    79
                tel = telnumber(recipient)                
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    80
                if tel in sended:                                                                           #only send message once per recipient
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    81
                    continue
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    82
                sended.append(tel)	
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    83
                to = unicode((tel.number)).strip()						                
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    84
                code, smsSendStatus = self.__send(key, route, to, message, from_, timestamp)	
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    85
                if code in(100, 999):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    86
                    self.updateStatus(arranged=recipient)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    87
            except (NotATelNumber,NoValidStatusCode,InternetConnectionError):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    88
                self.updateStatus(failed=recipient)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    89
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    90
    def __send(self, key, route, to, message, from_=None, timestamp=None):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    91
        """ This function is the main part of the request to the sms service.    
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    92
        The function has to return a unicode formated string that will represent the answer of the sms service
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    93
        to the request."""
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    94
        self.parameters["key"] = key        
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    95
        self.parameters["route"] = route
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    96
        self.parameters["to"] = to
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    97
        self.parameters["message"] = message
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    98
        self.parameters["debug"] = self.debug				
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
    99
        
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   100
        if from_ is not None:
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   101
            self.parameters["from"] = from_
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   102
        else:
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   103
            if "from" in self.parameters.keys():
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   104
                del(self.parameters["from"])
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   105
        
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   106
        if timestamp is not None:
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   107
            self.parameters["senddate"] = unicode(timestamp)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   108
        else:
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   109
            if "senddate" in self.parameters.keys():
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   110
                del(self.parameters["senddate"])
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   111
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   112
        self.parameters["concat_sms"] = "1" if len(message) > 160 else "0"
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   113
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   114
        params = urllib.urlencode(dict([k, v.encode('iso-8859-1')] for k, v in self.parameters.items()))
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   115
        headers = {"Content-type": "application/x-www-form-urlencoded",
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   116
            "Accept": "text/plain"}
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   117
        conn = httplib.HTTPConnection("%s:%i" % (self.gateway, self.gatewayPort))
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   118
        try:
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   119
            conn.request(self.method, self.script, params, headers)
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   120
            response = conn.getresponse()
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   121
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   122
            data = response.read()
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   123
        except socket.gaierror:
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   124
            raise InternetConnectionError("%s:%i" % (self.gateway, self.gatewayPort))
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   125
        else:
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   126
            conn.close()
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   127
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   128
        try:
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   129
            return int(data), self.statusCodes[int(data)]
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   130
        except ValueError:
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   131
            # this happens if the sms will be send delayed
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   132
            return 999, self.statusCodes[999]
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   133
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   134
    def updateStatus(self, arranged=None, failed=None):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   135
        """is a function that is called, if a new SMS/FAX was send
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   136
        -arranged is non None, if SMS/FAX was sended successfully
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   137
        -failed is non None, if SMS/FAX sending failed
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   138
        the content will be the recipent"""
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   139
        pass
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   140
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   141
class InternetConnectionError(Exception):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   142
	def __init__(self, url):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   143
		self.url = url
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   144
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   145
	def __str__(self):
f25033cf93e0 Backend auswahl nun möglich
Sandro Knauß <knauss@netzguerilla.net>
parents: 1
diff changeset
   146
		return "InternetConnectionError: It is not possible to open 'http://%s'. Please check your connection to the Internet!" % self.url