source: publico/PloneImapClient/trunk/Header.py @ 2591

Última Alteração nesse arquivo desde 2591 foi 2591, incluída por johnnysouza, 13 anos atrás

nada significativo

File size: 4.9 KB
Linha 
1# File: Header.py
2#
3# Copyright (c) 2006 by Interlegis
4# Generator: ArchGenXML Version 1.4.0-RC2 svn/development
5#            http://plone.org/products/archgenxml
6#
7# GNU General Public Licence (GPL)
8#
9# This program is free software; you can redistribute it and/or modify it under
10# the terms of the GNU General Public License as published by the Free Software
11# Foundation; either version 2 of the License, or (at your option) any later
12# version.
13# This program is distributed in the hope that it will be useful, but WITHOUT
14# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
16# details.
17# You should have received a copy of the GNU General Public License along with
18# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
19# Place, Suite 330, Boston, MA  02111-1307  USA
20#
21__author__  = '''STC Interlegis <stc@interlegis.gov.br>'''
22__docformat__ = 'plaintext'
23
24
25##code-section module-header #fill in your manual code here
26import email
27from imaplib import ParseFlags
28
29coding_local = 'utf-8'
30##/code-section module-header
31
32
33
34
35class Header:
36    ''' '''
37    __implements__ = ()
38
39    ##code-section class-header_Header #fill in your manual code here
40    ##/code-section class-header_Header
41
42
43    def __init__(self,info,header):
44        #self._init_attributes(*args,**kwargs)
45        self._inicializar(info,header)
46
47
48    def _init_attributes(self,*args,**kwargs):
49        #attributes
50        self._to=None
51        self._cc=None
52        self._from=None
53        self._replyTo=None
54        self._subject=None
55        self._UID=None
56        self._flags=None
57        self._date=None
58
59        # automatically set attributes where mutators exist
60        for key in kwargs.keys():
61            # camel case: variable -> setVariable
62            mutatorName = 'set'+key[0].upper()+key[1:]
63            mutator = getattr(self, mutatorName)
64            if mutator is not None and callable(mutator):
65                mutator(kwargs[key])
66
67
68    def _inicializar(self,info,header):
69        msg = email.message_from_string(header)
70       
71        self._to = email.Utils.getaddresses( self._decodificar( msg.get_all('To',[]) ) )
72        self._cc = email.Utils.getaddresses( self._decodificar( msg.get_all('Cc',[]) ) )
73        self._from = email.Utils.getaddresses( self._decodificar( msg.get_all('From',[]) ) )
74        self._replyTo = email.Utils.getaddresses( self._decodificar( msg.get_all('Reply-To',[]) ) )
75        self._subject = self._decodificar( msg.get_all('Subject',[]) ) [0] #pra tirar da tupla
76        '''
77        TODO: estudar strings templates pra pegar esse UID sem usar expregulares.
78        Isso  muito, mas muito feio, mas funciona.
79        '''
80        self._UID = info[info.find('UID') + 4 : ]
81        self._UID = int( self._UID[ : self._UID.find( ' ' ) ] )
82       
83        self._flags = ParseFlags( info )
84        self._date = self._decodificar( msg.get_all('Date',[]) ) [0]
85
86
87    def _decodificar(self,dados):
88        '''
89        TODO: tem que baixar o nivel dessa funcao, e muito ...
90        '''
91        if dados is [] or ():
92            return ['',]
93        dados = ', '.join(dados)
94        dados_aux = dados
95        try:
96            dados_aux = email.Header.Header(dados_aux)
97            dados_aux = email.Header.decode_header(dados_aux)
98            dados_aux = email.Header.make_header(dados_aux)
99            global coding_local
100            dados_aux = unicode(dados_aux).encode(coding_local)
101            return [ dados_aux ]
102        except:
103            pass
104        return [ dados ]
105
106
107    def headerAsString(self,):
108        pass
109
110
111    def extract(self,):
112        d = { 'To' : self._to,
113              'Cc' : self._cc,
114              'From' : self._from,
115              'Reply-To' : self._replyTo,
116              'Subject' : self._subject,
117              'UID' : self._UID,
118              'Flags' : self._flags,
119              'Date' : self._date
120            }
121        return d
122
123
124
125
126    def get_subject(self):
127        return self._subject
128
129
130    def get_to(self):
131        return self._to
132
133
134    def set_subject(self,value):
135        self._subject=value
136
137
138    def set_from(self,value):
139        self._from=value
140
141
142    def get_flags(self):
143        return self._flags
144
145
146    def get_cc(self):
147        return self._cc
148
149
150    def get_date(self):
151        return self._date
152
153
154    def get_replyTo(self):
155        return self._replyTo
156
157
158    def set_flags(self,value):
159        self._flags=value
160
161
162    def get_from(self):
163        return self._from
164
165
166    def set_to(self,value):
167        self._to=value
168
169
170    def set_date(self,value):
171        self._date=value
172
173
174    def set_replyTo(self,value):
175        self._replyTo=value
176
177
178    def get_UID(self):
179        return self._UID
180
181
182    def set_cc(self,value):
183        self._cc=value
184
185
186    def set_UID(self,value):
187        self._UID=value
188
189
190##code-section module-footer #fill in your manual code here
191##/code-section module-footer
192
193
194
Note: Veja TracBrowser para ajuda no uso do navegador do trac.
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.