1 from django import http
2 from django.db import models
3 from django.contrib.databrowse.datastructures import EasyModel
4 from django.contrib.databrowse.sites import DatabrowsePlugin
5 from django.shortcuts import render_to_response
6 from django.utils.text import capfirst
7 from django.utils.translation import get_date_formats
8 from django.utils.encoding import force_unicode
9 from django.utils.safestring import mark_safe
10 from django.views.generic import date_based
11
14 self.field_names = field_names
15
17 """
18 Helper function that returns a dictionary of all DateFields or
19 DateTimeFields in the given model. If self.field_names is set, it takes
20 take that into account when building the dictionary.
21 """
22 if self.field_names is None:
23 return dict([(f.name, f) for f in model._meta.fields if isinstance(f, models.DateField)])
24 else:
25 return dict([(f.name, f) for f in model._meta.fields if isinstance(f, models.DateField) and f.name in self.field_names])
26
33
34 - def urls(self, plugin_name, easy_instance_field):
35 if isinstance(easy_instance_field.field, models.DateField):
36 return [mark_safe(u'%s%s/%s/%s/%s/%s/' % (
37 easy_instance_field.model.url(),
38 plugin_name, easy_instance_field.field.name,
39 easy_instance_field.raw_value.year,
40 easy_instance_field.raw_value.strftime('%b').lower(),
41 easy_instance_field.raw_value.day))]
42
43 - def model_view(self, request, model_databrowse, url):
58
59 - def homepage_view(self, request):
60 easy_model = EasyModel(self.site, self.model)
61 field_list = self.fields.values()
62 field_list.sort(lambda x, y: cmp(x.verbose_name, y.verbose_name))
63 return render_to_response('databrowse/calendar_homepage.html', {'root_url': self.site.root_url, 'model': easy_model, 'field_list': field_list})
64
65 - def calendar_view(self, request, field, year=None, month=None, day=None):
66 easy_model = EasyModel(self.site, self.model)
67 queryset = easy_model.get_query_set()
68 extra_context = {'root_url': self.site.root_url, 'model': easy_model, 'field': field}
69 if day is not None:
70 return date_based.archive_day(request, year, month, day, queryset, field.name,
71 template_name='databrowse/calendar_day.html', allow_empty=False, allow_future=True,
72 extra_context=extra_context)
73 elif month is not None:
74 return date_based.archive_month(request, year, month, queryset, field.name,
75 template_name='databrowse/calendar_month.html', allow_empty=False, allow_future=True,
76 extra_context=extra_context)
77 elif year is not None:
78 return date_based.archive_year(request, year, queryset, field.name,
79 template_name='databrowse/calendar_year.html', allow_empty=False, allow_future=True,
80 extra_context=extra_context)
81 else:
82 return date_based.archive_index(request, queryset, field.name,
83 template_name='databrowse/calendar_main.html', allow_empty=True, allow_future=True,
84 extra_context=extra_context)
85 assert False, ('%s, %s, %s, %s' % (field, year, month, day))
86