Changeset 232:7b4b4d05de94


Ignore:
Timestamp:
09/11/10 16:51:08 (3 years ago)
Author:
nicoechaniz <nico@…>
Branch:
default
Message:

added default view to Collection

Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • cyclope/core/collections/admin.py

    r151 r232  
    11#!/usr/bin/env python 
    2 # -*- coding: UTF-8 -*- 
     2# -*- coding: utf-8 -*- 
    33# 
    44# Copyright 2010 Código Sur - Nuestra América Asoc. Civil / Fundación Pacificar. 
     
    186186class CollectionAdminForm(forms.ModelForm): 
    187187    raw_id_fields = ['picture',] 
     188    default_list_view = forms.ChoiceField(label=_('Default category listing view'), required=False) 
    188189 
    189190    def __init__(self, *args, **kwargs): 
    190191        super(CollectionAdminForm, self).__init__(*args, **kwargs) 
    191192        self.fields['content_types'].choices = frontend.site.get_base_ctype_choices() 
     193        model = get_model('collections', 'category') 
     194        views = [('', '------')] + [ (view.name, view.verbose_name) 
     195                                     for view in frontend.site._registry[model] 
     196                                     if view.name != 'default'] 
     197        self.fields['default_list_view'].choices = views 
    192198 
    193199    class Meta: 
  • cyclope/core/collections/frontend_views.py

    r230 r232  
    5252frontend.site.register_view(Category, CategoryRootItemsList) 
    5353 
     54class CategoryDefaultList(frontend.FrontendView): 
     55    name = 'default' 
     56    verbose_name = _('default view for the Collection') 
     57    is_default = True 
     58    is_content_view = True 
     59     
     60    def get_response(self, request, host_template, content_object): 
     61        category = content_object 
     62        if category.collection.default_list_view not in ["", self.name]: 
     63            view_name = category.collection.default_list_view 
     64            view = frontend.site.get_view(content_object.__class__, view_name) 
     65        else: 
     66            view = frontend.site.get_view(content_object.__class__, 'teaser_list') 
     67        return view.get_response(request, host_template, content_object) 
     68 
     69frontend.site.register_view(Category, CategoryDefaultList) 
     70 
    5471 
    5572class CategoryTeaserList(frontend.FrontendView): 
    5673    """A teaser list view of Category members. 
    5774    """ 
    58     name='teaser_list' 
    59     verbose_name=_('teaser list of Category members') 
    60     is_default = True 
     75    name = 'teaser_list' 
     76    verbose_name = _('teaser list of Category members') 
    6177    items_per_page = cyc_settings.CYCLOPE_PAGINATION['TEASER'] 
    6278    is_content_view = True 
     
    6884        category = content_object 
    6985        categorizations_list = category.categorizations.all() 
    70  
    7186        paginator = Paginator(categorizations_list, self.items_per_page) 
    7287 
     
    159174    name='categories_hierarchy' 
    160175    verbose_name=_('hierarchical list of Categories in a Collection') 
    161     target_view = 'teaser_list' 
     176    target_view = 'default' 
    162177    is_content_view = True 
    163178    is_region_view = True 
  • cyclope/core/collections/models.py

    r230 r232  
    5454    image =  FileBrowseField(_('image'), max_length=250, format='Image', 
    5555                             blank=True) 
     56    default_list_view = models.CharField(_('default list view'), max_length=255, 
     57                                    blank=True, default='') 
    5658 
    5759    def get_absolute_url(self): 
  • cyclope/core/frontend/__init__.py

    r230 r232  
    2727 
    2828from django.http import HttpResponse 
     29from django.utils.translation import ugettext_lazy as _ 
    2930 
    3031from sites import site 
    31 from django.utils.translation import ugettext_lazy as _ 
    3232 
    3333from cyclope.utils import template_for_request 
  • cyclope/core/frontend/sites.py

    r230 r232  
    9494        ) 
    9595 
    96         #TODO(nicoechaniz): Fix for multi-site ? 
    9796        # url patterns for registered views 
    9897        for model, model_views in self._registry.items(): 
    9998            for view in model_views: 
    10099                url_pattern = view.get_url_pattern(model) 
    101                 urlpatterns += patterns( 
    102                     '', 
    103                     url(url_pattern, 
    104                     view, 
    105                     name="%s-%s" % 
    106                     (model._meta.object_name.lower(), view.name) ) 
    107                 ) 
     100                model_name = model._meta.object_name.lower() 
     101                url_name = "%s-%s" % (model_name, view.name) 
     102                urlpatterns += patterns('', url(url_pattern, view, name=url_name)) 
     103                if view.is_default: 
     104                    urlpatterns += patterns('', url(url_pattern, view, name=model_name)) 
     105                 
    108106        # url patterns for menu items 
    109107        return self.get_menuitem_urls(urlpatterns) 
Note: See TracChangeset for help on using the changeset viewer.