initial commit
This commit is contained in:
commit
164fa61ad2
40 changed files with 1263 additions and 0 deletions
93
community_backup/webui/views.py
Normal file
93
community_backup/webui/views.py
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
from django.shortcuts import get_object_or_404
|
||||
from django.views.generic.base import TemplateView
|
||||
from django.views.generic import ListView, FormView
|
||||
from django.views.generic.edit import CreateView, UpdateView, DeleteView
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.forms import BaseUserCreationForm
|
||||
from django.contrib.auth.mixins import UserPassesTestMixin, LoginRequiredMixin
|
||||
|
||||
from django.template.loader import get_template
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
import markdown2
|
||||
|
||||
from .models import BorgRepository, Voucher
|
||||
from .forms import BorgRepositoryForm, RegisterUserForm
|
||||
|
||||
|
||||
class UserOwnsRepositoryMixin(UserPassesTestMixin):
|
||||
def test_func(self):
|
||||
repo = get_object_or_404(BorgRepository, pk=self.kwargs["pk"])
|
||||
return repo.user == self.request.user
|
||||
|
||||
|
||||
class LoginView(TemplateView):
|
||||
template_name = "login.html"
|
||||
|
||||
|
||||
class LandingView(TemplateView):
|
||||
template_name = "landing.html"
|
||||
|
||||
|
||||
class MarkdownView(TemplateView):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
source = get_template(self.md).template.source
|
||||
context["markdown_content"] = markdown2.markdown(source)
|
||||
return context
|
||||
|
||||
|
||||
class AboutView(MarkdownView):
|
||||
template_name = "markdown.html"
|
||||
md = "about.md"
|
||||
|
||||
|
||||
class BorgView(LoginRequiredMixin, ListView):
|
||||
template_name = "borg_list.html"
|
||||
content_object_name = "borg_repositories"
|
||||
|
||||
def get_queryset(self):
|
||||
data = BorgRepository.objects.filter(user=self.request.user)
|
||||
return data
|
||||
|
||||
|
||||
class RegisterUserView(FormView):
|
||||
template_name = "register.html"
|
||||
form_class = RegisterUserForm
|
||||
success_url = "/"
|
||||
|
||||
def form_valid(self, form):
|
||||
form.save()
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
class BorgRepositoryCreateView(LoginRequiredMixin, CreateView):
|
||||
model = BorgRepository
|
||||
success_url = "/borg/"
|
||||
form_class = BorgRepositoryForm
|
||||
|
||||
def get_initial(self):
|
||||
return {"user": self.request.user}
|
||||
|
||||
def form_valid(self, form):
|
||||
form.instance.user = self.request.user
|
||||
return super().form_valid(form)
|
||||
|
||||
|
||||
class BorgRepositoryDeleteView(LoginRequiredMixin, UserOwnsRepositoryMixin, DeleteView):
|
||||
model = BorgRepository
|
||||
success_url = "/borg/"
|
||||
|
||||
|
||||
class BorgRepositoryUpdateView(LoginRequiredMixin, UserOwnsRepositoryMixin, UpdateView):
|
||||
model = BorgRepository
|
||||
success_url = "/borg/"
|
||||
form_class = BorgRepositoryForm
|
||||
|
||||
def form_valid(self, form):
|
||||
form.instance.user = self.request.user
|
||||
return super().form_valid(form)
|
||||
Loading…
Add table
Add a link
Reference in a new issue