def post(self, request, *args, **kwargs): self.object = self.get_object() self.orderform = GoaOrderForm(request.POST) self.formfieldsupdate() if self.orderform.is_valid(): return self.form_valid(self.orderform) else: return self.form_invalid(self.orderform)
def get_object(self, **kwargs): try: self.goaobj = self.queryset.get(pk=self.kwargs['ads']) except ObjectDoesNotExist: raise Http404 else: self.queryset.filter(pk=self.kwargs['ads']).update(views=(self.goaobj.views + 1)) self.orderform = GoaOrderForm() self.formfieldsupdate() return self.goaobj
class DetailsView(DetailView): context_object_name = 'ad' queryset = GoaModel.objects.all().prefetch_related('category', 'currency_price', 'regions', 'goauser') template_name = 'detail.html' sendorder = False valuta = Currency.objects.get(english=u'Any currency') goaregion = GoaRegion.objects.get(english=u'All regions') def get(self, request, *args, **kwargs): if 'addbookmark' in request.GET: if not 'bookmarks' in request.session: request.session['bookmarks'] = [request.GET['addbookmark']] else: if request.GET['addbookmark'] not in request.session['bookmarks']: request.session['bookmarks'].append(request.GET['addbookmark']) if 'currency' in request.GET: self.valuta = Currency.objects.get(english=request.GET['currency']) request.session['valuta'] = self.valuta.english if 'region' in request.GET: self.goaregion = GoaRegion.objects.get(english=request.GET['region']) request.session['goaregion'] = self.goaregion.english return super(DetailsView, self).get(request, *args, **kwargs) def post(self, request, *args, **kwargs): self.object = self.get_object() self.orderform = GoaOrderForm(request.POST) self.formfieldsupdate() if self.orderform.is_valid(): return self.form_valid(self.orderform) else: return self.form_invalid(self.orderform) def form_valid(self, form): send_mail(form.cleaned_data['orderheader'], message_pass.order % {'name':self.goaobj.goauser.name, 'adheader':self.goaobj.header, 'email':form.cleaned_data['senderemail'], 'text':form.cleaned_data['textorder']}, from_email, [self.goaobj.goauser.email], html_message=message_pass.orderhtml % {'name':self.goaobj.goauser.name, 'adheader':self.goaobj.header, 'email':form.cleaned_data['senderemail'], 'text':form.cleaned_data['textorder']}) return redirect(reverse('loturlsendorder', kwargs={'goacategory':self.kwargs['goacategory'], 'goasubcategory':self.kwargs['goasubcategory'], 'ads':self.kwargs['ads'], 'transcription':self.kwargs['transcription']})) def form_invalid(self, form): return self.render_to_response(self.get_context_data()) def get_object(self, **kwargs): try: self.goaobj = self.queryset.get(pk=self.kwargs['ads']) except ObjectDoesNotExist: raise Http404 else: self.queryset.filter(pk=self.kwargs['ads']).update(views=(self.goaobj.views + 1)) self.orderform = GoaOrderForm() self.formfieldsupdate() return self.goaobj def formfieldsupdate(self): self.orderform.fields['orderheader'].widget.attrs.update({'value':_(u'Вопрос о лоте «%s»') % self.goaobj.header}) def similar_ads(self): keywords = self.goaobj.keywords adv = self.queryset.exclude(pk=self.kwargs['ads']).filter(Q(header__icontains=keywords) | Q(keywords__icontains=keywords), sub_category=self.goaobj.sub_category).order_by('-my_exp_date_time') return adv.filter(language=get_language()) def get_context_data(self, **kwargs): context = super(DetailsView, self).get_context_data(**kwargs) if self.kwargs.get('goacategory', False): context['category'] = GoaCategory.objects.get(transcription=self.kwargs.get('goacategory')) else: context['category'] = False if self.kwargs.get('goasubcategory', False): context['goasubcategory'] = GoaSubCategory.objects.filter(name_subcategory__transcription=self.kwargs.get('goacategory')).get(transcription=self.kwargs.get('goasubcategory')) else: context['goasubcategory'] = False context['ct'] = menu_category(self.request, self.kwargs.get('goacategory', False)) context['orderform'] = self.orderform context['sendorder'] = self.sendorder context['adv'] = self.similar_ads() context['seotitle'] = self.goaobj.title if self.goaobj.title else self.goaobj.header context['regions'] = GoaRegion.objects.all() context['currency'] = Currency.objects.all() if u'valuta' in self.request.session: context['valuta'] = Currency.objects.get(english=self.request.session['valuta']) else: context['valuta'] = Currency.objects.get(english=u'Any currency') if u'goaregion' in self.request.session: context['goaregion'] = GoaRegion.objects.get(english=self.request.session['goaregion']) else: context['goaregion'] = GoaRegion.objects.get(english=u'All regions') return context def render_to_response(self, context, **response_kwargs): return render(self.request, self.template_name, context, context_instance=RequestContext(self.request, processors=[footer_category, isauthusergoa, countbookmarks, lengs, headsearchform]))