You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
214 lines
8.0 KiB
214 lines
8.0 KiB
#-*- coding: utf-8 -*-
|
|
|
|
# from django.core.urlresolvers import reverse
|
|
# from django.http import HttpResponseRedirect
|
|
from django.shortcuts import get_object_or_404
|
|
from django.views import generic
|
|
from django.http import HttpResponse
|
|
import json
|
|
|
|
from .models import *
|
|
from django.views.decorators.cache import never_cache
|
|
|
|
|
|
|
|
class SearchDetailView(generic.DetailView):
|
|
model = Keyword
|
|
context_object_name = 'keyword'
|
|
template_name = 'trademark/search_detail.html'
|
|
slug_field = 'slug'
|
|
view_url_name = 'trademark:search-detail'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super(SearchDetailView, self).get_context_data(**kwargs)
|
|
|
|
self.get_object().save()
|
|
|
|
identity = self.get_object().searches.filter(similarity=146)[0]
|
|
identity_results = identity.results.filter(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, 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]
|
|
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')
|
|
context['nice_available'] = Nice.objects.filter(nice_id__in=[x for x in range(1,46) if x not in nice_busy_ids]).order_by('nice_id')
|
|
|
|
return context
|
|
|
|
|
|
class TrademarkDetailView(generic.DetailView):
|
|
model = Trademark
|
|
context_object_name = 'trademark'
|
|
template_name = 'trademark/trademark_detail.html'
|
|
view_url_name = 'trademark:trademark-detail'
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super(TrademarkDetailView, self).get_context_data(**kwargs)
|
|
|
|
tm = self.get_object()
|
|
context['tm'] = tm
|
|
context['nice_available'] = Nice.objects.filter(nice_id__in=[x for x in range(1,46) if x not in tm.nices.values_list('nice_id', flat=True)]).order_by('nice_id')
|
|
# identity = self.get_object().searches.filter(similarity=146)[0]
|
|
# identity_results = identity.results.all()
|
|
# context['identity'] = identity_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)
|
|
# 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]
|
|
|
|
# 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')
|
|
|
|
return context
|
|
|
|
|
|
class IndexView(generic.ListView):
|
|
template_name = 'trademark/index.html'
|
|
context_object_name = 'trademarks'
|
|
|
|
def get_queryset(self):
|
|
return Keyword.objects.all()
|
|
|
|
import threading
|
|
import time
|
|
|
|
class SearchResultsThread(threading.Thread):
|
|
def __init__(self, keyword, **kwargs):
|
|
self.keyword = keyword
|
|
super(SearchResultsThread, self).__init__(**kwargs)
|
|
|
|
def run(self):
|
|
self.keyword.load_results()
|
|
|
|
|
|
class Search(generic.View):
|
|
# def get(self, request):
|
|
# <view logic>
|
|
# return HttpResponse('result')
|
|
@never_cache
|
|
def get(self, request, slug):
|
|
keyword = get_object_or_404(Keyword, slug=slug)
|
|
|
|
loading = SearchResultsThread(keyword=keyword)
|
|
loading.start()
|
|
|
|
|
|
identity = keyword.searches.filter(similarity=146)[0]
|
|
|
|
contains = keyword.searches.filter(similarity=100)[0]
|
|
|
|
similar = keyword.searches.filter(similarity=97)[0]
|
|
|
|
response = {
|
|
'identity': {
|
|
'id': identity.id,
|
|
'status': identity.status,
|
|
'nices': identity.nices.count(),
|
|
'count': identity.results.all().count()
|
|
},
|
|
'contains': {
|
|
'id': contains.id,
|
|
'status': contains.status,
|
|
'count': contains.results.all().count()
|
|
},
|
|
'similar': {
|
|
'id': similar.id,
|
|
'status': similar.status,
|
|
'count': similar.results.all().count()
|
|
},
|
|
'status': 'ok'
|
|
}
|
|
|
|
return HttpResponse(json.dumps(response), content_type='application/json')
|
|
|
|
try:
|
|
identity = keyword.searches.filter(similarity=146)[0]
|
|
|
|
contains = keyword.searches.filter(similarity=100)[0]
|
|
|
|
similar = keyword.searches.filter(similarity=97)[0]
|
|
|
|
response = {
|
|
'identity': {
|
|
'id': identity.id,
|
|
'status': identity.status,
|
|
'nices': identity.nices,
|
|
'count': identity.results.all().count()
|
|
},
|
|
'contains': {
|
|
'id': contains.id,
|
|
'status': contains.status,
|
|
'count': contains.results.all().count()
|
|
},
|
|
'similar': {
|
|
'id': similar.id,
|
|
'status': similar.status,
|
|
'count': similar.results.all().count()
|
|
},
|
|
'status': 'ok'
|
|
}
|
|
|
|
return HttpResponse(json.dumps(response), content_type='application/json')
|
|
except:
|
|
return HttpResponse(json.dumps({ 'status': 'error', 'description': 'Request not found', 'slug': slug }), content_type="application/json")
|
|
|
|
|
|
def post(self, request):
|
|
keyword = request.POST.get('keyword', '')
|
|
|
|
if keyword:
|
|
k, created = Keyword.objects.get_or_create(request=keyword)
|
|
else:
|
|
return HttpResponse(json.dumps({ 'status': 'error', 'description': 'Empty request'}), content_type="application/json")
|
|
|
|
identity = k.searches.filter(similarity=146)[0]
|
|
|
|
contains = k.searches.filter(similarity=100)[0]
|
|
|
|
similar = k.searches.filter(similarity=97)[0]
|
|
|
|
response = {
|
|
'identity': {
|
|
'id': identity.id,
|
|
'status': identity.status,
|
|
'nices': identity.nices.count(),
|
|
'count': identity.results.all().count()
|
|
},
|
|
'contains': {
|
|
'id': contains.id,
|
|
'status': contains.status,
|
|
'count': contains.results.all().count()
|
|
},
|
|
'similar': {
|
|
'id': similar.id,
|
|
'status': similar.status,
|
|
'count': similar.results.all().count()
|
|
},
|
|
'slug': k.slug,
|
|
'status': 'ok'
|
|
}
|
|
|
|
return HttpResponse(json.dumps(response), content_type="application/json")
|
|
|
|
|
|
|