# Copyright © 2022 Aravinth Manivannan # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . from django.shortcuts import render, redirect, get_object_or_404 from django.utils.http import urlencode from django.contrib.auth import authenticate, login, logout from django.contrib.auth import get_user_model from django.contrib.auth.decorators import login_required from django.http import HttpResponse from django.views.decorators.csrf import csrf_protect from django.urls import reverse from accounts.decorators import confirm_access from dash.models import Instance from billing.utils import payment_fullfilled from .utils import create_vm_if_not_exists def default_ctx(title: str, username: str): """ Default context for all dashboard pages """ return { "title": title, "username": username, "open_instances": "open", } @login_required def create_instance(request, instance_name: str): """ Dashboard homepage view """ instance = get_object_or_404(Instance, name=instance_name, owned_by=request.user) if not payment_fullfilled(instance=instance): return redirect(reverse("billing.invoice.generate", args=(instance_name,))) create_vm_if_not_exists() return HttpResponse() @login_required @confirm_access def delete_instance(request, instance_name: str): """ Dashboard homepage view """ instance = get_object_or_404(Instance, name=instance_name, owned_by=request.user) infra = Infra() infra.remove_vm(instance=instance) # TODO: push isn't implemented yet return HttpResponse()