1
0
Fork 0
mirror of https://github.com/Findus23/RPGnotes.git synced 2024-09-19 15:43:45 +02:00
RPGnotes/campaigns/views.py

72 lines
2.2 KiB
Python
Raw Normal View History

2021-08-29 13:58:21 +02:00
from django.shortcuts import redirect
from django.urls import reverse_lazy
from django.utils.text import slugify
from django.views import generic
2021-08-29 16:45:40 +02:00
from rules.contrib.views import LoginRequiredMixin
2021-08-29 13:58:21 +02:00
from tenant_users.tenants.tasks import provision_tenant
2021-08-29 00:20:02 +02:00
2021-08-29 13:58:21 +02:00
from campaigns.forms import CampaignForm
from campaigns.models import Campaign
from users.models import TenantUser
2021-08-29 22:09:22 +02:00
from utils.mixin import PartOfTenantRequiredMixin
2021-08-29 13:58:21 +02:00
2021-08-29 16:45:40 +02:00
class CampaignListView(LoginRequiredMixin, generic.ListView):
2021-08-29 13:58:21 +02:00
template_name = "campaigns/campaign_overview.html"
model = Campaign
context_object_name = "campaigns"
def get_queryset(self):
current_user: TenantUser = self.request.user
return current_user.tenants.all()
2021-08-29 16:45:40 +02:00
class CampaignCreateView(LoginRequiredMixin, generic.FormView):
2021-08-29 13:58:21 +02:00
template_name = "campaigns/campaign_edit.html"
form_class = CampaignForm
def form_valid(self, form):
name = form.cleaned_data.get("name")
slug = slugify(name).replace("-", "")
print(slug)
user = self.request.user
fqdn = provision_tenant(name, slug, user.email, is_staff=True)
return redirect("http://" + fqdn)
2021-08-29 22:09:22 +02:00
class CampaignDetailView(PartOfTenantRequiredMixin,LoginRequiredMixin, generic.DetailView):
2021-08-29 13:58:21 +02:00
template_name = "campaigns/campaign_detail.html"
model = Campaign
slug_url_kwarg = "campslug"
def get_object(self, queryset=None):
return self.request.tenant
2021-08-29 16:45:40 +02:00
class CampaignEditView(LoginRequiredMixin, generic.UpdateView):
2021-08-29 13:58:21 +02:00
template_name = "campaigns/campaign_edit.html"
model = Campaign
fields = ["name"]
slug_url_kwarg = "campslug"
def get_object(self, queryset=None):
return self.request.tenant
2021-08-29 16:45:40 +02:00
class CampaignDeleteView(LoginRequiredMixin, generic.DeleteView):
2021-08-29 13:58:21 +02:00
"""
broken at the moment
"""
template_name = "campaigns/campaign_confirm_delete.html"
model = Campaign
slug_url_kwarg = "campslug"
success_url = reverse_lazy('campaigndetail')
def get_object(self, queryset=None):
return self.request.tenant
def delete(self, request, *args, **kwargs):
self.object: Campaign = self.get_object()
self.object.delete_tenant()
return redirect("http://test.localhost:8000/")