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.
 
 
 
 
 
 

129 lines
5.2 KiB

# -*- coding: utf-8 -*-
import json
from django.core.urlresolvers import reverse
from django.http import HttpResponse
from django.conf import settings
from django.views.generic import DetailView
from functions.custom_views import ListView, BlockedFilterMixin
from django.shortcuts import get_object_or_404
from django.utils.translation import ugettext as _, get_language
from models import Company
from theme.models import Theme, Tag
from forms import CreateCompanyForm
from .edit_forms import NameForm as CompNameForm, HomeForm as CompHomeForm, PhoneForm as CompPhoneForm,\
EmailForm as CompEmailForm, WebPageForm as CompWebPageForm, SocialForm as CompSocialForm,\
TagForm as CompTagForm, DescriptionForm as CompDescr, StaffForm as CompStaff, \
FoundationForm as CompFound, SpecializationForm as CompSpec, AddressForm as CompAddress,\
LogoForm as CompLogo, ThemeForm as CompThemeForm
from meta.views import MetadataMixin
class MemberList(MetadataMixin, BlockedFilterMixin, ListView):
model = Company
paginate_by = settings.CLIENT_PAGINATION
template_name = 'client/company/companies_list.html'
catalog_url = '/members/'
def get_queryset(self):
qs = super(MemberList, self).get_queryset()
return qs.order_by('-rating')
class MemberThemeList(MetadataMixin, BlockedFilterMixin, ListView):
model = Company
paginate_by = settings.CLIENT_PAGINATION
template_name = 'client/company/companies_list.html'
catalog_url = '/members/'
def get_queryset(self):
qs = super(MemberThemeList, self).get_queryset()
slug = self.kwargs.get('slug')
theme = get_object_or_404(Theme, url=slug)
self.kwargs['theme'] = theme
qs = qs.filter(theme=theme)
return qs
class MemberTagList(MetadataMixin, BlockedFilterMixin, ListView):
model = Company
paginate_by = settings.CLIENT_PAGINATION
template_name = 'client/company/companies_list.html'
catalog_url = '/members/'
def get_queryset(self):
qs = super(MemberTagList, self).get_queryset()
slug = self.kwargs.get('slug')
tag = get_object_or_404(Tag, url=slug)
self.kwargs['tag'] = tag
qs = qs.filter(tag=tag)
return qs
class MemberDetail(MetadataMixin, DetailView):
model = Company
slug_field = 'url'
template_name = 'client/company/company_detail.html'
def get_context_data(self, **kwargs):
context = super(MemberDetail, self).get_context_data(**kwargs)
company = context['object']
if self.request.user == company.creator:
forms = {
'home_form': CompHomeForm(instance=company), 'phone_form': CompPhoneForm(instance=company),
'email_form': CompEmailForm(instance=company), 'web_page_form': CompWebPageForm(instance=company),
'social_form': CompSocialForm(instance=company),
'staff_form': CompStaff(instance=company), 'found_form': CompFound(instance=company),
'logo_form': CompLogo(instance=company)
}
tags = [{'id': str(tag.id), 'text': tag.name, 'url': '/members/tag/%s/'%tag.url} for tag in company.tag.all()]
tag_form = CompTagForm()
tag_form.fields['tag'].widget.attrs['data-predifined'] = json.dumps(tags)
tag_form.fields['tag'].widget.attrs['value'] = ''
#themes = [{'id': str(item.id), 'text': item.name } for item in company.theme.all()]
theme_form = CompThemeForm(instance=company)
#theme_form.fields['theme'].widget.attrs['data-predifined'] = json.dumps(themes)
#theme_form.fields['tag'].widget.attrs['value'] = ''
forms.update({'tag_form': tag_form, 'theme_form': theme_form})
lang = get_language()
comp_transl = company.translations.get(language_code=lang)
transl_forms = {
'name_form': CompNameForm(instance=comp_transl), 'spec_form': CompSpec(instance=comp_transl),
'description_form': CompDescr(instance=comp_transl), 'address_form': CompAddress(instance=comp_transl)
}
context.update(forms)
context.update(transl_forms)
return context
def create_company(request):
response = {'success': False}
form = CreateCompanyForm(request.POST)
if form.is_valid():
company = form.save(request.user)
response['success'] = True
response['redirect_url'] = reverse('company-detail', args=[company.url])
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, 'logo': company.logo.url if company.logo else settings.NO_LOGO } for company in qs]
return HttpResponse(json.dumps(result), content_type='application/json')
else:
return HttpResponse('not ajax')