#-*- 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) 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.all().exclude(id__in=identity_ids) context['contains'] = contains_results 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) context['nice_busy'] = Nice.objects.filter(nice_id__in=nice_busy_ids).order_by('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 IndexView(generic.ListView): template_name = 'trademark/index.html' context_object_name = 'trademarks' def get_queryset(self): return Keyword.objects.all() class Search(generic.View): # def get(self, request): # # return HttpResponse('result') @never_cache def get(self, request, slug): keyword = get_object_or_404(Keyword, slug=slug) 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")