2017-09-24 19:11:08 +02:00
|
|
|
from django.shortcuts import get_object_or_404, redirect
|
2017-09-21 14:00:10 +02:00
|
|
|
from django.views.generic import TemplateView
|
2019-01-19 17:28:24 +01:00
|
|
|
from django.http import Http404, HttpResponse
|
2017-09-21 19:38:49 +02:00
|
|
|
|
2017-09-23 19:07:13 +02:00
|
|
|
from mainsite.models import Publication, PublicationYear, SiteConfiguration
|
2017-09-21 10:58:19 +02:00
|
|
|
|
2017-09-21 14:00:10 +02:00
|
|
|
|
2019-01-19 17:28:24 +01:00
|
|
|
def robots_view(request):
|
|
|
|
""" Robots.txt view """
|
|
|
|
body = "User-Agent: *\nDisallow: /\n"
|
|
|
|
return HttpResponse(body, content_type="text/plain")
|
|
|
|
|
|
|
|
|
2017-09-22 13:44:36 +02:00
|
|
|
class HomeView(TemplateView):
|
2019-01-19 17:28:24 +01:00
|
|
|
""" Website's homepage """
|
|
|
|
|
|
|
|
template_name = "mainsite/homepage.html"
|
2017-09-22 13:44:36 +02:00
|
|
|
|
|
|
|
|
|
|
|
class WriteArticleView(TemplateView):
|
2019-01-19 17:28:24 +01:00
|
|
|
""" Tell the readers how they can contribute to the BOcal """
|
|
|
|
|
|
|
|
template_name = "mainsite/write_article.html"
|
2017-09-22 13:44:36 +02:00
|
|
|
|
|
|
|
|
2017-09-22 19:03:43 +02:00
|
|
|
class PublicationListView(TemplateView):
|
2019-01-19 17:28:24 +01:00
|
|
|
""" Display a list of publications (generic class).
|
2017-09-22 19:03:43 +02:00
|
|
|
|
|
|
|
Reimplement `get_publications` (called with the url template args in a
|
2019-01-19 17:28:24 +01:00
|
|
|
place where you can Http404) in subclasses to get it working. """
|
2017-09-22 19:03:43 +02:00
|
|
|
|
2019-01-19 17:28:24 +01:00
|
|
|
template_name = "mainsite/publications_list_view.html"
|
2017-09-22 19:03:43 +02:00
|
|
|
|
2017-09-23 18:48:29 +02:00
|
|
|
def initView(self):
|
2019-01-19 17:28:24 +01:00
|
|
|
""" Cannot be __init__, we don't have **kwargs there """
|
2017-09-23 18:48:29 +02:00
|
|
|
pass
|
|
|
|
|
2017-09-22 19:03:43 +02:00
|
|
|
def get_context_data(self, **kwargs):
|
2017-09-23 18:48:29 +02:00
|
|
|
self.initView(**kwargs)
|
|
|
|
|
2017-09-22 19:03:43 +02:00
|
|
|
context = super(PublicationListView, self).get_context_data(**kwargs)
|
2017-09-23 18:48:29 +02:00
|
|
|
context.update(self.additional_context(**kwargs))
|
2017-09-22 19:03:43 +02:00
|
|
|
|
|
|
|
publications = self.get_publications(**kwargs)
|
2017-09-21 14:00:10 +02:00
|
|
|
|
2017-09-22 19:03:43 +02:00
|
|
|
if len(publications) == 0:
|
|
|
|
raise Http404
|
2019-01-19 17:28:24 +01:00
|
|
|
context["publications"] = publications
|
2017-09-22 19:03:43 +02:00
|
|
|
|
|
|
|
return context
|
2017-09-21 19:38:49 +02:00
|
|
|
|
2017-09-22 19:03:43 +02:00
|
|
|
|
|
|
|
class YearView(PublicationListView):
|
2019-01-19 17:28:24 +01:00
|
|
|
""" Display a year worth of BOcals """
|
2017-09-23 18:48:29 +02:00
|
|
|
|
|
|
|
def initView(self, year, nYear):
|
2017-09-21 19:38:49 +02:00
|
|
|
try:
|
|
|
|
year, nYear = int(year), int(nYear)
|
|
|
|
except ValueError:
|
|
|
|
raise Http404
|
2017-09-21 14:00:10 +02:00
|
|
|
if year + 1 != nYear:
|
|
|
|
raise Http404
|
2017-09-23 18:48:29 +02:00
|
|
|
self.year = year
|
2017-09-21 14:00:10 +02:00
|
|
|
|
2017-09-23 18:48:29 +02:00
|
|
|
self.pubYear = get_object_or_404(PublicationYear, startYear=year)
|
2017-09-21 14:00:10 +02:00
|
|
|
|
2017-09-23 18:48:29 +02:00
|
|
|
def additional_context(self, year, nYear):
|
|
|
|
return {
|
2019-01-19 17:28:24 +01:00
|
|
|
"intro_text": self.pubYear.descr,
|
|
|
|
"is_year_view": True,
|
|
|
|
"year_range": self.pubYear.prettyName,
|
2017-09-23 18:48:29 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
def get_publications(self, year, nYear):
|
|
|
|
return self.pubYear.publis()
|
2017-09-22 19:03:43 +02:00
|
|
|
|
|
|
|
|
|
|
|
class SpecialPublicationsView(PublicationListView):
|
2019-01-19 17:28:24 +01:00
|
|
|
""" Display the list of special publications """
|
2017-09-23 19:07:13 +02:00
|
|
|
|
|
|
|
def additional_context(self):
|
|
|
|
siteConf = SiteConfiguration.get_solo()
|
|
|
|
return {
|
2019-01-19 17:28:24 +01:00
|
|
|
"intro_text": siteConf.specialPublisDescr,
|
|
|
|
"is_year_view": False,
|
|
|
|
"list_title": "Numéros spéciaux",
|
2017-09-23 19:07:13 +02:00
|
|
|
}
|
|
|
|
|
2017-09-22 19:03:43 +02:00
|
|
|
def get_publications(self):
|
2019-01-19 17:28:24 +01:00
|
|
|
publications = Publication.objects.filter(is_special=True).order_by("-date")
|
2017-09-22 19:03:43 +02:00
|
|
|
return publications
|
2017-09-24 19:11:08 +02:00
|
|
|
|
|
|
|
|
|
|
|
def latestPublication(req):
|
2019-01-19 17:28:24 +01:00
|
|
|
""" Redirects to the latest standard publication """
|
2017-09-24 19:11:08 +02:00
|
|
|
latestPubli = Publication.latest()
|
|
|
|
return redirect(latestPubli.url)
|