def report_view(request): if request.method == 'POST': #create a form instance form = ReportForm(request.POST) if form.is_valid(): #process the data in form.cleaned_data as required content_type = form.cleaned_data['content_type'] Model = content_type.model_class() id = form.cleaned_data['object_id'] obj = Model.objects.get(id=id) try: jaryanak = obj.jaryanak except: # for comments jaryanak = obj.content_object.jaryanak user = None if request.user.is_authenticated(): user = request.user reason = form.cleaned_data['reason'] ip = get_client_ip(request) reported = Report.objects.get_report(obj, user) if reported: messages.warning(request, "You've reported this before!") else: Report.objects.record_report(obj, user, jaryanak, reason, ip) messages.success(request, "Thank you for reporting this object!") if 'next' in request.POST: next = request.POST['next'] elif hasattr(obj, 'get_absolute_url'): if callable(getattr(obj, 'get_absolute_url')): next = obj.get_absolute_url() else: next = obj.get_absolute_url else: raise AttributeError('Define get_absolute_url') return HttpResponseRedirect(next) else: form = ReportForm() return render(request, 'flags/report_form.html', { 'form': form, 'reasons': REASON_CHOICES })
def report_view(request): if request.method == 'POST': #create a form instance form = ReportForm(request.POST) if form.is_valid(): #process the data in form.cleaned_data as required content_type = form.cleaned_data['content_type'] Model = content_type.model_class() id = form.cleaned_data['object_id'] obj = Model.objects.get(id=id) try: jaryanak = obj.jaryanak except: # for comments jaryanak = obj.content_object.jaryanak user = None if request.user.is_authenticated(): user = request.user reason = form.cleaned_data['reason'] ip = get_client_ip(request) reported = Report.objects.get_report(obj, user) if reported: messages.warning(request, "You've reported this before!") else: Report.objects.record_report(obj, user, jaryanak, reason, ip) messages.success(request, "Thank you for reporting this object!") if 'next' in request.POST: next = request.POST['next'] elif hasattr(obj, 'get_absolute_url'): if callable(getattr(obj, 'get_absolute_url')): next = obj.get_absolute_url() else: next = obj.get_absolute_url else: raise AttributeError('Define get_absolute_url') return HttpResponseRedirect(next) else: form = ReportForm() return render(request, 'flags/report_form.html', {'form': form, 'reasons':REASON_CHOICES})
def form_valid(self, form): # REMOVE "NOT" IN PRODUCTION!! if allowed_to_post(self.request, self.request.user): f = form.save(commit=False) f.submitter = self.request.user f.ip = get_client_ip(self.request) if not f.submitter.userprofile.is_banned(f.jaryanak): f.save() get_favicon.delay(f.pk) messages.success(self.request, 'Your text has been sent') else: messages.success(self.request, "You're bannd from this j") return redirect('home') return super(TextCreateView, self).form_valid(form) else: return redirect("home")