parent
cb636a994a
commit
be02fdf1f8
4 changed files with 128 additions and 0 deletions
@ -0,0 +1,2 @@ |
|||||||
|
#!/usr/bin/env python |
||||||
|
# -*- coding: utf-8 -*- |
||||||
@ -0,0 +1,119 @@ |
|||||||
|
#!/usr/bin/env python |
||||||
|
# -*- coding: utf-8 -*- |
||||||
|
import random |
||||||
|
import pymorphy2 |
||||||
|
from trademark.models import Trademark, Product |
||||||
|
from django.http import HttpResponse |
||||||
|
import json |
||||||
|
|
||||||
|
|
||||||
|
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): |
||||||
|
|
||||||
|
if len(list_words) > 1: |
||||||
|
notation = list_words[random.randint(0, len(list_words) - 1)] |
||||||
|
else: |
||||||
|
notation = list_words[0] |
||||||
|
|
||||||
|
if normalize: |
||||||
|
morph = pymorphy2.MorphAnalyzer().parse(notation)[0] |
||||||
|
try: |
||||||
|
result = morph.inflect({'plur', 'nomn'}).word |
||||||
|
except: |
||||||
|
result = get_notation(list_words, normalize=True) |
||||||
|
else: |
||||||
|
result = notation |
||||||
|
result = result.capitalize() |
||||||
|
|
||||||
|
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: |
||||||
|
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(' ', '')) |
||||||
|
|
||||||
|
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) |
||||||
|
|
||||||
|
except Product.DoesNotExist: |
||||||
|
return False, False |
||||||
|
|
||||||
|
return _words, _generic_words |
||||||
|
|
||||||
|
|
||||||
|
def get_random_list_trademarks(request, status='Expired', count=10): |
||||||
|
notation = '' |
||||||
|
trademark_list = [] |
||||||
|
|
||||||
|
expired_trademarks = Trademark.objects.filter(status=status) |
||||||
|
random_list = _get_random_list(expired_trademarks)[:count] |
||||||
|
|
||||||
|
for trademark in random_list: |
||||||
|
words, generic_words = get_lists_for_notation(trademark) |
||||||
|
|
||||||
|
if words: |
||||||
|
notation = get_notation(words) |
||||||
|
if not words and generic_words: |
||||||
|
notation = get_notation(generic_words, normalize=True) |
||||||
|
|
||||||
|
if notation: |
||||||
|
brand = u'{notation} "{title}"'.format(notation=notation, title=trademark) |
||||||
|
# print u'%s' % notation + u' "%s"' % trademark |
||||||
|
else: |
||||||
|
brand = u'{}'.format(trademark) |
||||||
|
|
||||||
|
trademark_list.append({'name': brand, |
||||||
|
'ico': 'fa' |
||||||
|
}) |
||||||
|
|
||||||
|
response = {'count': len(trademark_list), 'status': 'ok', 'items': trademark_list} |
||||||
|
|
||||||
|
return HttpResponse(json.dumps(response), content_type="application/json") |
||||||
Loading…
Reference in new issue