def categories_add(request): try: text = request.POST['text'] except KeyError: # Redisplay the transaction voting form. return render(request, 'expenses/categories', { 'error_message': "All fields mandatory", }) else: if text != '' and text != UNTAGGED_SUBCATEGORY_TEXT: category = Category(text=text, owner=request.user) category.save() return HttpResponseRedirect(reverse('expenses:categories'))
def category_bulk_edit(request): categories = Category.user_objects(request) if request.method == "POST": added_count = 0 changed_count = 0 unchanged_count = 0 failure_count = 0 failure_list = [] for cat in categories: prefix = "cat_{}_".format(cat.pk) new_name = request.POST.get(prefix + "name") new_order = request.POST.get(prefix + "order") if new_name and new_order and new_order.isnumeric(): # can be changed new_order = int(new_order) if cat.name != new_name or cat.order != new_order: cat.name = new_name cat.order = new_order cat.save() changed_count += 1 else: unchanged_count += 1 else: failure_count += 1 failure_list.append(cat.name) additions = defaultdict(dict) print(request.POST) for k, v in request.POST.items(): if k.startswith("add_"): print(k, v) _add, aid, key = k.split("_") additions[aid][key] = v for k, fields in additions.items(): new_name = fields.get("name") new_order = fields.get("order") if new_name and new_order and new_order.isnumeric(): c = Category() c.name = new_name c.order = new_order c.user = request.user c.save() added_count += 1 else: failure_count += 1 failure_list.append("+{}/{}".format(new_name, new_order)) return render( request, "expenses/category_bulk_edit_results.html", { "htmltitle": _("Edit categories"), "title": _("Edit categories"), "pid": "category_bulk_edit_results", "added_count": added_count, "changed_count": changed_count, "unchanged_count": unchanged_count, "failure_count": failure_count, "failure_list": failure_list, }, ) return render( request, "expenses/category_bulk_edit.html", { "categories": categories, "htmltitle": _("Edit categories"), "title": _("Edit categories"), "pid": "category_bulk_edit", }, )
def get_response(self, request, req_data: dict): cat = Category(name=req_data["name"], order=req_data["order"]) cat.save() return {"success": True}, 200