1 # -*- coding: utf-8; -*-
2 # Copyright (C) 2007 Gabriel Falcão <root@gabrielfalcao.com>
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License as
6 # published by the Free Software Foundation; either version 2 of the
7 # License, or (at your option) any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # General Public License for more details.
14 # You should have received a copy of the GNU General Public
15 # License along with this program; if not, write to the
16 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 # Boston, MA 02111-1307, USA.
20 from django.http import HttpResponse, HttpResponseRedirect
21 from django.template import RequestContext
22 from django.shortcuts import render_to_response, get_object_or_404
23 from django.conf import settings
24 from django.core.exceptions import ObjectDoesNotExist
26 def html_unentities(s):
31 entities[u' '] = u' '
32 entities[u'¡'] = u'¡'
33 entities[u'¢'] = u'¢'
34 entities[u'£'] = u'£'
35 entities[u'¤'] = u'¤'
36 entities[u'¥'] = u'¥'
37 entities[u'¦'] = u'¦'
38 entities[u'§'] = u'§'
39 entities[u'¨'] = u'¨'
40 entities[u'©'] = u'©'
41 entities[u'ª'] = u'ª'
42 entities[u'«'] = u'«'
43 entities[u'¬'] = u'¬'
44 entities[u'­'] = u''
45 entities[u'®'] = u'®'
46 entities[u'¯'] = u'¯'
47 entities[u'°'] = u'°'
48 entities[u'±'] = u'±'
49 entities[u'²'] = u'²'
50 entities[u'³'] = u'³'
51 entities[u'´'] = u'´'
52 entities[u'µ'] = u'µ'
53 entities[u'¶'] = u'¶'
54 entities[u'·'] = u'·'
55 entities[u'¸'] = u'¸'
56 entities[u'¹'] = u'¹'
57 entities[u'º'] = u'º'
58 entities[u'»'] = u'»'
59 entities[u'¼'] = u'¼'
60 entities[u'½'] = u'½'
61 entities[u'¾'] = u'¾'
62 entities[u'¿'] = u'¿'
63 entities[u'À'] = u'À'
64 entities[u'Á'] = u'Á'
65 entities[u'Â'] = u'Â'
66 entities[u'Ã'] = u'Ã'
67 entities[u'Ä'] = u'Ä'
68 entities[u'Å'] = u'Å'
69 entities[u'Æ'] = u'Æ'
70 entities[u'Ç'] = u'Ç'
71 entities[u'È'] = u'È'
72 entities[u'É'] = u'É'
73 entities[u'Ê'] = u'Ê'
74 entities[u'Ë'] = u'Ë'
75 entities[u'Ì'] = u'Ì'
76 entities[u'Í'] = u'Í'
77 entities[u'Î'] = u'Î'
78 entities[u'Ï'] = u'Ï'
79 entities[u'Ð'] = u'Ð'
80 entities[u'Ñ'] = u'Ñ'
81 entities[u'Ò'] = u'Ò'
82 entities[u'Ó'] = u'Ó'
83 entities[u'Ô'] = u'Ô'
84 entities[u'Õ'] = u'Õ'
85 entities[u'Ö'] = u'Ö'
86 entities[u'×'] = u'×'
87 entities[u'Ø'] = u'Ø'
88 entities[u'Ù'] = u'Ù'
89 entities[u'Ú'] = u'Ú'
90 entities[u'Û'] = u'Û'
91 entities[u'Ü'] = u'Ü'
92 entities[u'Ý'] = u'Ý'
93 entities[u'Þ'] = u'Þ'
94 entities[u'ß'] = u'ß'
95 entities[u'à'] = u'à'
96 entities[u'á'] = u'á'
97 entities[u'â'] = u'â'
98 entities[u'ã'] = u'ã'
99 entities[u'ä'] = u'ä'
100 entities[u'å'] = u'å'
101 entities[u'æ'] = u'æ'
102 entities['ç'] = u'ç'
103 entities[u'è'] = u'è'
104 entities[u'é'] = u'é'
105 entities[u'ê'] = u'ê'
106 entities[u'ë'] = u'ë'
107 entities[u'ì'] = u'ì'
108 entities[u'í'] = u'í'
109 entities[u'î'] = u'î'
110 entities[u'ï'] = u'ï'
111 entities[u'ð'] = u'ð'
112 entities[u'ñ'] = u'ñ'
113 entities[u'ò'] = u'ò'
114 entities[u'ó'] = u'ó'
115 entities[u'ô'] = u'ô'
116 entities[u'õ'] = u'õ'
117 entities[u'ö'] = u'ö'
118 entities[u'÷'] = u'÷'
119 entities[u'ø'] = u'ø'
120 entities[u'ù'] = u'ù'
121 entities[u'ú'] = u'ú'
122 entities[u'û'] = u'û'
123 entities[u'ü'] = u'ü'
124 entities[u'ý'] = u'ý'
125 entities[u'þ'] = u'þ'
126 entities[u'ÿ'] = u'ÿ'
127 entities[u'"'] = u'"'
128 entities[u"'"] = '''
129 entities[u'<'] = u'<'
130 entities[u'>'] = u'>'
131 entities[u'&'] = u'&'
134 s_ent = re.findall(r'[&].*?[;]', s)
136 s = re.sub(rp.replace('&','[&]').replace(';','[;]'), entities[rp], s)
139 class ScheduleHammer(object):
140 def __init__(self, HTML):
141 if isinstance(HTML, str):
142 self.S_tag = '[<]li[>].*?[<]font.*?[>]'
143 self.E_tag = '[<][/]font[>].*?[<][/]li[>]'
144 self.items = re.findall(r'%s(?P<content>.*?)%s'%(self.S_tag,
147 raise TypeError("ScheduleHammer must take only a string as \
151 for title in self.items:
153 yield html_unentities(title.split('<br')[0])
155 yield html_unentities(title)
157 def __getitem__(self, pos):
158 if "<br" in self.items[pos]:
159 return html_unentities(self.items[pos].split("<br")[0])
161 return html_unentities(self.items[pos])
165 Esta classe recebe um dicionario como parametro e adiciona cada
166 chave do dicionario em seu atributo, contendo o valor de cada item
168 def __init__(self, dictionary):
169 if isinstance(dictionary, dict):
170 for key, value in dictionary.items():
171 setattr(self, key, value)
173 raise RuntimeError('MetaDict class only accepts a dictionary\
176 for value in self.__dict__.values():
179 def __getitem__(self,index):
181 return self.__dict__[index]
186 return ", ".join(self.all())
189 return self.__dict__.keys()
192 return self.__dict__[self.__dict__.keys()[0]]
195 return self.__dict__[self.__dict__.keys()[-1]]
197 def slice(self,index):
199 return self.__dict__[self.__dict__.keys()[index]]
203 def __contains__(self, item):
204 return item in self.__dict__.keys() or item in self.__dict__.values()
210 return len(self.__dict__.keys())
214 def __default__(self):
217 def __getattr__(self,*a):
218 return self.__default__
221 return self.__default__
223 def __nonzero__(self):
226 def get_object_or_list(obj,**kw):
229 except ObjectDoesNotExist:
232 def get_object_or_none(obj,**kw):
234 return obj.objects.get(**kw)
235 except ObjectDoesNotExist:
237 except AssertionError:
238 #hammer! hammer! hammer!
239 return empty()#obj.objects.filter(**kw)[0]
241 def limpa_conversas(visitante, corretor):
243 if isinstance(visitante, Visitante):
244 conversas_vc.append(get_object_or_none(Conversa,visitante__id=\
246 if isinstance(corretor, Corretor):
247 conversas_vc.append(get_object_or_none(Conversa,corretor__id=\
249 [c.delete() for c in conversas_vc if c]