Поиск по базе Розмарин и мелкие баги

remotes/origin/upgrade-requirements
Alexander Kondratyev 9 years ago
parent 8a1cd0db26
commit cf9b7b2ec2
  1. 20
      trademark/lib/poiskznakov.py
  2. 56
      trademark/models.py
  3. 20
      trademark/static/trademark/less/result.less
  4. 2
      trademark/templates/trademark/index.html
  5. 2
      trademark/templates/trademark/nice_block_busy.html
  6. 21
      trademark/templates/trademark/product_detail.html
  7. 10
      trademark/templates/trademark/search_detail.html
  8. 8
      trademark/templates/trademark/search_list_item.html
  9. 21
      trademark/templates/trademark/trademark_detail.html

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

@ -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)

@ -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 {

@ -34,7 +34,7 @@
<li class="trademark-search-landing-examples-loading">
<button class="btn btn-primary" ng-click='load()'><i class="fa fa-refresh" area-hidden="true" ng-class="{ 'glyphicon-refresh-animate': loading }"></i><span>{{loading_text}}</span></button>
</li>
<li class="trademark-search-landing-examples-item" ng-repeat="trademark in trademarks"><h3><i class="fa {{ trademark.glyph }}" aria-hidden="true"></i></h3>{{trademark.product}} «<a href="/ru/trademarks/online-search/trademark/{{trademark.trademark}}/">{{trademark.name}}</a>»</li>
<li class="trademark-search-landing-examples-item" ng-repeat="trademark in trademarks"><h3><i class="fa {{ trademark.glyph }}" aria-hidden="true"></i></h3><span class="text-nowrap">{{trademark.product}} </span>«<a class="text-nowrap" href="/ru/trademarks/online-search/trademark/{{trademark.trademark}}/">{{trademark.name}}</a>»</li>
</ul>
</div>
{% endverbatim %}

@ -8,7 +8,7 @@
<li class="trademark-search-nice-busy-product load-more-result c{{ nice.nice_id }}"><a href="{% url 'trademark:nice-detail' pk=nice.id %}" class="btn btn-xs btn-default" popover="{% if nice.description %}{{ nice.description }}{% else %}{{ nice.title }}{% endif %}" popover-title="{{ nice.title }}" popover-trigger="mouseenter" popover-placement="right">{{ nice.nice_id }} класс</a> <button class="btn btn-xs btn-default trademark-search-show-products" product-id="{{ nice.nice_id }}">{{ products_busy|getitem:nice.nice_id|length }} категорий <span class="caret"> </span></button> {{ nice.title }}</li>
<ul class="trademark-search-nice-busy-products row" style="display: none;" product-id="{{ nice.nice_id }}">{% for product in products_busy|getitem:nice.nice_id %}<li class="col-xs-6">{{ product.title }}</li>{% endfor %}</ul>
{% else %}
<li class="trademark-search-nice-busy-product load-more-result"><button class="btn btn-xs btn-default" popover="{% if nice.description %}{{ nice.description }}{% else %}{{ nice.title }}{% endif %}" popover-title="{{ nice.title }}" popover-trigger="mouseenter" popover-placement="right">{{ nice.nice_id }} класс</button> {{ products_busy|getitem:nice.nice_id|first }}</li>
<li class="trademark-search-nice-busy-product load-more-result"><a href="{% url 'trademark:nice-detail' pk=nice.id %}" class="btn btn-xs btn-default" popover="{% if nice.description %}{{ nice.description }}{% else %}{{ nice.title }}{% endif %}" popover-title="{{ nice.title }}" popover-trigger="mouseenter" popover-placement="right">{{ nice.nice_id }} класс</a> {% if products_busy|getitem:nice.nice_id|first %} {{ products_busy|getitem:nice.nice_id|first }} {% else %} {{ nice.title }}{% endif %}</li>
{% endif %}
{% endfor %}

@ -28,6 +28,7 @@
<meta property="position" content="5">
</li>
</ol>
<div class="row">
<div class="col-xs-12 col-sm-8">
@ -50,15 +51,14 @@
</div>
<div class="app-trademark">
{% if trademarks_expired %}
{% if trademarks_acting %}
<ul class="trademark-search-results load-more-results list-inline list-unstyled">
<li class="trademark-search-results-detail">
<h3>Товарные знаки в {{ nice.nice_id }} классе, для которых возможна регистрация</h3>
<h3>Товарные знаки в {{ nice.nice_id }} классе <small>{{ nice.title }}</small></h3>
<p>Товарные знаки, зарегистрированные в классе про <a href="{% url 'trademark:nice-detail' pk=nice.id %}">{{ nice.title|lower }}</a> в категории {% if nice.nice_id > 38 %}услуг{% else %}товаров{% endif %} {{ product.title|lower }}.</p>
<h5 class="trademark-search-results-detail-count"></h5>
<p>Исключительные права на эти товарные знаки не продлили, поэтому их <a href="http://zuykov.com/ru/trademarks/registraciya-tovarnogo-znaka/">регистрация</a> возможна после проведения <a href="http://zuykov.com/ru/trademarks/poisk-tovarnogo-znaka/">полного поиска</a>.</p>
<p>Эти товарные знаки были зарегистрированы в классе про <a href="{% url 'trademark:nice-detail' pk=nice.id %}">{{ nice.title|lower }}</a> в категории {% if nice.nice_id > 38 %}услуг{% else %}товаров{% endif %} {{ product.title|lower }}.</p>
</li>
{% for tm in trademarks_expired %}
{% for tm in trademarks_acting %}
{% include 'trademark/search_list_item.html' with tm=tm %}
{% endfor %}
<li class="load-more-li">
@ -67,14 +67,15 @@
</ul>
{% endif %}
{% if trademarks_acting %}
{% if trademarks_expired %}
<ul class="trademark-search-results load-more-results list-inline list-unstyled">
<li class="trademark-search-results-detail">
<h3>Товарные знаки в {{ nice.nice_id }} классе <small>{{ nice.title }}</small></h3>
<p>Товарные знаки, зарегистрированные в классе про <a href="{% url 'trademark:nice-detail' pk=nice.id %}">{{ nice.title|lower }}</a> в категории {% if nice.nice_id > 38 %}услуг{% else %}товаров{% endif %} {{ product.title|lower }}.</p>
<h3>Товарные знаки в {{ nice.nice_id }} классе с истёкшим сроком действия</h3>
<h5 class="trademark-search-results-detail-count"></h5>
<p>Исключительные права на эти товарные знаки не продлили, поэтому их <a href="http://zuykov.com/ru/trademarks/registraciya-tovarnogo-znaka/">регистрация</a> возможна после проведения <a href="http://zuykov.com/ru/trademarks/poisk-tovarnogo-znaka/">полного поиска</a>.</p>
<p>Эти товарные знаки были зарегистрированы в классе про <a href="{% url 'trademark:nice-detail' pk=nice.id %}">{{ nice.title|lower }}</a> в категории {% if nice.nice_id > 38 %}услуг{% else %}товаров{% endif %} {{ product.title|lower }}.</p>
</li>
{% for tm in trademarks_acting %}
{% for tm in trademarks_expired %}
{% include 'trademark/search_list_item.html' with tm=tm %}
{% endfor %}
<li class="load-more-li">
@ -82,7 +83,9 @@
</li>
</ul>
{% endif %}
</div>
</div>
<script type="text/javascript">

@ -32,11 +32,13 @@
{% for tm in identity %}
<li class="trademark-search-result-identity load-more-result trademark-search-result {% for class in tm.nices.all %}c{{ class.nice_id }} {% endfor %}" trademark-id='{{ tm.id }}'>
<a href='/ru/trademarks/online-search/trademark/{{ tm.id }}/'>
<div class='trademark-search-result-image' style="background-image: url({{ tm.image_url }});">
{% if not tm.image_url %}
<h4>{{ tm.title|title }}</h4>
<span class='trademark-search-result-title'>{{ tm.title|title }}</span>
{% else %}
<div class='trademark-search-result-image' style="background-image: url({{ tm.image_url }});"></div>
{% endif %}
</div>
<p>{{ tm.title|title }}</p>
{% if tm.nices.count != 44 %}
@ -84,7 +86,7 @@
{% endif %}
{% else %}
<h2>Товарный знак «{{ keyword.request|title }}» не зарегистрирован в базе свидетельств Роспатента {% if keyword.nice_objects|length > 0 %}в выбранных классах{% endif %}</h2>
<h2>Товарный знак «{{ keyword.request|title }}» не зарегистрирован в международной базе Ромарин и базе свидетельств Роспатента {% if keyword.nice_objects|length > 0 %}в выбранных классах{% endif %}</h2>
<p>
Существует ряд законодательных требований, которым должен соответствовать знак, не выполнение которых может привести к отказу в регистрации вашего знака.</p>
<p>

@ -1,10 +1,12 @@
<li class='trademark-search-result-contains load-more-result trademark-search-result {% for class in tm.nices.all %}c{{ class.nice_id }} {% endfor %} {% if tm.status == "Expired" %}trademark-search-result-expired{% endif %}'>
<a href='/ru/trademarks/online-search/trademark/{{ tm.id }}/'>
<div class='trademark-search-result-image' style="background-image: url({{ tm.image_url }});">
{% if not tm.image_url %}
<h4>{{ tm.title|title }}</h4>
{% endif %}
<span class="trademark-search-result-title">{{ tm.title|title }}</span>
{% else %}
<div class='trademark-search-result-image' style="background-image: url({{ tm.image_url }});">
</div>
{% endif %}
<p>{{ tm.title|title }}</p>
</a>
</li>

@ -9,15 +9,19 @@
<div class="row">
<div class="col-xs-12 col-sm-8">
<h1>Товарный знак «{{ tm.title }}»</h1>
<h1>Товарный знак «{{ tm.title }}» № {{ tm.cert_id }}</h1>
<ul class="list-unstyled row">
{% if tm.application_at or tm.application_id %}
<li class='col-xs-4'>
<h2>Подана заявка <nobr>{{ tm.application_at }}</nobr></h2>
<p>Номер <nobr>№ {{ tm.application_id }}</nobr></p>
{% if tm.application_at %}<h2>Подана заявка <nobr>{{ tm.application_at }}</nobr></h2>{% endif %}
{% if tm.application_id %}<p>Номер <nobr>№ {{ tm.application_id }}</nobr></p>{% endif %}
</li>
<li class='col-xs-2 trademark-detail-arrow'>
</li>
{% endif %}
<li class='col-xs-6'>
{% if tm.expiration_at %}
{% if tm.status == 'Acting' %}
@ -36,7 +40,7 @@
<p><strong>Действует</strong></p>
{% endif %}
{% else %}
<p><strong>Не действует. Доступен для <a href="http://zuykov.com/ru/trademarks/registraciya-tovarnogo-znaka/">регистрации</a></strong>.</p>
<p><strong>Не действует. <a href="http://zuykov.com/ru/trademarks/poisk-tovarnogo-znaka/">Проверьте</a>, возможно, доступен для <a href="http://zuykov.com/ru/trademarks/registraciya-tovarnogo-znaka/">регистрации</a></strong>.</p>
{% endif %}
</li>
@ -44,8 +48,10 @@
<div class="trademark-detail-description row">
<div class="col-xs-6 trademark-detail-description-visual">
<h4>Изображение знака:</h3>
<img src="{{ tm.image_url }}"/>
{% if tm.image_url %}
<h4>Изображение знака:</h3>
<img src="{{ tm.image_url }}"/>
{% endif %}
</div>
<div class="col-xs-6 trademark-detail-text">
<h4>Правообладатель:</h3>
@ -55,9 +61,10 @@
{% include 'trademark/nice_block_busy.html' with keyword=tm.title nice_busy=tm.nices.all products_busy=products_busy %}
{% if tm.source_url %}
<h4>Источник: Федеральная Cлужба по Интеллектуальной Собственности</h4>
<small><a href="{{ tm.source_url }}" target="blank">{{ tm.source_url }}</a></small>
{% endif %}
</div>

Loading…
Cancel
Save