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

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

criado template principal

File size: 4.7 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    def _init_attributes(self,*args,**kwargs):
48        #attributes
49        self._to=None
50        self._cc=None
51        self._from=None
52        self._replyTo=None
53        self._subject=None
54        self._UID=None
55        self._falgs=None
56        self._date=None
57
58        # automatically set attributes where mutators exist
59        for key in kwargs.keys():
60            # camel case: variable -> setVariable
61            mutatorName = 'set'+key[0].upper()+key[1:]
62            mutator = getattr(self, mutatorName)
63            if mutator is not None and callable(mutator):
64                mutator(kwargs[key])
65
66
67    def _inicializar(self,info,header):
68        msg = email.message_from_string(header)
69       
70        self._to = email.Utils.getaddresses( self._decodificar( msg.get_all('To',[]) ) )
71        self._cc = email.Utils.getaddresses( self._decodificar( msg.get_all('Cc',[]) ) )
72        self._from = email.Utils.getaddresses( self._decodificar( msg.get_all('From',[]) ) )
73        self._replyTo = email.Utils.getaddresses( self._decodificar( msg.get_all('Reply-To',[]) ) )
74        self._subject = self._decodificar( msg.get_all('Subject',[]) ) [0] #pra tirar da tupla
75        '''
76        TODO: estudar strings templates pra pegar esse UID sem usar expregulares.
77        '''
78        self._UID = 123
79       
80        self._flags = ParseFlags( info )
81        self._date = self._decodificar( msg.get_all('Date',[]) ) [0]
82
83
84    def _decodificar(self,dados):
85        '''
86        TODO: tem que baixar o nivel dessa funcao, e muito ...
87        '''
88        if dados is [] or ():
89            return ['',]
90        dados = ', '.join(dados)
91        dados_aux = dados
92        try:
93            dados_aux = email.Header.Header(dados_aux)
94            dados_aux = email.Header.decode_header(dados_aux)
95            dados_aux = email.Header.make_header(dados_aux)
96            global coding_local
97            dados_aux = unicode(dados_aux).encode(coding_local)
98            return [ dados_aux ]
99        except:
100            pass
101        return [ dados ]
102
103
104
105    def headerAsString(self,):
106        pass
107
108    def extract(self,):
109        d = { 'To' : self._to,
110              'Cc' : self._cc,
111              'From' : self._from,
112              'Reply-To' : self._replyTo,
113              'Subject' : self._subject,
114              'UID' : self._UID,
115              'Flags' : self._flags,
116              'Date' : self._date
117            }
118        return d
119
120    def set_to(self,value):
121        self._to=value
122
123    def get_to(self):
124        return self._to
125
126    def set_cc(self,value):
127        self._cc=value
128
129    def get_cc(self):
130        return self._cc
131
132    def set_from(self,value):
133        self._from=value
134
135    def get_from(self):
136        return self._from
137
138    def set_replyTo(self,value):
139        self._replyTo=value
140
141    def get_replyTo(self):
142        return self._replyTo
143
144    def set_subject(self,value):
145        self._subject=value
146
147    def get_subject(self):
148        return self._subject
149
150    def set_UID(self,value):
151        self._UID=value
152
153    def get_UID(self):
154        return self._UID
155
156    def set_falgs(self,value):
157        self._falgs=value
158
159    def get_falgs(self):
160        return self._falgs
161
162    def set_date(self,value):
163        self._date=value
164
165    def get_date(self):
166        return self._date
167
168
169
170##code-section module-footer #fill in your manual code here
171##/code-section module-footer
172
173
174
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.