summaryrefslogtreecommitdiff
path: root/django/contrib/databrowse/plugins/calendars.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/contrib/databrowse/plugins/calendars.py')
-rw-r--r--django/contrib/databrowse/plugins/calendars.py147
1 files changed, 0 insertions, 147 deletions
diff --git a/django/contrib/databrowse/plugins/calendars.py b/django/contrib/databrowse/plugins/calendars.py
deleted file mode 100644
index a548c33c8f..0000000000
--- a/django/contrib/databrowse/plugins/calendars.py
+++ /dev/null
@@ -1,147 +0,0 @@
-from __future__ import unicode_literals
-
-from django import http
-from django.db import models
-from django.contrib.databrowse.datastructures import EasyModel
-from django.contrib.databrowse.sites import DatabrowsePlugin
-from django.shortcuts import render_to_response
-from django.utils.html import format_html, format_html_join
-from django.utils.text import capfirst
-from django.utils.encoding import force_text
-from django.views.generic import dates
-from django.utils import datetime_safe
-
-
-class DateViewMixin(object):
- allow_empty = False
- allow_future = True
- root_url = None
- model = None
- field = None
-
- def get_context_data(self, **kwargs):
- context = super(DateViewMixin, self).get_context_data(**kwargs)
- context.update({
- 'root_url': self.root_url,
- 'model': self.model,
- 'field': self.field
- })
- return context
-
-
-class DayView(DateViewMixin, dates.DayArchiveView):
- template_name = 'databrowse/calendar_day.html'
-
-
-class MonthView(DateViewMixin, dates.MonthArchiveView):
- template_name = 'databrowse/calendar_month.html'
-
-
-class YearView(DateViewMixin, dates.YearArchiveView):
- template_name = 'databrowse/calendar_year.html'
-
-
-class IndexView(DateViewMixin, dates.ArchiveIndexView):
- template_name = 'databrowse/calendar_main.html'
-
-
-class CalendarPlugin(DatabrowsePlugin):
- def __init__(self, field_names=None):
- self.field_names = field_names
-
- def field_dict(self, model):
- """
- Helper function that returns a dictionary of all DateFields or
- DateTimeFields in the given model. If self.field_names is set, it takes
- take that into account when building the dictionary.
- """
- if self.field_names is None:
- return dict([(f.name, f) for f in model._meta.fields if isinstance(f, models.DateField)])
- else:
- return dict([(f.name, f) for f in model._meta.fields if isinstance(f, models.DateField) and f.name in self.field_names])
-
- def model_index_html(self, request, model, site):
- fields = self.field_dict(model)
- if not fields:
- return ''
- return format_html('<p class="filter"><strong>View calendar by:</strong> {0}</p>',
- format_html_join(', ', '<a href="calendars/{0}/">{1}</a>',
- ((f.name, force_text(capfirst(f.verbose_name))) for f in fields.values())))
-
- def urls(self, plugin_name, easy_instance_field):
- if isinstance(easy_instance_field.field, models.DateField):
- d = easy_instance_field.raw_value
- return ['%s%s/%s/%s/%s/%s/' % (
- easy_instance_field.model.url(),
- plugin_name, easy_instance_field.field.name,
- str(d.year),
- datetime_safe.new_date(d).strftime('%b').lower(),
- d.day)]
-
- def model_view(self, request, model_databrowse, url):
- self.model, self.site = model_databrowse.model, model_databrowse.site
- self.fields = self.field_dict(self.model)
-
- # If the model has no DateFields, there's no point in going further.
- if not self.fields:
- raise http.Http404('The requested model has no calendars.')
-
- if url is None:
- return self.homepage_view(request)
- url_bits = url.split('/')
- if url_bits[0] in self.fields:
- return self.calendar_view(request, self.fields[url_bits[0]], *url_bits[1:])
-
- raise http.Http404('The requested page does not exist.')
-
- def homepage_view(self, request):
- easy_model = EasyModel(self.site, self.model)
- field_list = list(self.fields.values())
- field_list.sort(key=lambda k:k.verbose_name)
- return render_to_response('databrowse/calendar_homepage.html', {
- 'root_url': self.site.root_url,
- 'model': easy_model,
- 'field_list': field_list
- })
-
- def calendar_view(self, request, field, year=None, month=None, day=None):
- easy_model = EasyModel(self.site, self.model)
- root_url = self.site.root_url
-
- if day is not None:
- return DayView.as_view(
- year=year, month=month, day=day,
- date_field=field.name,
- queryset=easy_model.get_query_set(),
- root_url=root_url,
- model=easy_model,
- field=field
- )(request)
- elif month is not None:
- return MonthView.as_view(
- year=year, month=month,
- date_field=field.name,
- queryset=easy_model.get_query_set(),
- root_url=root_url,
- model=easy_model,
- field=field
- )(request)
- elif year is not None:
- return YearView.as_view(
- year=year,
- date_field=field.name,
- queryset=easy_model.get_query_set(),
- root_url=root_url,
- model=easy_model,
- field=field
- )(request)
- else:
- return IndexView.as_view(
- date_field=field.name,
- queryset=easy_model.get_query_set(),
- root_url=root_url,
- model=easy_model,
- field=field
- )(request)
-
- assert False, ('%s, %s, %s, %s' % (field, year, month, day))