##// END OF EJS Templates
Search for image for every domain level starting from the lowest one. Cache this into memcached
neko259 -
r1772:1342675d default
parent child Browse files
Show More
@@ -5,7 +5,7 b' from django.contrib.staticfiles.template'
5 5 from django.core.files.images import get_image_dimensions
6 6 from django.template.defaultfilters import filesizeformat
7 7
8 from boards.utils import get_domain
8 from boards.utils import get_domain, cached_result
9 9
10 10
11 11 FILE_STUB_IMAGE = 'images/file.png'
@@ -179,11 +179,7 b' class UrlViewer(AbstractViewer):'
179 179 if protocol in URL_PROTOCOLS:
180 180 url_image_name = URL_PROTOCOLS.get(protocol)
181 181 elif domain:
182 filename = 'images/domains/{}.png'.format(domain)
183 if file_exists(filename):
184 url_image_name = 'domains/' + domain
185 else:
186 url_image_name = FILE_STUB_URL
182 url_image_name = self._find_image_for_domains(domain) or FILE_STUB_URL
187 183 else:
188 184 url_image_name = FILE_STUB_URL
189 185
@@ -195,7 +191,20 b' class UrlViewer(AbstractViewer):'
195 191 '<img class="url-image" src="{}" width="{}" height="{}"/>' \
196 192 '</a>'.format(self.url, image, w, h)
197 193
194 @cached_result()
195 def _find_image_for_domains(self, domain):
196 """
197 Searches for the domain image for every domain level except top.
198 E.g. for l3.example.co.uk it will search for l3.example.co.uk, then
199 example.co.uk, then co.uk
200 """
201 levels = domain.split('.')
202 while len(levels) > 1:
203 domain = '.'.join(levels)
198 204
199 def _get_protocol(self):
200 pass
205 filename = 'images/domains/{}.png'.format(domain)
206 if file_exists(filename):
207 return 'domains/' + domain
208 else:
209 del levels[0]
201 210
@@ -34,10 +34,6 b" ANON_IP = '127.0.0.1'"
34 34
35 35 FILE_EXTENSION_DELIMITER = '.'
36 36
37 KNOWN_DOMAINS = (
38 'org.ru',
39 )
40
41 37
42 38 def is_anonymous_mode():
43 39 return get_bool(SETTING_MESSAGES, SETTING_ANON_MODE)
@@ -157,21 +153,5 b' def get_domain(url: str) -> str:'
157 153 else:
158 154 full_domain = ''
159 155
160 result = full_domain
161 if full_domain:
162 levels = full_domain.split('.')
163 if len(levels) >= 2:
164 top = levels[-1]
165 second = levels[-2]
156 return full_domain
166 157
167 has_third_level = len(levels) > 2
168 if has_third_level:
169 third = levels[-3]
170
171 if has_third_level and ('{}.{}'.format(second, top) in KNOWN_DOMAINS):
172 result = '{}.{}.{}'.format(third, second, top)
173 else:
174 result = '{}.{}'.format(second, top)
175
176 return result
177
General Comments 0
You need to be logged in to leave comments. Login now