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")
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")
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)
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
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)
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