98 lines
2.7 KiB
Python
98 lines
2.7 KiB
Python
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 DataProtectionView(MarkdownView):
|
|
template_name = "markdown.html"
|
|
md = "dataprotection.md"
|
|
|
|
|
|
class ImprintView(MarkdownView):
|
|
template_name = "markdown.html"
|
|
md = "imprint.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)
|