ojuso-map/apps/map/views.py

75 lines
1.9 KiB
Python
Raw Normal View History

from django.core.mail import send_mail
from django.conf import settings
from django.views.generic import DetailView
from django.views.generic.base import TemplateView
2017-10-09 23:58:36 +00:00
from django.views.generic.edit import CreateView
from django.contrib.auth.mixins import LoginRequiredMixin
2017-10-09 23:58:36 +00:00
from django.urls import reverse
from .models import CaseStudy
from .forms import ShortCaseStudyForm, LongCaseStudyForm
NOTIFY_MESSAGE = """
Hello,
Someone has submitted a new case study to the Ojuso website. Please
follow the below link to look over and approve it:
%s%s
Case Study Robot
"""
2017-06-16 16:06:22 +00:00
class Map(TemplateView):
template_name = "map/index.html"
2017-06-16 16:06:22 +00:00
class Create(LoginRequiredMixin, TemplateView):
template_name = "map/how_much_time.html"
2017-06-16 16:06:22 +00:00
2017-10-09 23:58:36 +00:00
class BaseForm(LoginRequiredMixin, CreateView):
"""View for base case study form."""
template_name = 'map/form.html'
success_url = '/case-study/create/success/'
2017-10-09 23:58:36 +00:00
model = CaseStudy
def send_email(self):
"""Sends email to moderator to approve case study."""
send_mail(
'New case study submitted',
NOTIFY_MESSAGE % (
settings.SITE_URL,
reverse('admin:map_casestudy_change', args=[self.object.id])
),
'noreply@ojuso.org',
[settings.DATABASE_EMAIL],
fail_silently=False,
)
def form_valid(self, form):
self.object = form.save()
self.send_email()
return super().form_valid(form)
class ShortForm(BaseForm):
2017-10-09 23:58:36 +00:00
"""View for short version of case study form."""
form_class = ShortCaseStudyForm
class LongForm(BaseForm):
2017-10-09 23:58:36 +00:00
"""View for long version of case study form."""
form_class = LongCaseStudyForm
2017-10-09 23:58:36 +00:00
class FormSuccess(TemplateView):
template_name = 'map/form-success.html'
class CaseStudyDetail(DetailView):
template_name = "map/detail.html"
model = CaseStudy
context_object_name = "case_study"