face lifting

master
fefa4ka 9 years ago
parent 37a24fe3ec
commit a9fd9374a3
  1. 2
      trademark/lib/poiskznakov.py
  2. 2
      trademark/models.py
  3. 26
      trademark/templates/trademark/nice_block_busy.html
  4. 45
      trademark/templates/trademark/search_detail.html
  5. 2
      trademark/templates/trademark/search_list_item.html
  6. 29
      trademark/templates/trademark/trademark_detail.html
  7. 10
      trademark/views.py
  8. 45
      zsite/static/js/trademarks.js
  9. 34
      zsite/static/less/search.less

@ -32,7 +32,7 @@ class TrademarkSearchAPI():
'procedure': 'make_search',
'search_type': 'wdesc',
'search_string': keyword,
'databases': [21],
'databases': [21, 23],
'use_translit': 'true',
'skip_expired': 'true',
}

@ -268,6 +268,8 @@ class Search(models.Model):
instance.renewed_at = trademark.get('renewed', '')
for nice_id, nice_description in trademark['icgs'].iteritems():
if nice_description[0:1].isdigit():
nice_description = nice_description[nice_description.find('-'):]
nice_obj, created = Nice.objects.get_or_create(nice_id=nice_id)
product, created = Product.objects.get_or_create(nice=nice_obj, title=nice_description)
instance.products.add(product)

@ -1,16 +1,22 @@
<div class="trademark-search-nice-busy">
<h2>«{{ keyword|title }}» уже используется в следующих сферах</h2>
<h2>«{{ keyword|title }}» был зарегистрирован в следующих классах</h2>
<ul class="list-unstyled">
<ul class="list-unstyled load-more-results" list-type="nices">
{% for product in products_busy %}
{% if product.titles %}
<li class="trademark-search-nice-busy-product"><button class="btn btn-xs btn-default" popover="{% if product.nice.description %}{{ product.nice.description }}{% else %}{{ product.nice.title }}{% endif %}" popover-title="{{ product.nice.title }}" popover-trigger="mouseenter" popover-placement="bottom">{{ product.nice.nice_id }} класс</button> <button class="btn btn-xs btn-default trademark-search-show-products" product-id="{{ product.id }}">{{ product.titles|length }} категорий <span class="caret"> </span></button> {{ product.nice.title }}</li>
<ul class="trademark-search-nice-busy-products row" style="display: none;" product-id="{{ product.id }}">{% for title in product.titles %}<li class="col-xs-6">{{ title }}</li>{% endfor %}</ul>
{% else %}
<li class="trademark-search-nice-busy-product"><button class="btn btn-xs btn-default" popover="{% if product.nice.description %}{{ product.nice.description }}{% else %}{{ product.nice.title }}{% endif %}" popover-title="{{ product.nice.title }}" popover-trigger="mouseenter" popover-placement="bottom">{{ product.nice.nice_id }} класс</button> {{ product.cap_title }}</li>
{% endif %}
{% if product.titles %}
<li class="trademark-search-nice-busy-product load-more-result"><button class="btn btn-xs btn-default" popover="{% if product.nice.description %}{{ product.nice.description }}{% else %}{{ product.nice.title }}{% endif %}" popover-title="{{ product.nice.title }}" popover-trigger="mouseenter" popover-placement="bottom">{{ product.nice.nice_id }} класс</button> <button class="btn btn-xs btn-default trademark-search-show-products" product-id="{{ product.id }}">{{ product.titles|length }} категорий <span class="caret"> </span></button> {{ product.nice.title }}</li>
<ul class="trademark-search-nice-busy-products row" style="display: none;" product-id="{{ product.id }}">{% for title in product.titles %}<li class="col-xs-6">{{ title }}</li>{% endfor %}</ul>
{% else %}
<li class="trademark-search-nice-busy-product load-more-result"><button class="btn btn-xs btn-default" popover="{% if product.nice.description %}{{ product.nice.description }}{% else %}{{ product.nice.title }}{% endif %}" popover-title="{{ product.nice.title }}" popover-trigger="mouseenter" popover-placement="bottom">{{ product.nice.nice_id }} класс</button> {{ product.cap_title }}</li>
{% endif %}
{% endfor %}
<li class="load-more-li">
<button class="btn btn-default load-more">Показать ещё</button> — осталось <span class="load-more-count"></span>
</li>
</ul>
<hr/>
<p>Знак, который вы выбрали, уже используется в этих сферах. Это означает, что существуюет вероятность, что могут отказать в регистрации вашего знака.</p>
<p>Если же вы заинтересованы в регистрации этого товарного знака, мы <a href="/ru/trademarks/poisk-tovarnogo-znaka/">проведем проверку и поиск товарного знака</a> на возможность его регистрации.</p>
</div>

@ -10,9 +10,9 @@
<h1>Товарный знак «{{ keyword.request|title }}» зарегистрирован <nobr>{% if nice_busy.count == 45 %}во всех{% else %}в {{ nice_busy.count }}{% endif %} классах</nobr> товаров и услуг</h1>
<h2>{% if nice_busy.count == 45 %}Скорее всего, вы не можете зарегистрировать этот знак{% endif %}</h2>
<ul class="trademark-search-results list-inline list-unstyled">
<ul class="trademark-search-results load-more-results list-inline list-unstyled">
{% for tm in identity %}
<li class="trademark-search-result-identity trademark-search-result" trademark-id='{{ tm.id }}'>
<li class="trademark-search-result-identity load-more-result trademark-search-result" 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 %}
@ -40,13 +40,21 @@
</a>
</li>
{% endfor %}
<li class="load-more-li">
<button class="btn btn-default load-more">Показать ещё</button> — осталось <span class="load-more-count"></span>
</li>
</ul>
{% if identity_expired %}
<h2>Не действующие товарные знаки «{{ keyword.request|title }}»</h2>
<ul class="trademark-search-results list-inline list-unstyled">
<h2>Недействующие товарные знаки «{{ keyword.request|title }}»</h2>
<p>Исключительные права на эти товарные знаки не продлили, поэтому они доступны для <a href="http://zuykov.com/ru/trademarks/registraciya-tovarnogo-znaka/">регистрации</a> в этих классах товаров и услуг.</p>
<ul class="trademark-search-results load-more-results list-inline list-unstyled">
{% for tm in identity_expired %}
{% include 'trademark/search_list_item.html' with tm=tm %}
{% endfor %}
<li class="load-more-li">
<button class="btn btn-default load-more">Показать ещё</button> — осталось <span class="load-more-count"></span>
</li>
</ul>
{% endif %}
@ -78,21 +86,42 @@
</div>
</div>
{% if contains.count > 0 %}
{% if similar_expired.count > 0 %}
<h2>Похожие на «{{ keyword.request|title }}» знаки, доступные для регистрации</h2>
<p>Исключительные права на эти товарные знаки не продлили, поэтому они доступны для <a href="http://zuykov.com/ru/trademarks/registraciya-tovarnogo-znaka/">регистрации</a>.</p>
<ul class="trademark-search-results load-more-results list-inline list-unstyled">
{% for tm in similar_expired %}
{% include 'trademark/search_list_item.html' with tm=tm %}
{% endfor %}
<li class="load-more-li">
<button class="btn btn-default load-more">Показать ещё</button> — осталось <span class="load-more-count"></span>
</li>
</ul>
{% endif %}
{% if contains.count > 0 %}
<h2>Похожие на «{{ keyword.request|title }}» торговые марки</h2>
<ul class="trademark-search-results list-inline list-unstyled">
<ul class="trademark-search-results load-more-results list-inline list-unstyled">
{% for tm in contains %}
{% include 'trademark/search_list_item.html' with tm=tm %}
{% endfor %}
<li class="load-more-li">
<button class="btn btn-default load-more">Показать ещё</button> — осталось <span class="load-more-count"></span>
</li>
</ul>
{% endif %}
{% if similar.count > 0 %}
<h2>Знаки включающие в себя части от «{{ keyword.request|title }}»</h2>
<ul class="trademark-search-results list-inline list-unstyled">
<h2>Знаки немного похожина на «{{ keyword.request|title }}»</h2>
<ul class="trademark-search-results load-more-results list-inline list-unstyled">
{% for tm in similar %}
{% include 'trademark/search_list_item.html' with tm=tm %}
{% endfor %}
<li class="load-more-li">
<button class="btn btn-default load-more">Показать ещё</button> — осталось <span class="load-more-count"></span>
</li>
</ul>
{% endif %}

@ -1,4 +1,4 @@
<li class='trademark-search-result-contains'>
<li class='trademark-search-result-contains load-more-result {% 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 %}

@ -1,5 +1,9 @@
{% extends "trademark/base.html" %}
{% block meta_description %}Информация о торговой марке «{{ tm.title }}» — номера заявки и свидетельства, срок действия и классы товаров и услуг.{% endblock meta_description %}
{% block canonical_url %}<link rel="canonical" href="{{ SITE.domain }}{{ view.get_view_url }}"/>{% endblock canonical_url %}
{% block title %}Товарный знак «{{ tm.title }}» — заявка, свидетельство, классы{% endblock %}
{% block trademark_content %}
<div class="row">
<div class="col-xs-12 col-sm-8">
@ -13,16 +17,24 @@
</li>
<li class='col-xs-6'>
{% if tm.expiration_at %}
{% if tm.status == 'Acting' %}
<h2>Действует до <nobr>{{ tm.expiration_at }}</nobr></h2>
{% else %}
<h2>Закончил действие <nobr>{{ tm.expiration_at }}</nobr></h2>
{% endif %}
{% else %}
<h2>Регистрация <nobr>{{ tm.registration_at }}</nobr></h2>
{% endif %}
<p>Номер свидетельства № {{ tm.cert_id }}</p>
{% if tm.status == 'Acting' %}
{% if tm.expiration_at %}
<p>Действует до {{ tm.expiration_at }}</p>
{% else %}
{% if not tm.expiration_at %}
<p><strong>Действует</strong></p>
{% endif %}
{% else %}
<p><strong>Не действует</strong></p>
<p><strong>Не действует. Доступен для <a href="http://zuykov.com/ru/trademarks/registraciya-tovarnogo-znaka/">регистрации</a></strong>.</p>
{% endif %}
</li>
@ -30,7 +42,7 @@
<div class="trademark-detail-description row">
<div class="col-xs-6 trademark-detail-description-visual">
<h4>Изобразительный знак:</h3>
<h4>Изображение знака:</h3>
<img src="{{ tm.image_url }}"/>
</div>
<div class="col-xs-6 trademark-detail-text">
@ -42,11 +54,8 @@
{% include 'trademark/nice_block_busy.html' with keyword=tm.title nice_busy=tm.nices.all products_busy=tm.products.all %}
<h4>Данные ФИПС <small>Федеральной службы по интеллектуальной собственности</small></h4>
<small>{{ tm.source_url }}</small>
<div class="trademark-detail-fips-wrap">
<iframe class="frame" src="{{ tm.source_url }}"></iframe>
</div>
<h4>Источник: Федеральная Cлужба по Интеллектуальной Собственности</h4>
<small><a href="{{ tm.source_url }}">{{ tm.source_url }}</a></small>
</div>

@ -26,19 +26,23 @@ class SearchDetailView(generic.DetailView):
identity = self.get_object().searches.filter(similarity=146)[0]
identity_results = identity.results.filter(status='Acting')
identity_expired_results = identity.results.all().exclude(status='Acting')
identity_expired_results = identity.results.filter(status='Expired')
context['identity'] = identity_results
context['identity_expired'] = identity_expired_results
identity_ids = identity_results.values_list('id', flat=True)
nice_busy_ids = identity_results.values_list('nices__nice_id', flat=True).distinct()
contains = self.get_object().searches.filter(similarity=100)[0]
contains_results = contains.results.filter(title__isnull=False).exclude(id__in=identity_ids)
contains_results = contains.results.filter(title__isnull=False, status='Acting').exclude(id__in=identity_ids)
contains_expired_results = contains.results.filter(title__isnull=False, status='Expired').exclude(id__in=identity_ids)
context['contains'] = contains_results[:30]
contains_ids = contains_results.values_list('id', flat=True)
similar = self.get_object().searches.filter(similarity=97)[0]
context['similar'] = similar.results.all().exclude(id__in=contains_ids | identity_ids)[:30]
similar_results = similar.results.filter(status='Acting').exclude(id__in=contains_ids | identity_ids)
similar_expired_results = similar.results.filter(status='Expired').exclude(id__in=contains_ids | identity_ids)
context['similar'] = similar_results[:30]
context['similar_expired'] = (contains_expired_results | similar_expired_results).distinct()
context['nice_busy'] = Nice.objects.filter(nice_id__in=nice_busy_ids).order_by('nice_id')
context['products_busy'] = Product.objects.filter(id__in=identity_results.values_list('products__id')).order_by('nice__nice_id')

@ -121,8 +121,10 @@ $(function(){
});
}
$('#trademark-search-example').click(function(event) {
var keyword = $('#trademark-search-example').text();
event.preventDefault();
$("#trademark-search-request").val('Yandex');
$("#trademark-search-request").val(keyword);
});
$('#trademark-search-request').keypress(function (e) {
@ -147,5 +149,46 @@ $(function(){
});
});
$('.load-more-results').each(function () {
var results_count = $(this).find(".load-more-result").size(),
showed = 6,
$this = $(this),
$count = $(this).find('.load-more-count');
function update_count() {
var count = results_count - showed;
if(count > 0) {
$this.find('.load-more-li').css('display', 'block');
} else {
$this.find('.load-more-li').css('display', 'none');
}
if($this.attr('list-type') == 'nices') {
$count.text(count + ' ' + GetNoun(count, 'класс', 'класса', 'классов'));
} else {
$count.text(count + ' ' + GetNoun(count, 'знак', 'знака', 'знаков'));
}
}
function show_more() {
var display_value = 'inline-block'
if($this.attr('list-type') == 'nices') {
display_value = 'block'
}
$this.find('.load-more-result:lt(' + showed + ')').css('display', display_value);
}
show_more();
update_count();
$this.find('.load-more').click(function () {
showed = ( showed + 6 <= results_count) ? showed + 6 : results_count;
show_more();
update_count();
});
});
});

@ -1,3 +1,8 @@
.trademark-search-block {
h2 {
margin-top: 0;
}
}
.trademark-search {
.trademark-search-form {
margin-bottom: 5px;
@ -13,6 +18,16 @@
}
}
.load-more-results, .trademark-search-results {
.load-more-result {
display: none;
}
.load-more-li {
display: block;
}
}
.trademark-search-results {
.trademark-search-result-identity {
width: 161px;
@ -32,7 +47,12 @@
}
}
.trademark-search-result-expired {
border-color: 1px solid green;
}
.trademark-search-result, .trademark-search-result-identity, .trademark-search-result-contains {
overflow: hidden;
@ -45,10 +65,11 @@
cursor: pointer;
a {
text-decoration: none;
}
.popover {
color: #000 !important;
}
@ -96,6 +117,10 @@
margin-left: -15px;
margin-top: 10px;
.load-more-li {
margin-top: 10px;
}
.trademark-search-nice-busy-product {
margin-top: 10px;
}
@ -125,6 +150,7 @@
}
}
.trademark-register-block {
background-color: #E8EEFC;
}
@ -138,6 +164,10 @@
h2 {
margin-top: 10px;
}
hr {
border-color: #000;
}
}
.trademark-search-loading {

Loading…
Cancel
Save