Django

Code

Changeset 5947

Show
Ignore:
Timestamp:
08/19/07 12:01:54 (1 year ago)
Author:
mtredinnick
Message:

Fixed #4125 -- Added some small fixes to contrib.databrowse: fixed calendar views, added a summary of the number of objects in each list, and added a template entry point for the customisation enthusiasts. Nice work, SmileyChris?.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/contrib/databrowse/datastructures.py

    r5876 r5947  
    99from django.utils.translation import get_date_formats 
    1010from django.utils.encoding import smart_unicode, smart_str, iri_to_uri 
     11from django.db.models.query import QuerySet 
    1112 
    1213EMPTY_VALUE = '(None)' 
     
    3132 
    3233    def objects(self, **kwargs): 
    33         for obj in self.model._default_manager.filter(**kwargs): 
    34             yield EasyInstance(self, obj) 
     34        return self.get_query_set().filter(**kwargs) 
     35 
     36    def get_query_set(self): 
     37        easy_qs = self.model._default_manager.get_query_set()._clone(klass=EasyQuerySet) 
     38        easy_qs._easymodel = self 
     39        return easy_qs 
    3540 
    3641    def object_by_pk(self, pk): 
     
    195200            lst = [(self.values()[0], None)] 
    196201        return lst 
     202 
     203class EasyQuerySet(QuerySet): 
     204    """ 
     205    When creating (or cloning to) an `EasyQuerySet`, make sure to set the 
     206    `_easymodel` variable to the related `EasyModel`. 
     207    """ 
     208    def iterator(self, *args, **kwargs): 
     209        for obj in super(EasyQuerySet, self).iterator(*args, **kwargs): 
     210            yield EasyInstance(self._easymodel, obj) 
     211 
     212    def _clone(self, *args, **kwargs): 
     213        c = super(EasyQuerySet, self)._clone(*args, **kwargs) 
     214        c._easymodel = self._easymodel 
     215        return c 
  • django/trunk/django/contrib/databrowse/plugins/calendars.py

    r5876 r5947  
    6565    def calendar_view(self, request, field, year=None, month=None, day=None): 
    6666        easy_model = EasyModel(self.site, self.model) 
     67        queryset = easy_model.get_query_set() 
    6768        extra_context = {'root_url': self.site.root_url, 'model': easy_model, 'field': field} 
    6869        if day is not None: 
    69             # TODO: The objects in this template should be EasyInstances 
    70             return date_based.archive_day(request, year, month, day, self.model.objects.all(), field.name, 
     70            return date_based.archive_day(request, year, month, day, queryset, field.name, 
    7171                template_name='databrowse/calendar_day.html', allow_empty=False, allow_future=True, 
    7272                extra_context=extra_context) 
    7373        elif month is not None: 
    74             return date_based.archive_month(request, year, month, self.model.objects.all(), field.name, 
     74            return date_based.archive_month(request, year, month, queryset, field.name, 
    7575                template_name='databrowse/calendar_month.html', allow_empty=False, allow_future=True, 
    7676                extra_context=extra_context) 
    7777        elif year is not None: 
    78             return date_based.archive_year(request, year, self.model.objects.all(), field.name, 
     78            return date_based.archive_year(request, year, queryset, field.name, 
    7979                template_name='databrowse/calendar_year.html', allow_empty=False, allow_future=True, 
    8080                extra_context=extra_context) 
    8181        else: 
    82             return date_based.archive_index(request, self.model.objects.all(), field.name, 
     82            return date_based.archive_index(request, queryset, field.name, 
    8383                template_name='databrowse/calendar_main.html', allow_empty=True, allow_future=True, 
    8484                extra_context=extra_context) 
  • django/trunk/django/contrib/databrowse/templates/databrowse/base.html

    r5011 r5947  
    33<head> 
    44<title>{% block title %}{% endblock %}</title> 
     5{% block style %} 
    56<style type="text/css"> 
    67* { margin:0; padding:0; } 
     
    4950#content { background:#fff; border-bottom:1px solid #ddd; padding:0 20px; } 
    5051</style> 
     52{% endblock %} 
     53{% block extrahead %}{% endblock %} 
    5154</head> 
    5255<body id="{% block bodyid %}page{% endblock %}"> 
    53 <div id="header"><a href="{{ root_url }}">Databrowse</a></div> 
     56<div id="header"><a href="{{ root_url }}">{% block databrowse_title %}Databrowse{% endblock %}</a></div> 
    5457<div id="content"> 
    5558{% block content %}{% endblock %} 
  • django/trunk/django/contrib/databrowse/templates/databrowse/calendar_day.html

    r5764 r5947  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} {{ day|date:"F j, Y" }}{% endblock %} 
     
    77<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / <a href="../../../../">Calendars</a> / <a href="../../../">By {{ field.verbose_name }}</a> / <a href="../../">{{ day.year }}</a> / <a href="../">{{ day|date:"F" }}</a> / {{ day.day }}</div> 
    88 
    9 <h1>{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} on {{ day|date:"F j, Y" }}</h1> 
     9<h1>{{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural|escape }}{% else %}{{ model.verbose_name|escape }}{% endif %} with {{ field.verbose_name }} on {{ day|date:"F j, Y" }}</h1> 
    1010 
    1111<ul class="objectlist"> 
  • django/trunk/django/contrib/databrowse/templates/databrowse/calendar_homepage.html

    r5011 r5947  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}Calendars{% endblock %} 
  • django/trunk/django/contrib/databrowse/templates/databrowse/calendar_main.html

    r5011 r5947  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ field.verbose_name|capfirst }} calendar{% endblock %} 
  • django/trunk/django/contrib/databrowse/templates/databrowse/calendar_month.html

    r5764 r5947  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ month|date:"F Y" }}{% endblock %} 
     
    77<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / <a href="../../../">Calendars</a> / <a href="../../">By {{ field.verbose_name }}</a> / <a href="../">{{ month.year }}</a> / {{ month|date:"F" }}</div> 
    88 
    9 <h1>{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ month|date:"F Y" }}</h1> 
     9<h1>{{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural|escape }}{% else %}{{ model.verbose_name|escape }}{% endif %} with {{ field.verbose_name }} on {{ day|date:"F Y" }}</h1> 
    1010 
    1111<ul class="objectlist"> 
  • django/trunk/django/contrib/databrowse/templates/databrowse/calendar_year.html

    r5011 r5947  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ year }}{% endblock %} 
  • django/trunk/django/contrib/databrowse/templates/databrowse/choice_detail.html

    r5764 r5947  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}: {{ value|escape }}{% endblock %} 
  • django/trunk/django/contrib/databrowse/templates/databrowse/choice_list.html

    r5764 r5947  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}{% endblock %} 
  • django/trunk/django/contrib/databrowse/templates/databrowse/fieldchoice_detail.html

    r5011 r5947  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst|escape }} with {{ field.field.verbose_name|escape }} {{ value|escape }}{% endblock %} 
     
    77<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / <a href="../../">Fields</a> / <a href="../">By {{ field.field.verbose_name|escape }}</a> / {{ value|escape }}</div> 
    88 
    9 <h1>{{ model.verbose_name_plural|capfirst|escape }} with {{ field.field.verbose_name|escape }} {{ value|escape }}</h1> 
     9<h1>{{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural|escape }}{% else %}{{ model.verbose_name|escape }}{% endif %} with {{ field.field.verbose_name|escape }} {{ value|escape }}</h1> 
    1010 
    1111<ul class="objectlist"> 
  • django/trunk/django/contrib/databrowse/templates/databrowse/fieldchoice_homepage.html

    r5011 r5947  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}Browsable fields in {{ model.verbose_name_plural|escape }}{% endblock %} 
  • django/trunk/django/contrib/databrowse/templates/databrowse/fieldchoice_list.html

    r5609 r5947  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst|escape }} by {{ field.field.verbose_name|escape }}{% endblock %} 
  • django/trunk/django/contrib/databrowse/templates/databrowse/homepage.html

    r5764 r5947  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}Databrowse{% endblock %} 
  • django/trunk/django/contrib/databrowse/templates/databrowse/model_detail.html

    r5764 r5947  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst }}{% endblock %} 
     
    77<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / {{ model.verbose_name_plural|capfirst }}</div> 
    88 
    9 <h1>{{ model.verbose_name_plural|capfirst }}</h1> 
     9<h1>{{ model.objects.count }} {% if model.objects.count|pluralize %}{{ model.verbose_name_plural }}{% else %}{{ model.verbose_name }}{% endif %}</h1> 
    1010 
    1111{{ plugin_html }} 
  • django/trunk/django/contrib/databrowse/templates/databrowse/object_detail.html

    r5764 r5947  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ object.model.verbose_name|capfirst }}: {{ object }}{% endblock %}