示例#1
0
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'))
示例#2
0
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",
        },
    )
示例#3
0
 def get_response(self, request, req_data: dict):
     cat = Category(name=req_data["name"], order=req_data["order"])
     cat.save()
     return {"success": True}, 200