iro/model/message.py
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 24 Aug 2012 01:05:06 +0200
branchdevel
changeset 294 0e75bd39767d
parent 258 0a5eb5aac0be
child 312 42fd5075a5d1
permissions -rw-r--r--
adding LICENSE to all files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
294
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 258
diff changeset
     1
# Copyright (c) 2012 netzguerilla.net <iro@netzguerilla.net>
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 258
diff changeset
     2
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 258
diff changeset
     3
# This file is part of Iro.
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 258
diff changeset
     4
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 258
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: 258
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: 258
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: 258
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: 258
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: 258
diff changeset
    10
# subject to the following conditions:
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 258
diff changeset
    11
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 258
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: 258
diff changeset
    13
# all copies or substantial portions of the Software.
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 258
diff changeset
    14
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 258
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: 258
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: 258
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: 258
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: 258
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: 258
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: 258
diff changeset
    21
0
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
# -*- coding: utf-8 -*-
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    23
"""All available message typs to send send.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    24
"""
0
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
from email.mime.text import MIMEText
19
fcf8489f1c2f iro kann nun mit mails umgehen
Sandro Knauß <knauss@netzguerilla.net>
parents: 14
diff changeset
    26
from email.header import Header
235
c5d8384caf68 adding date Header to email
Sandro Knauß <knauss@netzguerilla.net>
parents: 198
diff changeset
    27
from email.Utils import formatdate
0
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    28
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents: 62
diff changeset
    29
class Message:
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    30
    """ Baseclass for all different message typs."""
152
14c99c89edf4 using extendProvide in Job.create
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    31
    def __init__(self,content, typ="Message"):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    32
        """Constructor of Message class.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    33
        
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    34
        :param content: content of the message
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    35
        :param string typ: typ of the message
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    36
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    37
        .. automethod:: __eq__
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    38
        .. automethod:: __neq__
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    39
        """
30
5253631a8dd3 sms via sipgate working
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
    40
        self.content=content
152
14c99c89edf4 using extendProvide in Job.create
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    41
        self.typ = typ
14c99c89edf4 using extendProvide in Job.create
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
    42
30
5253631a8dd3 sms via sipgate working
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
    43
5253631a8dd3 sms via sipgate working
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
    44
    def getContent(self):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    45
        """returns the content of the message"""
30
5253631a8dd3 sms via sipgate working
Sandro Knauß <knauss@netzguerilla.net>
parents: 19
diff changeset
    46
        return self.content
0
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    47
62
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    48
    def __eq__(self,other):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    49
        """return ``True`` if **other** has the same content."""
62
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    50
        return self.content == other.content
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    51
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    52
    def __neq__(self,other):
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    53
        """return ``False`` if **other** has the same content."""
62
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    54
        return not self.__eq__(other)
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    55
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents: 62
diff changeset
    56
class SMS(Message):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    57
    """ A representation of one SMS"""
169
aabc04843d25 complete offer.smtp tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 166
diff changeset
    58
    def __init__(self, cont, from_ = None):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    59
        """Constructor of SMS class.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    60
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    61
        :param string cont: SMS content
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    62
        :param string from_: the telnumber from the SMS should be sended.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    63
        """
244
48fba7b4afe9 all magic utf-8 stuff is now in iro.model.message
Sandro Knauß <knauss@netzguerilla.net>
parents: 235
diff changeset
    64
        Message.__init__(self, cont.encode("utf-8"), typ="sms")
169
aabc04843d25 complete offer.smtp tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 166
diff changeset
    65
        self.from_ = from_
57
97ef6ca145e6 sms & fax gefixt
Sandro Knauß <knauss@netzguerilla.net>
parents: 30
diff changeset
    66
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents: 62
diff changeset
    67
class Fax(Message):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    68
    """A representation of one fax."""
198
85ede27b1add tests for controller.viewinterface.fax added
Sandro Knauß <knauss@netzguerilla.net>
parents: 193
diff changeset
    69
    def __init__(self,header,cont,attachments=[]):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    70
        """Constructor of one fax.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    71
        
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    72
        :param string header: Headline of fax
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    73
        :param string cont: fax content
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    74
        :param list attachments: attachments of fax
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    75
        """
244
48fba7b4afe9 all magic utf-8 stuff is now in iro.model.message
Sandro Knauß <knauss@netzguerilla.net>
parents: 235
diff changeset
    76
        Message.__init__(self,cont.encode("utf-8"),typ="fax")
57
97ef6ca145e6 sms & fax gefixt
Sandro Knauß <knauss@netzguerilla.net>
parents: 30
diff changeset
    77
        self.header=header
97ef6ca145e6 sms & fax gefixt
Sandro Knauß <knauss@netzguerilla.net>
parents: 30
diff changeset
    78
        self.attachments=attachments
97ef6ca145e6 sms & fax gefixt
Sandro Knauß <knauss@netzguerilla.net>
parents: 30
diff changeset
    79
97ef6ca145e6 sms & fax gefixt
Sandro Knauß <knauss@netzguerilla.net>
parents: 30
diff changeset
    80
    def getAttachment(self,i):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    81
        """returns a attachment
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    82
        :param integer i:  the i-th attachment
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
    83
        """
57
97ef6ca145e6 sms & fax gefixt
Sandro Knauß <knauss@netzguerilla.net>
parents: 30
diff changeset
    84
        return self.attachments[i]
0
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    85
62
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    86
    def __eq__(self,other):
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents: 62
diff changeset
    87
        if not  Message.__eq__(self,other):
62
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    88
            return False
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    89
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    90
        if self.header != other.header:
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    91
            return False
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    92
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    93
        if len(self.attachments) != len(other.attachments):
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    94
            return False
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    95
193
e5ec4bfa4929 adding allowString and allowList to vEmail to make sure, if a list is allowd or a string.
Sandro Knauß <knauss@netzguerilla.net>
parents: 192
diff changeset
    96
        for a in self.attachments:
e5ec4bfa4929 adding allowString and allowList to vEmail to make sure, if a list is allowd or a string.
Sandro Knauß <knauss@netzguerilla.net>
parents: 192
diff changeset
    97
            if a not in other.attachments:
62
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    98
                return False
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
    99
        return True
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
   100
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
   101
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
   102
135
f8640c663e3e model.job created
Sandro Knauß <knauss@netzguerilla.net>
parents: 62
diff changeset
   103
class Mail(Message):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   104
    """A representation of one Mail"""
58
fb161058bcab mail muss nun mit einer mailadresse aufgerufen werden
Sandro Knauß <knauss@netzguerilla.net>
parents: 57
diff changeset
   105
    def __init__(self, subject, body, frm):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   106
        """Constructor of one mail.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   107
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   108
        :param string subject: subject of the mail
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   109
        :param string body: body of the mail
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   110
        :param string frm: mailaddress to send mail from
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   111
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   112
        .. automethod:: __repr__
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   113
        """
235
c5d8384caf68 adding date Header to email
Sandro Knauß <knauss@netzguerilla.net>
parents: 198
diff changeset
   114
        con = MIMEText(body.encode("utf-8"), _charset='utf-8')
c5d8384caf68 adding date Header to email
Sandro Knauß <knauss@netzguerilla.net>
parents: 198
diff changeset
   115
        sub = Header(subject.encode('utf-8'), 'utf-8')
c5d8384caf68 adding date Header to email
Sandro Knauß <knauss@netzguerilla.net>
parents: 198
diff changeset
   116
        con['Subject'] = sub
c5d8384caf68 adding date Header to email
Sandro Knauß <knauss@netzguerilla.net>
parents: 198
diff changeset
   117
        con['Date'] = formatdate(localtime=True)
192
6c708c334f37 test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents: 169
diff changeset
   118
        self.subject = subject
6c708c334f37 test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents: 169
diff changeset
   119
        self.body = body
58
fb161058bcab mail muss nun mit einer mailadresse aufgerufen werden
Sandro Knauß <knauss@netzguerilla.net>
parents: 57
diff changeset
   120
        self.frm=frm
152
14c99c89edf4 using extendProvide in Job.create
Sandro Knauß <knauss@netzguerilla.net>
parents: 135
diff changeset
   121
        Message.__init__(self, con, typ='mail')
0
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   122
a3b6e531f0d2 [svn r93] creating iro package branch
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
   123
    def as_string(self):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   124
        """returns created mail"""
166
6d6890f7e3f8 adding smtp provider
Sandro Knauß <knauss@netzguerilla.net>
parents: 152
diff changeset
   125
        return self.content.as_string()
58
fb161058bcab mail muss nun mit einer mailadresse aufgerufen werden
Sandro Knauß <knauss@netzguerilla.net>
parents: 57
diff changeset
   126
fb161058bcab mail muss nun mit einer mailadresse aufgerufen werden
Sandro Knauß <knauss@netzguerilla.net>
parents: 57
diff changeset
   127
    def getFrom(self):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   128
        """returns the from mailaddress"""
58
fb161058bcab mail muss nun mit einer mailadresse aufgerufen werden
Sandro Knauß <knauss@netzguerilla.net>
parents: 57
diff changeset
   129
        return self.frm
62
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
   130
    
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
   131
    def __eq__(self,other):
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
   132
        if self.as_string() != other.as_string():
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
   133
            return False
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
   134
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
   135
        if self.frm != other.frm:
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
   136
            return False
192
6c708c334f37 test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents: 169
diff changeset
   137
        
6c708c334f37 test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents: 169
diff changeset
   138
        return True
62
35228d665310 vergleichbarer Content
Sandro Knauß <knauss@netzguerilla.net>
parents: 58
diff changeset
   139
192
6c708c334f37 test for controller.viewinterface.mail
Sandro Knauß <knauss@netzguerilla.net>
parents: 169
diff changeset
   140
    def __repr__(self):
258
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   141
        """string representation of the class.
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   142
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   143
        :returns: ``<Mail(subject, body, frm)>``
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   144
        """
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   145
        return "<Mail(%s, %s, %s)>"%(self.subject,self.body,self.frm)
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   146
0a5eb5aac0be iro.model: adding docstring
Sandro Knauß <knauss@netzguerilla.net>
parents: 244
diff changeset
   147
__all__=["Message", "SMS", "Fax", "Mail"]