예제 #1
0
 def get_project(self, username, title, **kwargs):
     return get_project_or_404(
         Project.objects.all(),
         user=self.request.user,
         title__iexact=title,
         owner__user__username__iexact=username,
     )
예제 #2
0
    def get(self, request, *args, **kwargs):
        print("viz method=GET", request.GET)
        project = get_project_or_404(
            self.model.objects.all(),
            user=request.user,
            owner__user__username__iexact=kwargs["username"],
            title__iexact=kwargs["title"],
        )
        if project.tech == "python-paramtools":
            return redirect(f"/{project.owner}/{project.title}/new/")

        deployment_name = kwargs.get("rd_name", "default")
        if re.search(kubernetes_name_exp, deployment_name):
            raise Http404()
        context = self.project_context(request, project)
        if is_profile_active(request.user):
            owner = request.user.profile
        else:
            owner = None
        try:
            deployment, _ = Deployment.objects.get_or_create_deployment(
                project=project, name=deployment_name, owner=owner
            )
        except DeploymentException:
            raise Http404("Viz apps must have a sponsor.")
        context["show_readme"] = False
        context["tech"] = project.tech
        context["object"] = project
        context["deployment"] = deployment
        context["viz_host"] = project.cluster.viz_host or DEFAULT_VIZ_HOST
        context["protocol"] = "https"
        return render(request, self.template_name, context)
예제 #3
0
 def get(self, request, *args, **kwargs):
     print("method=GET", request.GET, kwargs)
     project = get_project_or_404(
         self.projects,
         user=request.user,
         owner__user__username__iexact=kwargs["username"],
         title__iexact=kwargs["title"],
     )
     context = self.project_context(request, project)
     context["show_readme"] = True
     return render(request, self.template_name, context)
예제 #4
0
 def post(self, request, *args, **kwargs):
     project = get_project_or_404(
         self.projects,
         user=request.user,
         owner__user__username__iexact=kwargs["username"],
         title__iexact=kwargs["title"],
     )
     sim = Simulation.objects.new_sim(user=request.user, project=project)
     context = {"request": request}
     data = {
         "inputs": InputsSerializer(sim.inputs, context=context).data,
         "sim": SimulationSerializer(sim, context=context).data,
     }
     return Response(data, status=status.HTTP_201_CREATED)
예제 #5
0
 def post(self, request, *args, **kwargs):
     project = get_project_or_404(
         self.queryset,
         user=request.user,
         owner__user__username__iexact=kwargs["username"],
         title__iexact=kwargs["title"],
     )
     # Setting inputs_status="PENDING" ensures that each request
     # creates a new simulation. This is necessary if a user is submitting
     # a batch of simulations.
     sim = Simulation.objects.new_sim(request.user,
                                      project,
                                      inputs_status="PENDING")
     return submit(request, status.HTTP_201_CREATED, project, sim)
예제 #6
0
 def handle(self, request, action, *args, **kwargs):
     print("router handle", args, kwargs)
     project = get_project_or_404(
         self.projects,
         user=request.user,
         owner__user__username__iexact=kwargs["username"],
         title__iexact=kwargs["title"],
     )
     if project.status == "running":
         if project.sponsor is None:
             return self.payment_view.as_view()(request, *args, **kwargs)
         else:
             return self.login_view.as_view()(request, *args, **kwargs)
     else:
         raise Http404()
예제 #7
0
 def get(self, request, *args, **kwargs):
     print("method=GET", request.GET, kwargs)
     project = get_project_or_404(
         self.projects,
         user=self.request.user,
         owner__user__username__iexact=kwargs["username"],
         title__iexact=kwargs["title"],
     )
     if project.status != "running":
         return redirect(project.app_url)
     context = self.project_context(request, project)
     context["show_readme"] = False
     context["tech"] = project.tech
     if request.user.is_authenticated and getattr(request.user, "profile", None):
         sim = Simulation.objects.new_sim(user=request.user, project=project)
         return redirect(sim.get_absolute_edit_url())
     else:
         return render(request, self.template_name, context)
예제 #8
0
    def get_inputs(self, kwargs, meta_parameters=None):
        project = get_project_or_404(
            self.queryset,
            user=self.request.user,
            owner__user__username__iexact=kwargs["username"],
            title__iexact=kwargs["title"],
        )
        ioutils = get_ioutils(project)
        try:
            defaults = ioutils.model_parameters.defaults(meta_parameters)
        except NotReady:
            print("NOT READY")
            return Response(status=202)
        except pt.ValidationError as e:
            return Response(str(e), status=status.HTTP_400_BAD_REQUEST)
        if "year" in defaults["meta_parameters"]:
            defaults.update({"extend": True})

        return Response(defaults)