import json from django.http import HttpResponseRedirect, HttpResponse, Http404, HttpResponseForbidden from django.utils.translation import get_language from sorl.thumbnail import get_thumbnail from edit_forms import * from accounts.views import ProfileInvalidView from .models import Company class BaseView(ProfileInvalidView): def form_valid(self, form): slug = self.kwargs.get('slug') if not slug: raise Http404 company = Company.objects.get(url=slug) if company.creator_id != self.request.user.id: return HttpResponseForbidden() if self.form_class.translation: lang = get_language() comp_transl = company.translations.get(language_code=lang) form = self.form_class(self.request.POST, instance=comp_transl) else: form = self.form_class(self.request.POST, instance=company) company = form.save() try: rating = company.rating except AttributeError: rating = company.master.rating response = {'success': True, 'rating': rating} return HttpResponse(json.dumps(response), content_type='application/json') class LogoView(BaseView): """ instance profile. save user avatar. if call is ajax- return json data, else redirect to profile page """ form_class = LogoForm def form_valid(self, form): #company = self.request.user.company#!!! slug = self.kwargs.get('slug') if not slug: raise Http404 company = Company.objects.get(url=slug) if company.creator_id != self.request.user.id: return HttpResponseForbidden() form = self.form_class(self.request.POST, self.request.FILES, instance=company) company = form.save() if self.request.is_ajax(): im = get_thumbnail(company.logo, '100x100', format="PNG") response = {'success': True, 'url': im.url, 'rating': company.rating} return HttpResponse(json.dumps(response), content_type='application/json') else: return HttpResponseRedirect(company.get_permanent_url()) class NameView(BaseView): form_class = NameForm class HomeView(BaseView): form_class = HomeForm class SpecializationView(BaseView): form_class = SpecializationForm class PhoneView(BaseView): form_class = PhoneForm class EmailView(BaseView): form_class = EmailForm class WebPageView(BaseView): form_class = WebPageForm class SocialView(BaseView): form_class = SocialForm class ThemeView(BaseView): form_class = ThemeForm def form_valid(self, form): slug = self.kwargs.get('slug') if not slug: raise Http404 company = Company.objects.get(url=slug) if company.creator_id != self.request.user.id: return HttpResponseForbidden() form = self.form_class(self.request.POST, instance=company) company = form.save() try: rating = company.rating except AttributeError: rating = company.master.rating themes = [{'text': item.name,'id': str(item.id),'url': '/members/theme/%s/'%item.url} for item in company.theme.all()] response = {'success': True, 'rating': rating, 'tags': themes} return HttpResponse(json.dumps(response), content_type='application/json') class TagView(BaseView): form_class = TagForm def form_valid(self, form): slug = self.kwargs.get('slug') if not slug: raise Http404 company = Company.objects.get(url=slug) if company.creator_id != self.request.user.id: return HttpResponseForbidden() form = self.form_class(self.request.POST, instance=company) company = form.save() try: rating = company.rating except AttributeError: rating = company.master.rating tags = [{'text': item.name,'id': str(item.id),'url': '/members/tag/%s/'%item.url} for item in company.tag.all()] response = {'success': True, 'rating': rating, 'tags': tags} return HttpResponse(json.dumps(response), content_type='application/json') class FoundationView(BaseView): form_class = FoundationForm class StaffView(BaseView): form_class = StaffForm class DescriptionView(BaseView): form_class = DescriptionForm class AddressView(BaseView): form_class = AddressForm