parent
befed5c5ce
commit
df8ca65784
3 changed files with 13 additions and 155 deletions
@ -1,2 +0,0 @@ |
|||||||
#!/usr/bin/env python |
|
||||||
# -*- coding: utf-8 -*- |
|
||||||
@ -1,147 +0,0 @@ |
|||||||
#!/usr/bin/env python |
|
||||||
# -*- coding: utf-8 -*- |
|
||||||
import random |
|
||||||
import pymorphy2 |
|
||||||
from trademark.models import Trademark, Product, Nice |
|
||||||
from django.http import HttpResponse |
|
||||||
import json |
|
||||||
from django.views.decorators.cache import never_cache |
|
||||||
|
|
||||||
|
|
||||||
def _get_random_list(qs): |
|
||||||
|
|
||||||
_list = list(qs) |
|
||||||
random.shuffle(_list) |
|
||||||
|
|
||||||
return _list |
|
||||||
|
|
||||||
|
|
||||||
def _get_dic_words(words): |
|
||||||
|
|
||||||
words_dict = {} |
|
||||||
|
|
||||||
for key in words: |
|
||||||
key = key.lower() |
|
||||||
if key in words_dict: |
|
||||||
value = words_dict[key] |
|
||||||
words_dict[key] = value + 1 |
|
||||||
else: |
|
||||||
words_dict[key] = 1 |
|
||||||
|
|
||||||
return words_dict |
|
||||||
|
|
||||||
|
|
||||||
def get_notation(list_words, normalize=False, t=0): |
|
||||||
|
|
||||||
if t: |
|
||||||
print 't', list_words |
|
||||||
|
|
||||||
if len(list_words) > 1: |
|
||||||
notation = list_words[random.randint(0, len(list_words) - 1)] |
|
||||||
else: |
|
||||||
notation = list_words[0] |
|
||||||
|
|
||||||
if normalize: |
|
||||||
# print 'normalize 44', notation, notation[0], notation[1] |
|
||||||
|
|
||||||
morph = pymorphy2.MorphAnalyzer().parse(notation[0])[0] |
|
||||||
try: |
|
||||||
result = morph.inflect({'sing', 'nomn'}).word, notation[1] |
|
||||||
except: |
|
||||||
result = get_notation(list_words, normalize=True, t=1) |
|
||||||
else: |
|
||||||
# print notation |
|
||||||
result = notation[0], notation[1] |
|
||||||
|
|
||||||
result = result[0].capitalize(), result[1] |
|
||||||
|
|
||||||
return result |
|
||||||
|
|
||||||
|
|
||||||
def get_lists_for_notation(trademark): |
|
||||||
|
|
||||||
_words = [] |
|
||||||
_generic_words = [] |
|
||||||
|
|
||||||
morph = pymorphy2.MorphAnalyzer() |
|
||||||
|
|
||||||
try: |
|
||||||
products = trademark.products.all() |
|
||||||
for product in products: |
|
||||||
if product: |
|
||||||
nice_id = product.nice_id |
|
||||||
product_phrase = product.title.split(',') |
|
||||||
|
|
||||||
for phrase in product_phrase: |
|
||||||
words = phrase.\ |
|
||||||
lower().\ |
|
||||||
replace(';', '').\ |
|
||||||
replace('.', '').\ |
|
||||||
replace('[', '').\ |
|
||||||
replace(']', ''). \ |
|
||||||
replace('(', ''). \ |
|
||||||
replace(')', ''). \ |
|
||||||
replace('\n', '') |
|
||||||
|
|
||||||
if len(words.split()) == 1: |
|
||||||
_words.append((words.replace(' ', ''), nice_id)) |
|
||||||
|
|
||||||
fraction_phrase = words.lower().split(' ') |
|
||||||
for word in fraction_phrase: |
|
||||||
p = morph.parse(word)[0] |
|
||||||
if len(word) >= 3 and p.tag.POS == 'NOUN': |
|
||||||
_generic_words.append((p.normal_form, nice_id)) |
|
||||||
|
|
||||||
except Product.DoesNotExist: |
|
||||||
return False, False |
|
||||||
return _words, _generic_words |
|
||||||
|
|
||||||
|
|
||||||
@never_cache |
|
||||||
def get_random_list_trademarks(request, status='Expired', count=10): |
|
||||||
ico = '' |
|
||||||
notation = '' |
|
||||||
trademark_list = [] |
|
||||||
|
|
||||||
expired_trademarks = Trademark.objects.filter(status=status).order_by('?')[:50] |
|
||||||
random_list = _get_random_list(expired_trademarks)[:count*2] |
|
||||||
|
|
||||||
for trademark in random_list: |
|
||||||
words, generic_words = get_lists_for_notation(trademark) |
|
||||||
|
|
||||||
if len(trademark.title.split(' ')) > 3: |
|
||||||
continue |
|
||||||
|
|
||||||
if words: |
|
||||||
notation = get_notation(words) |
|
||||||
# print 'words', notation, notation[1] |
|
||||||
if not words and generic_words: |
|
||||||
# print generic_words |
|
||||||
notation = get_notation(generic_words, normalize=True) |
|
||||||
# print 'generic_words', notation, notation[0], notation[1] |
|
||||||
if notation: |
|
||||||
try: |
|
||||||
pass |
|
||||||
# print notation[1] |
|
||||||
# print notation |
|
||||||
glyph = Nice.objects.get(nice_id=notation[1]).glyph or 'fa-snowflake-o' |
|
||||||
except Nice.DoesNotExist: |
|
||||||
glyph = 'fa-snowflake-o' |
|
||||||
else: |
|
||||||
continue |
|
||||||
# brand = u'{}'.format(trademark) |
|
||||||
|
|
||||||
trademark_list.append({ |
|
||||||
'product': notation[0], |
|
||||||
'name': trademark.title.title(), |
|
||||||
'trademark': trademark.id, |
|
||||||
'glyph': glyph |
|
||||||
}) |
|
||||||
|
|
||||||
response = { |
|
||||||
'count': len(trademark_list), |
|
||||||
'status': 'ok', |
|
||||||
'items': trademark_list[:count] |
|
||||||
} |
|
||||||
|
|
||||||
return HttpResponse(json.dumps(response), content_type="application/json") |
|
||||||
Loading…
Reference in new issue