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.encoding import smart_str, force_unicode
8 from django.utils.safestring import mark_safe
9 from django.views.generic import date_based
10 import urllib
11
14
15
16
17 self.field_filter = field_filter
18
20 """
21 Helper function that returns a dictionary of all fields in the given
22 model. If self.field_filter is set, it only includes the fields that
23 match the filter.
24 """
25 if self.field_filter:
26 return dict([(f.name, f) for f in model._meta.fields if self.field_filter(f)])
27 else:
28 return dict([(f.name, f) for f in model._meta.fields if not f.rel and not f.primary_key and not f.unique and not isinstance(f, (models.AutoField, models.TextField))])
29
36
37 - def urls(self, plugin_name, easy_instance_field):
44
45 - def model_view(self, request, model_databrowse, url):
61
62 - def homepage_view(self, request):
63 easy_model = EasyModel(self.site, self.model)
64 field_list = self.fields.values()
65 field_list.sort(lambda x, y: cmp(x.verbose_name, y.verbose_name))
66 return render_to_response('databrowse/fieldchoice_homepage.html', {'root_url': self.site.root_url, 'model': easy_model, 'field_list': field_list})
67
69 easy_model = EasyModel(self.site, self.model)
70 easy_field = easy_model.field(field.name)
71 if value is not None:
72 obj_list = easy_model.objects(**{field.name: value})
73 return render_to_response('databrowse/fieldchoice_detail.html', {'root_url': self.site.root_url, 'model': easy_model, 'field': easy_field, 'value': value, 'object_list': obj_list})
74 obj_list = [v[field.name] for v in self.model._default_manager.distinct().order_by(field.name).values(field.name)]
75 return render_to_response('databrowse/fieldchoice_list.html', {'root_url': self.site.root_url, 'model': easy_model, 'field': easy_field, 'object_list': obj_list})
76