示例#1
0
def dashboard(request):

    success, code, msg = test_connection()
    if not success:
        messages.error(
            request,
            _("Unable to connect (HTTP %(code)s) to API at <code>%(url)s</code>%(msg)s")
            % {
                "url": settings.CARDSHOP_API_URL,
                "code": code,
                "msg": " -- " + msg if msg else "",
            },
        )
        return redirect("admin")

    context = {
        "channels": as_items_or_none(*get_channels_list()) or None,
        "warehouses": as_items_or_none(*get_warehouses_list()) or None,
        "users": as_items_or_none(*get_users_list()) or None,
        "workers": as_items_or_none(*get_workers_list()) or None,
        "images": as_items_or_none(*get_autoimages_list()) or None,
        "api_url": settings.CARDSHOP_API_URL_EXTERNAL,
    }

    forms_map = {
        "channel_form": ChannelForm,
        "user_form": UserForm,
        "warehouse_form": WarehouseForm,
        "image_form": ImageForm,
    }
    for key, value in forms_map.items():
        context[key] = value(prefix=key, client=request.user.profile)

    if request.method == "POST" and request.POST.get("form") in forms_map.keys():

        # which form is being saved?
        form_key = request.POST.get("form")
        context[form_key] = forms_map.get(form_key)(
            request.POST, prefix=form_key, client=request.user.profile
        )

        if context[form_key].is_valid():
            try:
                res = context[form_key].save()
            except Exception as exp:
                logger.error(exp)
                messages.error(request, _("Error while saving… %(err)s") % {"err": exp})
            else:
                messages.success(request, context[form_key].success_message(res))
                return redirect("scheduler")

    if success:
        messages.set_level(request, messages.DEBUG)
        messages.debug(
            request,
            _("Connected to Scheduler API at <code>%(url)s</code>")
            % {"url": settings.CARDSHOP_API_URL},
        )

    return render(request, "scheduler.html", context)
示例#2
0
def dashboard(request):

    success, code, msg = test_connection()
    if not success:
        messages.error(
            request,
            "Unable to connect (HTTP {code}) to API at <code>{url}</code>{msg}".format(
                url=settings.CARDSHOP_API_URL,
                code=code,
                msg=" -- " + msg if msg else "",
            ),
        )
        return redirect("admin")

    context = {
        "channels": as_items_or_none(*get_channels_list()) or None,
        "warehouses": as_items_or_none(*get_warehouses_list()) or None,
        "users": as_items_or_none(*get_users_list()) or None,
        "workers": as_items_or_none(*get_workers_list()) or None,
    }

    forms_map = {
        "channel_form": ChannelForm,
        "user_form": UserForm,
        "warehouse_form": WarehouseForm,
    }
    for key, value in forms_map.items():
        context[key] = value(prefix=key)

    if request.method == "POST" and request.POST.get("form") in forms_map.keys():

        # which form is being saved?
        form_key = request.POST.get("form")
        context[form_key] = forms_map.get(form_key)(request.POST, prefix=form_key)

        if context[form_key].is_valid():
            try:
                res = context[form_key].save()
            except Exception as exp:
                logger.error(exp)
                messages.error(request, "Error while saving… {exp}".format(exp=exp))
            else:
                messages.success(request, context[form_key].success_message(res))
                return redirect("scheduler")

    if success:
        messages.set_level(request, messages.DEBUG)
        messages.debug(
            request,
            "Connected to Scheduler API at <code>{url}</code>".format(
                url=settings.CARDSHOP_API_URL
            ),
        )

    return render(request, "scheduler.html", context)
示例#3
0
def list(request):

    success, code, msg = test_connection()
    if not success:
        messages.error(
            request,
            "Unable to connect (HTTP {code}) to API at <code>{url}</code>{msg}"
            .format(
                url=settings.CARDSHOP_API_URL,
                code=code,
                msg=" -- " + msg if msg else "",
            ),
        )
        return redirect("admin")

    orders = sorted(
        [OrderData(order) for order in as_items_or_none(*get_orders_list())],
        key=lambda item: item["statuses"][0]["on"],
        reverse=True,
    )
    context = {"orders": orders or None}

    if success:
        messages.set_level(request, messages.DEBUG)
        messages.debug(
            request,
            "Connected to Scheduler API at <code>{url}</code>".format(
                url=settings.CARDSHOP_API_URL),
        )

    return render(request, "all_orders.html", context)
示例#4
0
def get_warehouse_choices():
    from manager.scheduler import get_warehouses_list, as_items_or_none

    warehouses = as_items_or_none(*get_warehouses_list())
    if warehouses is None:
        return [("kiwix", "download")]
    return [(warehouse.get("slug"), warehouse.get("slug"))
            for warehouse in warehouses if warehouse.get("active", False)]
示例#5
0
def get_channel_choices():
    from manager.scheduler import get_channels_list, as_items_or_none

    channels = as_items_or_none(*get_channels_list())
    if channels is None:
        return [("kiwix", "Kiwix")]
    return [(
        channel.get("slug"),
        "{name} ({pub})".format(
            name=channel.get("name"),
            pub="Private" if channel.get("private") else "Public",
        ),
    ) for channel in channels if channel.get("active", False)]