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

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

implementado mtodo Header.extract()

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
26
27# Python
28import email
29from imaplib import ParseFlags
30
31coding_local = 'utf-8'
32
33##/code-section module-header
34
35
36
37
38class Header:
39    '''
40    header
41    '''
42    __implements__ = ()
43
44    ##code-section class-header_Header #fill in your manual code here
45    ##/code-section class-header_Header
46
47   
48    def __init__(self, info, header):
49        # self._init_attributes(*args,**kwargs)
50        self._inicializar(info,header)
51
52
53    def _init_attributes(self,*args,**kwargs):
54        #attributes
55        self._to=None
56        self._from=None
57        self._replyTo=None
58        self._UID=None
59        self._falgs=None
60        self._cc=None
61        self._subject=None
62        self._date=None
63
64        # automatically set attributes where mutators exist
65        for key in kwargs.keys():
66            # camel case: variable -> setVariable
67            mutatorName = 'set'+key[0].upper()+key[1:]
68            mutator = getattr(self, mutatorName)
69            if mutator is not None and callable(mutator):
70                mutator(kwargs[key])
71
72
73    def headerAsString(self,):
74        pass
75
76
77    def _decodificar(self, dados = []):
78        '''
79        TODO: tem que baixar o nivel dessa funcao, e muito ...
80        '''
81        if dados is [] or ():
82            return ['',]
83        dados = ', '.join(dados)
84        dados_aux = dados
85        try:
86            dados_aux = email.Header.Header(dados_aux)
87            dados_aux = email.Header.decode_header(dados_aux)
88            dados_aux = email.Header.make_header(dados_aux)
89            global coding_local
90            dados_aux = unicode(dados_aux).encode(coding_local)
91            return [ dados_aux ]
92        except:
93            pass
94        return [ dados ]
95
96
97    def _inicializar(self,info,header):
98        msg = email.message_from_string(header)
99       
100        self._to = email.Utils.getaddresses( self._decodificar( msg.get_all('To',[]) ) )
101        self._cc = email.Utils.getaddresses( self._decodificar( msg.get_all('Cc',[]) ) )
102        self._from = email.Utils.getaddresses( self._decodificar( msg.get_all('From',[]) ) )
103        self._replyTo = email.Utils.getaddresses( self._decodificar( msg.get_all('Reply-To',[]) ) )
104        self._subject = self._decodificar( msg.get_all('Subject',[]) ) [0] #pra tirar da tupla
105        '''
106        TODO: estudar strings templates pra pegar esse UID sem usar expregulares.
107        '''
108        self._UID = 123
109       
110        self._flags = ParseFlags( info )
111        self._date = self._decodificar( msg.get_all('Date',[]) ) [0]
112
113
114    def extract(self):
115        return {'To' : self._to,
116                'Cc' : self._cc,
117                'From' : self._from,
118                'Reply-To' : self._replyTo,
119                'Subject' : self._subject,
120                'UID' : self._UID,
121                'Flags' : self._flags,
122                'Date' : self._date
123               }
124       
125
126
127    def get_subject(self):
128        return self._subject
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    def get_flags(self):
142        return self._flags
143
144    def get_cc(self):
145        return self._cc
146
147    def get_date(self):
148        return self._date
149
150    def get_replyTo(self):
151        return self._replyTo
152
153
154    def set_flags(self,value):
155        self._flags=value
156
157    def get_falgs(self):
158        return self._falgs
159
160    def get_from(self):
161        return self._from
162
163
164    def set_to(self,value):
165        self._to=value
166
167
168    def set_date(self,value):
169        self._date=value
170
171
172    def set_replyTo(self,value):
173        self._replyTo=value
174
175    def get_UID(self):
176        return self._UID
177
178
179    def set_cc(self,value):
180        self._cc=value
181
182
183    def set_falgs(self,value):
184        self._falgs=value
185
186
187    def set_UID(self,value):
188        self._UID=value
189
190
191##code-section module-footer #fill in your manual code here
192##/code-section module-footer
193
194
195
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.