def post(self, request, *args, **kwargs): """ Handles POST requests, instantiating a form instance with the passed POST variables and then checked for validity. """ form = CategoryForm(request.POST, instance=self.get_object()) if form.is_valid(): self.form_valid(form) # process categorical vars categorical_vars_ids = self.object.get_categorical_vars().values_list('id', flat=True) new_categorical_vars_ids = [int(x) for x in request.POST.getlist('categorical_variables')] deleted_categorical_vars_ids = list(set(categorical_vars_ids) - set(new_categorical_vars_ids)) added_categorical_vars_ids = list(set(new_categorical_vars_ids) - set(categorical_vars_ids)) for id in deleted_categorical_vars_ids: CategoricalVariable.objects.get(pk=id).delete() for id in added_categorical_vars_ids: categorical_var = CategoricalVariable.objects.get(pk=id) categorical_var.pk = None categorical_var.id = None categorical_var.category = self.object categorical_var.save() # process numerical vars numerical_vars_ids = self.object.get_numerical_vars().values_list('id', flat=True) new_numerical_vars_ids = [int(x) for x in request.POST.getlist('numerical_variables')] deleted_numerical_vars_ids = list(set(numerical_vars_ids) - set(new_numerical_vars_ids)) added_numerical_vars_ids = list(set(new_numerical_vars_ids) - set(numerical_vars_ids)) for id in deleted_numerical_vars_ids: NumericalVariable.objects.get(pk=id).delete() for id in added_numerical_vars_ids: numerical_var = NumericalVariable.objects.get(pk=id) numerical_var.pk = None numerical_var.id = None numerical_var.category = self.object numerical_var.save() # process questions questions_ids = self.object.get_usual_questions().values_list('id', flat=True) new_questions_ids = [int(x) for x in request.POST.getlist('questions')] deleted_questions_ids = list(set(questions_ids) - set(new_questions_ids)) added_questions_ids = list(set(new_questions_ids) - set(questions_ids)) for id in deleted_questions_ids: Question.objects.get(pk=id).delete() for id in added_questions_ids: question = Question.objects.get(pk=id) question.pk = None question.category = self.object question.save() # Automatically create Algorithm for new question algo_name = 'Algo for %s question with ID: %d' % (question.type, question.pk) algorithm = Algorithm(question=question, name=algo_name) algorithm.save() if 'submit-form-and-add-another' in request.POST: return HttpResponseRedirect( reverse('dashboard:category_create', args=[get_contract_pk(self.request)])) return HttpResponseRedirect(self.get_success_url()) else: self.object = None return self.form_invalid(form)
def category_edit(request, slug=None): cat = None if slug is not None: cat = get_object_or_404(Category, slug = slug) if request.method == 'POST': form = CategoryForm(request.POST, instance = cat) if form.is_valid(): form.save() messages.info(request, "Category updated") return HttpResponseRedirect(reverse('dashboard_categories')) else: form = CategoryForm(instance = cat) if slug is not None: pics = cat.photos.all() avail = Photo.objects.exclude(id__in = [p.id for p in pics]) return render(request, 'dashboard/category_edit.html', locals())
def category_create(request): if request.session.get('user_type') == 'seller': if request.method == 'GET': form = CategoryForm() if request.method == 'POST': form = CategoryForm(request.POST) if form.is_valid(): form.save() return redirect('home') return render(request, 'dashboard/modals/category_form.html', {'form': form})
def category_update(request, pk): if request.session.get('user_type') == 'seller': category = get_object_or_404(Category, pk=pk) if request.method == 'GET': form = CategoryForm(instance=category) if request.method == 'POST': form = CategoryForm(request.POST, instance=category) if form.is_valid(): form.save() return redirect('home') return render(request, 'dashboard/modals/category_form.html', {'form': form}) else: return redirect('home')
def CategoryAddPage(request): form = CategoryForm() if request.method == "POST": form = CategoryForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'Category been Added succesfully') return redirect('dashboard:categories') else: print(form.errors) context = { "dash_title": 'Add Category', "form": form, } return render(request, "dashboard/add-locality.html", context)
def CategoryEditPage(request, *args, **kwargs): category = get_object_or_404(Category, pk=kwargs["id"]) form = CategoryForm(instance=category) if request.method == "POST": form = CategoryForm(request.POST, instance=category) if form.is_valid(): form.save() messages.success(request, 'Category been updated succesfully') return redirect('dashboard:categories') else: print(form.errors) context = { "dash_title": 'Edit Category', "form": form, } return render(request, "dashboard/edit-locality.html", context)