From cf9b7b2ec2a9b70f3175f7939c3f0ef0539039a9 Mon Sep 17 00:00:00 2001 From: Alexander Kondratyev Date: Sun, 26 Mar 2017 21:24:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B8=D1=81=D0=BA=20=D0=BF=D0=BE?= =?UTF-8?q?=20=D0=B1=D0=B0=D0=B7=D0=B5=20=D0=A0=D0=BE=D0=B7=D0=BC=D0=B0?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=20=D0=B8=20=D0=BC=D0=B5=D0=BB=D0=BA=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B1=D0=B0=D0=B3=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- trademark/lib/poiskznakov.py | 20 +++++-- trademark/models.py | 56 ++++++++++++++----- trademark/static/trademark/less/result.less | 20 +++++++ trademark/templates/trademark/index.html | 2 +- .../templates/trademark/nice_block_busy.html | 2 +- .../templates/trademark/product_detail.html | 21 ++++--- .../templates/trademark/search_detail.html | 10 ++-- .../templates/trademark/search_list_item.html | 8 ++- .../templates/trademark/trademark_detail.html | 21 ++++--- 9 files changed, 117 insertions(+), 43 deletions(-) diff --git a/trademark/lib/poiskznakov.py b/trademark/lib/poiskznakov.py index 5afafe4..97e9079 100644 --- a/trademark/lib/poiskznakov.py +++ b/trademark/lib/poiskznakov.py @@ -1,4 +1,3 @@ -#!/usr/bin/python # -*- coding: utf-8 -*- import urllib2 @@ -75,12 +74,20 @@ class TrademarkSearchAPI(): 'module': 'search', 'procedure': 'get_result', 'search_id': search_id, - 'databases': [21] + 'databases': [21, 23] } data = self.send_request(request) if int(data['total_records_found']) > 0: - return data['records_list']['21']['records'], status + records = data['records_list'] + trademarks = {} + + if records.get('21', None): + trademarks = records['21']['records'].copy() + if records.get('23', None): + trademarks.update(records['23']['records']) + + return trademarks, status else: return None, status @@ -94,7 +101,12 @@ class TrademarkSearchAPI(): data = self.send_request(request) - return data['records_list']['21']['records'] + rospatent = data['records_list'].get('21', {}).get('records', {}) + romarin = data['records_list'].get('23', {}).get('records', {}) + + rospatent.update(romarin) + + return rospatent diff --git a/trademark/models.py b/trademark/models.py index fbdd5d3..1872230 100644 --- a/trademark/models.py +++ b/trademark/models.py @@ -13,11 +13,13 @@ from django.template.defaultfilters import slugify from datetime import date from datetime import timedelta +from dateutil.parser import parse # from .cms_appconfig import TrademarkConfig from collections import defaultdict import re + TrademarkAPI = TrademarkSearchAPI() class Owner(models.Model): @@ -96,6 +98,7 @@ class Nice(models.Model): alphabet[letter][first_word] = ', '.join([word for word in set(words) if word]) letter_items = alphabet[letter] + alphabet[letter] = sorted(letter_items.items(), key=lambda x: type(x[1])) return sorted(alphabet.items()) @@ -120,9 +123,9 @@ class Product(models.Model): class Trademark(models.Model): title = models.CharField(max_length=255, null=True) - ext_id = models.CharField(max_length=20, unique=True) - application_id = models.CharField(max_length=12, null=True) - cert_id = models.CharField(max_length=12, null=True) + ext_id = models.CharField(max_length=50, unique=True) + application_id = models.CharField(max_length=50, null=True) + cert_id = models.CharField(max_length=50, null=True) owner = models.TextField(null=True) image_url = models.URLField(null=True) nices = models.ManyToManyField(Nice) @@ -305,19 +308,40 @@ class Search(models.Model): if not created: continue - instance.title = trademark['wdesc'] - instance.application_id = trademark['appnum'] - instance.cert_id = trademark['certnum'] - instance.owner = trademark['owner'][0]['name'].encode('utf-8') + instance.title = trademark.get('wdesc', '') + + instance.application_id = trademark.get('appnum', '') + instance.cert_id = trademark.get('certnum', '') + try: + owner = trademark['owner'].pop() + name = owner.get('name', None) + addr = owner.get('addr', None) + country = owner.get('country', None) + legnat = owner.get('legnat', None) + owner_list = [item for item in set([name, legnat, addr, country]) if item] + + instance.owner = ', '.join(owner_list) + except: + pass instance.image_url = trademark.get('image', '') - instance.status = trademark['status'] + instance.status = trademark.get('status', '') - instance.application_at = trademark['dateapp'] - instance.registration_at = trademark['datereg'] + application_at = trademark.get('dateapp', None) + if application_at: + instance.application_at = parse(application_at) + registration_at = trademark.get('datereg', None) + if registration_at: + instance.registration_at = parse(registration_at) + + instance.access_key = trademark.get('access_key', '') + + try: + instance.save() + except: + print "Error" + print trademark - instance.access_key = trademark['access_key'] - instance.save() for nice_id in trademark.get('icgs', []): nice, created = Nice.objects.get_or_create(nice_id=nice_id) @@ -336,8 +360,12 @@ class Search(models.Model): for key, trademark in details.iteritems(): instance = Trademark.objects.get(ext_id=trademark['id']) instance.source_url = trademark.get('source', '') - instance.expiration_at = trademark.get('dateexp', '') - instance.renewed_at = trademark.get('renewed', '') + expiration_at = trademark.get('dateexp', None) + if expiration_at: + instance.expiration_at = expiration_at + renewed_at = trademark.get('renewed', None) + if renewed_at: + instance.renewed_at = renewed_at for nice_id, nice_description in trademark.get('icgs', {}).iteritems(): nice_obj, created = Nice.objects.get_or_create(nice_id=nice_id) diff --git a/trademark/static/trademark/less/result.less b/trademark/static/trademark/less/result.less index 658b601..8f1d8b8 100644 --- a/trademark/static/trademark/less/result.less +++ b/trademark/static/trademark/less/result.less @@ -72,6 +72,14 @@ .trademark-search-result-image { height: 100px; } + + .trademark-search-result-title { + line-height: 100px; + display: block; + font-size: 20px; + color: #000; + font-weight: bold; + } } .trademark-search-result-contains { @@ -80,7 +88,19 @@ .trademark-search-result-image { height: 60px; + + } + + .trademark-search-result-title { + line-height: 60px; + display: block; + font-size: 18px; + color: #000; + font-weight: bold; } + + + } .trademark-search-result-expired { diff --git a/trademark/templates/trademark/index.html b/trademark/templates/trademark/index.html index bad3160..3c956ff 100644 --- a/trademark/templates/trademark/index.html +++ b/trademark/templates/trademark/index.html @@ -34,7 +34,7 @@
  • -
  • {{trademark.product}} «{{trademark.name}}»
  • +
  • {{trademark.product}} «{{trademark.name}}»
  • {% endverbatim %} diff --git a/trademark/templates/trademark/nice_block_busy.html b/trademark/templates/trademark/nice_block_busy.html index e5e9dcc..ccb7095 100644 --- a/trademark/templates/trademark/nice_block_busy.html +++ b/trademark/templates/trademark/nice_block_busy.html @@ -8,7 +8,7 @@
  • {{ nice.nice_id }} класс {{ nice.title }}
  • {% else %} -
  • {{ products_busy|getitem:nice.nice_id|first }}
  • +
  • {{ nice.nice_id }} класс {% if products_busy|getitem:nice.nice_id|first %} {{ products_busy|getitem:nice.nice_id|first }} {% else %} {{ nice.title }}{% endif %}
  • {% endif %} {% endfor %} diff --git a/trademark/templates/trademark/product_detail.html b/trademark/templates/trademark/product_detail.html index 82a7439..2643025 100644 --- a/trademark/templates/trademark/product_detail.html +++ b/trademark/templates/trademark/product_detail.html @@ -28,6 +28,7 @@ +
    @@ -50,15 +51,14 @@
    -{% if trademarks_expired %} +{% if trademarks_acting %}
    • -

      Товарные знаки в {{ nice.nice_id }} классе, для которых возможна регистрация

      +

      Товарные знаки в {{ nice.nice_id }} классе {{ nice.title }}

      +

      Товарные знаки, зарегистрированные в классе про {{ nice.title|lower }} в категории {% if nice.nice_id > 38 %}услуг{% else %}товаров{% endif %} {{ product.title|lower }}.

      -

      Исключительные права на эти товарные знаки не продлили, поэтому их регистрация возможна после проведения полного поиска.

      -

      Эти товарные знаки были зарегистрированы в классе про {{ nice.title|lower }} в категории {% if nice.nice_id > 38 %}услуг{% else %}товаров{% endif %} {{ product.title|lower }}.

    • - {% for tm in trademarks_expired %} + {% for tm in trademarks_acting %} {% include 'trademark/search_list_item.html' with tm=tm %} {% endfor %}
    • @@ -67,14 +67,15 @@
    {% endif %} -{% if trademarks_acting %} +{% if trademarks_expired %}
    • -

      Товарные знаки в {{ nice.nice_id }} классе {{ nice.title }}

      -

      Товарные знаки, зарегистрированные в классе про {{ nice.title|lower }} в категории {% if nice.nice_id > 38 %}услуг{% else %}товаров{% endif %} {{ product.title|lower }}.

      +

      Товарные знаки в {{ nice.nice_id }} классе с истёкшим сроком действия

      +

      Исключительные права на эти товарные знаки не продлили, поэтому их регистрация возможна после проведения полного поиска.

      +

      Эти товарные знаки были зарегистрированы в классе про {{ nice.title|lower }} в категории {% if nice.nice_id > 38 %}услуг{% else %}товаров{% endif %} {{ product.title|lower }}.

    • - {% for tm in trademarks_acting %} + {% for tm in trademarks_expired %} {% include 'trademark/search_list_item.html' with tm=tm %} {% endfor %}
    • @@ -82,7 +83,9 @@
    {% endif %} +
    +