Changeset 551

Show
Ignore:
Timestamp:
02/15/10 12:47:10 (5 months ago)
Author:
olivier
Message:

fix searching by ethnic group

Location:
trunk/telemeta
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/telemeta/models/enum.py

    r534 r551  
    136136    class Meta(MetaCore): 
    137137        db_table = 'ethnic_groups' 
     138        verbose_name = _('population / social group') 
    138139 
    139140    def __unicode__(self): 
  • trunk/telemeta/models/query.py

    r535 r551  
    3737from telemeta.models.core import * 
    3838from telemeta.util.unaccent import unaccent, unaccent_icmp 
     39from telemeta.models.enum import EthnicGroup 
    3940import re 
    4041 
     
    155156 
    156157    def ethnic_groups(self): 
    157         return self.filter(ethnic_group__isnull=False) \ 
    158                .values_list('ethnic_group__name', flat=True) \ 
    159                .distinct().order_by('ethnic_group__name')         
     158        ids = self.filter(ethnic_group__isnull=False).values('ethnic_group'); 
     159        return EthnicGroup.objects.filter(pk__in=ids).order_by('name') 
    160160 
    161161class MediaItemManager(CoreManager): 
     
    228228    def by_ethnic_group(self, group): 
    229229        "Find collections by ethnic group" 
    230         return self.filter(items__ethnic_group__name=group).distinct() 
     230        return self.filter(items__ethnic_group=group).distinct() 
    231231 
    232232    def by_change_time(self, from_time=None, until_time=None): 
  • trunk/telemeta/templates/telemeta_default/search_criteria.html

    r539 r551  
    3535 
    3636    <p> 
    37     <label for="ethnic_group">Ethnic group</label> 
     37    <label for="ethnic_group">{% field_label "EthnicGroup" %}</label> 
    3838    <select id="ethnic_group" name="ethnic_group"> 
    3939        <option value="">All ethnic groups</option> 
  • trunk/telemeta/templates/telemeta_default/search_results.html

    r535 r551  
    11{% extends "telemeta/base.html" %} 
    22{% load telemeta_utils %} 
     3{% load i18n %} 
    34 
    45{% block content %} 
     
    89<ul> 
    910  {% if criteria.pattern %} 
    10     <li><b>Pattern:</b> {{criteria.pattern}}</li> 
     11    <li><b>{% trans "Search pattern" %}:</b> {{criteria.pattern}}</li> 
    1112  {% endif %} 
    1213  {% if criteria.location %} 
    13     <li><b>Location:</b> {{criteria.location}}</li> 
     14    <li><b>{% field_label "Location" %}</b>: {{criteria.location}}</li> 
    1415  {% endif %} 
    1516  {% if criteria.ethnic_group %} 
    16     <li><b>Ethnic group:</b> {{criteria.ethnic_group}}</li> 
     17    <li><b>{% field_label "EthnicGroup" %}:</b> {{criteria.ethnic_group}}</li> 
    1718  {% endif %} 
    1819  {% if criteria.creator %} 
     
    2324  {% endif %} 
    2425  {% if criteria.rec_date %} 
    25     <li><b>Recording date:</b> {{criteria.rec_date}}</li> 
     26    <li><b>{% trans "Year of recording" %}:</b> {{criteria.rec_date}}</li> 
    2627  {% endif %} 
    2728  {% if criteria.pub_date %} 
  • trunk/telemeta/web/base.py

    r544 r551  
    4646 
    4747import telemeta 
    48 from telemeta.models import MediaItem, Location, MediaCollection 
     48from telemeta.models import MediaItem, Location, MediaCollection, EthnicGroup 
    4949from telemeta.models import dublincore 
    5050from telemeta.core import Component, ExtensionPoint 
     
    168168 
    169169    def edit_search(self, request): 
    170         ethnic_groups = MediaItem.objects.all().ethnic_groups() 
    171         return render_to_response('telemeta/search_criteria.html',  
    172             {'ethnic_groups': ethnic_groups}) 
     170 
     171        return render_to_response('telemeta/search_criteria.html', { 
     172            'ethnic_groups': MediaItem.objects.all().ethnic_groups(), 
     173        }) 
    173174 
    174175    def complete_location(self, request, with_items=True): 
     
    209210            'ethnic_group': lambda value: ( 
    210211                collections.by_ethnic_group(value),  
    211                 items.filter(ethnie_grsocial = value)), 
     212                items.filter(ethnic_group = value), 
     213                EthnicGroup.objects.get(pk=value)), 
    212214            'creator': lambda value: ( 
    213215                collections.word_search('creator', value), 
     
    222224        
    223225        for key, value in input.items(): 
    224             if key == 'continent' and input.get('country'): 
    225                 continue 
    226226            func = switch.get(key) 
    227227            if func and value: 
    228                 collections, items = func(value) 
     228                res = func(value) 
     229                if len(res) > 2: 
     230                    collections, items, value = res 
     231                else:  
     232                    collections, items = res 
    229233                criteria[key] = value 
    230234