예제 #1
0
def configuration_duplicate(request, config_id=None):

    config = Configuration.get_or_none(config_id)
    if config is None:
        raise Http404(_("Configuration not found"))

    if config.organization != request.user.profile.organization:
        raise PermissionDenied()

    try:
        nconfig = config.duplicate(by=request.user.profile)
        messages.success(
            request,
            _("Successfuly duplicated Configuration <em>%(config)s</em> "
              "into <em>%(new_config)s</em>") % {
                  "config": config,
                  "new_config": nconfig
              },
        )
    except Exception as exp:
        logger.error("Unable to duplicate configuration {id}: {exp}".format(
            id=config.id, exp=exp))
        messages.error(
            request,
            _("Unable to duplicate Configuration <em>%(config)s</em>: -- ref %(err)s"
              ) % {
                  "config": config,
                  "err": exp
              },
        )

    return redirect("configuration_list")
예제 #2
0
def configuration_duplicate(request, config_id=None):

    config = Configuration.get_or_none(config_id)
    if config is None:
        raise Http404("Configuration not found")

    if config.organization != request.user.profile.organization:
        raise HttpResponse("Unauthorized", status=401)

    try:
        nconfig = config.duplicate(by=request.user.profile)
        messages.success(
            request,
            "Successfuly duplicated Configuration <em>{}</em> into <em>{}</em>"
            .format(config, nconfig),
        )
    except Exception as exp:
        logger.error("Unable to duplicate configuration {id}: {exp}".format(
            id=config.id, exp=exp))
        messages.error(
            request,
            "Unable to duplicate Configuration <em>{config}</em>: -- ref {exp}"
            .format(config=config, exp=exp),
        )

    return redirect("configuration_list")
예제 #3
0
파일: api.py 프로젝트: kiwix/cardshop
def media_choices_for_configuration(request, config_id):
    all_medias = Media.objects.all()

    config = Configuration.get_or_none(config_id)
    if config is not None and config.organization == request.user.profile.organization:
        medias = [m for m in all_medias if m.bytes >= config.size]
    if not medias:
        medias = all_medias.filter(size=all_medias.aggregate(Max("size"))["size__max"])
    return JsonResponse(Media.choices_for(medias), safe=False)
예제 #4
0
def configuration_export(request, config_id=None):

    config = Configuration.get_or_none(config_id)
    if config is None:
        raise Http404(_("Configuration not found"))

    if config.organization != request.user.profile.organization:
        raise PermissionDenied()

    response = JsonResponse(config.to_dict(),
                            safe=False,
                            json_dumps_params={"indent": 4})
    response["Content-Disposition"] = 'attachment; filename="{}.json"'.format(
        config.display_name)
    return response
예제 #5
0
def configuration_edit(request, config_id=None):
    context = {}

    if config_id:
        config = Configuration.get_or_none(config_id)
        if config is None:
            raise Http404(_("Configuration not found"))

        if config.organization != request.user.profile.organization:
            raise PermissionDenied()
    else:
        # new config
        config = Configuration(organization=request.user.profile.organization)

    # list of languages availables in all catalogs
    context["packages_langs"] = PACKAGES_LANGS

    if request.method == "POST":
        form = ConfigurationForm(request.POST, request.FILES, instance=config)
        if form.is_valid():
            try:
                instance = form.save(commit=False)
                instance.updated_by = request.user.profile
                instance.save()
            except Exception as exp:
                messages.error(
                    request,
                    _(
                        "Failed to save your configuration (although it looks good). "
                        "Try again and contact support "
                        "if it happens again (ref: $(err)s)"
                    )
                    % {"err": exp},
                )
            else:
                messages.success(request, _("Configuration Updated successfuly !"))
                return redirect("configuration_edit", config.id)
        else:
            pass
    else:
        form = ConfigurationForm(instance=config)

    context["form"] = form

    return render(request, "configuration_edit.html", context)
예제 #6
0
 def clean_config(self):
     config = Configuration.get_or_none(self.cleaned_data.get("config"))
     if config is None or config.organization != self.organization:
         raise forms.ValidationError(_("Not your configuration"),
                                     code="invalid")
     return config