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 |
re |
|
|
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