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.
88 lines
2.8 KiB
88 lines
2.8 KiB
# -*- coding: utf-8 -*-
|
|
import json
|
|
from django.http import HttpResponse
|
|
from functions.custom_views import ExpoListView
|
|
from django.views.generic import ListView, FormView
|
|
from haystack.query import EmptySearchQuerySet
|
|
from models import Company
|
|
from forms import CreateCompanyForm
|
|
from functions.search_forms import CompanySearchForm
|
|
|
|
|
|
class CompanySearchView(ListView):
|
|
paginate_by = 10
|
|
template_name = 'company/search.html'
|
|
search_form = CompanySearchForm
|
|
model = Company
|
|
|
|
def get_queryset(self):
|
|
|
|
if self.request.GET:
|
|
form = self.search_form(self.request.GET)
|
|
if form.is_valid():
|
|
return form.search()
|
|
else:
|
|
return EmptySearchQuerySet()
|
|
else:
|
|
return EmptySearchQuerySet()
|
|
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super(CompanySearchView, self).get_context_data(**kwargs)
|
|
|
|
context['search_form'] = CompanySearchForm(self.request.GET)
|
|
queries = self.request.GET.copy()
|
|
if queries.has_key('page'):
|
|
del queries['page']
|
|
context['queries'] = queries
|
|
context['search_action'] = '/members/search/'
|
|
context['type'] = 'members search'
|
|
|
|
return context
|
|
|
|
|
|
class CompanyView(ExpoListView):
|
|
paginate_by = 10
|
|
model = Company
|
|
template_name = 'company_catalog.html'
|
|
search_form = CompanySearchForm
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super(CompanyView, self).get_context_data(**kwargs)
|
|
context['type'] = 'members search'
|
|
return context
|
|
|
|
class CompanyExposition(CompanyView):
|
|
template_name = 'test_list.html'
|
|
|
|
def get_queryset(self):
|
|
|
|
params = self.get_params()
|
|
for param in params:
|
|
if param.get('type') == 'event':
|
|
company = Company.objects.safe_get(url=param.get('url'))
|
|
#query = exp.users
|
|
self.params = params
|
|
return company.exposition_companies.all()
|
|
|
|
def create_company(request):
|
|
|
|
response = {'success': False}
|
|
form = CreateCompanyForm(request.POST)
|
|
if form.is_valid():
|
|
form.save(request.user)
|
|
response['success'] = True
|
|
return HttpResponse(json.dumps(response), content_type='application/json')
|
|
else:
|
|
response['errors'] = form.errors
|
|
return HttpResponse(json.dumps(response), content_type='application/json')
|
|
|
|
|
|
def get_company(request):
|
|
if request.is_ajax():
|
|
term = request.GET['term']
|
|
qs = Company.objects.language().filter(translations__name__contains=term).distinct()
|
|
result = [{'id': company.id, 'label': company.name} for company in qs]
|
|
return HttpResponse(json.dumps(result), content_type='application/json')
|
|
else:
|
|
return HttpResponse('not ajax') |