src/jocondelab/views/front_office.py
author cavaliet
Thu, 31 Oct 2013 12:42:46 +0100
changeset 171 9136e10ad374
parent 163 bd4fac229345
child 173 388c12f7a720
permissions -rw-r--r--
random optimisation, menu debug, v0.20
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
86
bf707ad8aa1a 1st version of multilingual home
veltr
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
bf707ad8aa1a 1st version of multilingual home
veltr
parents:
diff changeset
     2
'''
bf707ad8aa1a 1st version of multilingual home
veltr
parents:
diff changeset
     3
Created on Aug 08, 2013
bf707ad8aa1a 1st version of multilingual home
veltr
parents:
diff changeset
     4
bf707ad8aa1a 1st version of multilingual home
veltr
parents:
diff changeset
     5
@author: rvelt
bf707ad8aa1a 1st version of multilingual home
veltr
parents:
diff changeset
     6
'''
bf707ad8aa1a 1st version of multilingual home
veltr
parents:
diff changeset
     7
97
e7c675c54816 Added map view
veltr
parents: 96
diff changeset
     8
from core.models import (Notice, Thesaurus, Term)
171
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
     9
from django.conf import settings
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    10
from django.core.cache import cache
106
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
    11
from django.core.paginator import Paginator
171
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    12
from django.db.models import Sum, Count
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    13
from django.db.models.query import prefetch_related_objects
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    14
from django.shortcuts import redirect
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    15
from django.utils.http import urlencode
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    16
from django.utils.translation import ugettext
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
    17
from django.views.generic import DetailView, TemplateView
171
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    18
from jocondelab.models import (DbpediaFields, Country, ContributableTerm, TagcloudTerm)
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    19
import django.utils.simplejson as json
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
    20
import random
86
bf707ad8aa1a 1st version of multilingual home
veltr
parents:
diff changeset
    21
160
3cf9e6bd988f enhance front links and little optimisation
cavaliet
parents: 150
diff changeset
    22
import logging
3cf9e6bd988f enhance front links and little optimisation
cavaliet
parents: 150
diff changeset
    23
logger = logging.getLogger(__name__)
3cf9e6bd988f enhance front links and little optimisation
cavaliet
parents: 150
diff changeset
    24
150
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    25
def get_terms_by_thesaurus(notice, lang):
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    26
    termsbythesaurus = {}
160
3cf9e6bd988f enhance front links and little optimisation
cavaliet
parents: 150
diff changeset
    27
    for nt in Term.objects.filter(noticeterm__notice=notice, dbpedia_fields=None).select_related('thesaurus__label').order_by('label').distinct():
150
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    28
        term = {
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    29
            "thesaurus": nt.thesaurus.label,
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    30
            "dbpedia_uri": nt.dbpedia_uri,
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    31
            "translated": False,
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    32
            "label": nt.label
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    33
        }
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    34
        th = termsbythesaurus.setdefault(term["thesaurus"], { "translated": [], "untranslated": [] })
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    35
        th["untranslated"].append(term)
161
adafb3d13a19 optimisation
cavaliet
parents: 160
diff changeset
    36
    # We use "values" because it avoids an other db request for dbpedia_fields.get(language_code = lang).label
adafb3d13a19 optimisation
cavaliet
parents: 160
diff changeset
    37
    for nt in Term.objects.select_related('thesaurus__label,dbpedia_fields').filter(noticeterm__notice=notice, dbpedia_fields__language_code=lang).order_by('dbpedia_fields__label').distinct().values("thesaurus__label", "dbpedia_uri", "dbpedia_fields__label"):
150
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    38
        term = {
161
adafb3d13a19 optimisation
cavaliet
parents: 160
diff changeset
    39
            "thesaurus": nt["thesaurus__label"],
adafb3d13a19 optimisation
cavaliet
parents: 160
diff changeset
    40
            "dbpedia_uri": nt["dbpedia_uri"],
150
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    41
            "translated": True,
161
adafb3d13a19 optimisation
cavaliet
parents: 160
diff changeset
    42
            "label": nt["dbpedia_fields__label"]
150
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    43
        }
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    44
        th = termsbythesaurus.setdefault(term["thesaurus"], { "translated": [], "untranslated": [] })
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    45
        th["translated"].append(term)
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    46
    return termsbythesaurus
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
    47
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
    48
class SearchView(TemplateView):
86
bf707ad8aa1a 1st version of multilingual home
veltr
parents:
diff changeset
    49
    
118
3d102aed3213 Added Wikipedia Info box in search results
veltr
parents: 113
diff changeset
    50
    # This view is used for
3d102aed3213 Added Wikipedia Info box in search results
veltr
parents: 113
diff changeset
    51
    # - the home and search pages, displaying random images
3d102aed3213 Added Wikipedia Info box in search results
veltr
parents: 113
diff changeset
    52
    # - search result pages
3d102aed3213 Added Wikipedia Info box in search results
veltr
parents: 113
diff changeset
    53
    # - ajax-fetched results
3d102aed3213 Added Wikipedia Info box in search results
veltr
parents: 113
diff changeset
    54
    
86
bf707ad8aa1a 1st version of multilingual home
veltr
parents:
diff changeset
    55
    def get(self, request):
106
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
    56
                
86
bf707ad8aa1a 1st version of multilingual home
veltr
parents:
diff changeset
    57
        context = {}
100
25636bb50756 Grouped geographical locations and years by dbpedia uri
veltr
parents: 98
diff changeset
    58
        lang = request.GET.get('lang',request.LANGUAGE_CODE)[:2]
106
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
    59
        page = request.GET.get('page',1)
87
70cc8154164c Added notice view
veltr
parents: 86
diff changeset
    60
        querystr = request.GET.get('q', "")
106
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
    61
        is_ajax = request.is_ajax()
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
    62
        queryterms = [s.strip(" ") for s in querystr.split(";") if s.strip(" ")]
143
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
    63
        dbpedia_uri = request.GET.get('dbpedia_uri', "")
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
    64
        dbpedia_uris = [s.strip(" ") for s in dbpedia_uri.split(";") if s.strip(" ")]
111
439485fd5961 Add year search on timeline
veltr
parents: 110
diff changeset
    65
        from_year = request.GET.get('from_year', None)
439485fd5961 Add year search on timeline
veltr
parents: 110
diff changeset
    66
        to_year = request.GET.get('to_year', from_year)
439485fd5961 Add year search on timeline
veltr
parents: 110
diff changeset
    67
        show_years = request.GET.get('show_years',False)
439485fd5961 Add year search on timeline
veltr
parents: 110
diff changeset
    68
        emptysearch = ((not queryterms) and (not dbpedia_uri) and (not from_year))
439485fd5961 Add year search on timeline
veltr
parents: 110
diff changeset
    69
        npp = request.GET.get('count', 12 if emptysearch else 30)
118
3d102aed3213 Added Wikipedia Info box in search results
veltr
parents: 113
diff changeset
    70
        context["lang"] = lang
106
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
    71
        context["current_page"] = page
108
c0d227e8b0c4 Changes for contribution
veltr
parents: 106
diff changeset
    72
        
c0d227e8b0c4 Changes for contribution
veltr
parents: 106
diff changeset
    73
        if self.template_name is None:
c0d227e8b0c4 Changes for contribution
veltr
parents: 106
diff changeset
    74
            if is_ajax and page > 1:
c0d227e8b0c4 Changes for contribution
veltr
parents: 106
diff changeset
    75
                self.template_name = "jocondelab/partial/notice_list.html"
106
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
    76
            else:
108
c0d227e8b0c4 Changes for contribution
veltr
parents: 106
diff changeset
    77
                if is_ajax:
c0d227e8b0c4 Changes for contribution
veltr
parents: 106
diff changeset
    78
                    self.template_name = "jocondelab/partial/wrapped_notice_list.html"
c0d227e8b0c4 Changes for contribution
veltr
parents: 106
diff changeset
    79
                else:
c0d227e8b0c4 Changes for contribution
veltr
parents: 106
diff changeset
    80
                    self.template_name = "jocondelab/front_search.html"
86
bf707ad8aa1a 1st version of multilingual home
veltr
parents:
diff changeset
    81
        
162
e849690649d4 other optimisation
cavaliet
parents: 161
diff changeset
    82
        qs = Notice.objects.prefetch_related("images").filter(image=True)
118
3d102aed3213 Added Wikipedia Info box in search results
veltr
parents: 113
diff changeset
    83
        
106
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
    84
        if emptysearch:
171
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    85
            if not cache.get('notice_count'):
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    86
                cache.set('notice_count', qs.count(), settings.DB_QUERY_CACHE_TIME)
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    87
            context["count"] = cache.get('notice_count')
160
3cf9e6bd988f enhance front links and little optimisation
cavaliet
parents: 150
diff changeset
    88
            # Optimize random : order_by('?') is too slow
171
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    89
            # generate_series(1, 100) and not generate_series(1, 12) to be sure we have existing ids
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    90
            orm_request = """
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    91
SELECT "core_notice"."id", "core_notice"."ref", "core_notice"."adpt", "core_notice"."appl", "core_notice"."aptn", "core_notice"."attr", "core_notice"."autr", "core_notice"."bibl", "core_notice"."comm", "core_notice"."contact", "core_notice"."coor", "core_notice"."copy", "core_notice"."dacq", "core_notice"."data", "core_notice"."dation", "core_notice"."ddpt", "core_notice"."decv", "core_notice"."deno", "core_notice"."depo", "core_notice"."desc", "core_notice"."desy", "core_notice"."dims", "core_notice"."dmaj", "core_notice"."dmis", "core_notice"."domn", "core_notice"."drep", "core_notice"."ecol", "core_notice"."epoq", "core_notice"."etat", "core_notice"."expo", "core_notice"."gene", "core_notice"."geohi", "core_notice"."hist", "core_notice"."image", "core_notice"."insc", "core_notice"."inv", "core_notice"."label", "core_notice"."labo", "core_notice"."lieux", "core_notice"."loca", "core_notice"."loca2", "core_notice"."mill", "core_notice"."milu", "core_notice"."mosa", "core_notice"."msgcom", "core_notice"."museo", "core_notice"."nsda", "core_notice"."onom", "core_notice"."paut", "core_notice"."pdat", "core_notice"."pdec", "core_notice"."peoc", "core_notice"."peri", "core_notice"."peru", "core_notice"."phot", "core_notice"."pins", "core_notice"."plieux", "core_notice"."prep", "core_notice"."puti", "core_notice"."reda", "core_notice"."refim", "core_notice"."repr", "core_notice"."srep", "core_notice"."stat", "core_notice"."tech", "core_notice"."tico", "core_notice"."titr", "core_notice"."util", "core_notice"."video", "core_notice"."www"
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    92
FROM  (
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    93
    SELECT 1 + floor(random() * %i)::integer AS id
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    94
    FROM   generate_series(1, 100) g
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    95
    GROUP  BY 1
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    96
    ) r
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    97
JOIN  "core_notice" USING (id)
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    98
WHERE "core_notice"."image" = true
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
    99
LIMIT  12; 
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
   100
            """
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
   101
            ns = list(Notice.objects.raw(orm_request % context["count"]))
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
   102
            # list because prefetch_related_objects needs list and not QuerySet or RawQuerySet
9136e10ad374 random optimisation, menu debug, v0.20
cavaliet
parents: 163
diff changeset
   103
            prefetch_related_objects(ns, ['images'])
87
70cc8154164c Added notice view
veltr
parents: 86
diff changeset
   104
        else:
143
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   105
            uri_cache = {}
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   106
            if dbpedia_uris:
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   107
                queryobj = {'dbpedia_uri': dbpedia_uri}
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   108
                searchterms = []
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   109
                for i, uri in enumerate(dbpedia_uris):
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   110
                    fs = DbpediaFields.objects.filter(dbpedia_uri=uri, language_code=lang)
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   111
                    if fs.exists():
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   112
                        firstres = fs[0]
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   113
                        searchterms.append(firstres.label)
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   114
                        uri_cache[firstres.label.lower()] = firstres.dbpedia_uri
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   115
                        if i == 0 and page == 1 and len(dbpedia_uris) == 1:
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   116
                            context["wkinfo"] = firstres
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   117
                    fs = fs.values('term_id').distinct()
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   118
                    qs = qs.filter(noticeterm__term__in=fs)
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   119
            elif queryterms:
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   120
                searchterms = queryterms
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   121
                queryobj = {'q': querystr}
118
3d102aed3213 Added Wikipedia Info box in search results
veltr
parents: 113
diff changeset
   122
                for i, term in enumerate(queryterms):
3d102aed3213 Added Wikipedia Info box in search results
veltr
parents: 113
diff changeset
   123
                    fs = DbpediaFields.objects.filter(label=term, language_code=lang)
143
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   124
                    if fs.exists():
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   125
                        firstres = fs[0]
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   126
                        uri_cache[firstres.label.lower()] = firstres.dbpedia_uri
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   127
                        if i == 0 and page == 1 and len(queryterms) == 1:
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   128
                            context["wkinfo"] = firstres
118
3d102aed3213 Added Wikipedia Info box in search results
veltr
parents: 113
diff changeset
   129
                    fs = fs.values('term_id').distinct()
106
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
   130
                    qs = qs.filter(noticeterm__term__in=fs)
143
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   131
            elif from_year:
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   132
                queryobj = {'from_year': from_year, 'to_year': to_year}
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   133
                searchterms = [u"%s%s"%(from_year, to_year)]
111
439485fd5961 Add year search on timeline
veltr
parents: 110
diff changeset
   134
                qs = qs.filter(years__start_year__lte=to_year, years__end_year__gte=from_year)
143
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   135
            context["queryobj"] = json.dumps(queryobj)
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   136
            context["querystr"] = urlencode(queryobj)
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   137
            context["searchterms_label"] = ugettext(u" ET ").join(searchterms)
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   138
            context["searchterms_input"] = u";".join(searchterms)
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   139
            context["uri_cache"] = json.dumps(uri_cache)
118
3d102aed3213 Added Wikipedia Info box in search results
veltr
parents: 113
diff changeset
   140
            qs = qs.order_by('id').distinct()
106
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
   141
            paginator = Paginator(qs, npp)
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
   142
            context["count"] = paginator.count
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
   143
            ns = paginator.page(page)
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
   144
            context["page_count"] = paginator.num_pages
86
bf707ad8aa1a 1st version of multilingual home
veltr
parents:
diff changeset
   145
        
106
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
   146
        notices = []
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
   147
        for n in ns:
150
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
   148
            termsbythesaurus = get_terms_by_thesaurus(n, lang)
162
e849690649d4 other optimisation
cavaliet
parents: 161
diff changeset
   149
            # select first image with "_p.jpg"
e849690649d4 other optimisation
cavaliet
parents: 161
diff changeset
   150
            selected_image = None
e849690649d4 other optimisation
cavaliet
parents: 161
diff changeset
   151
            for i in n.images.all():
e849690649d4 other optimisation
cavaliet
parents: 161
diff changeset
   152
                if i.relative_url.endswith('p.jpg'):
e849690649d4 other optimisation
cavaliet
parents: 161
diff changeset
   153
                    selected_image = settings.JOCONDE_IMG_BASE_URL + i.relative_url
e849690649d4 other optimisation
cavaliet
parents: 161
diff changeset
   154
                    break
106
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
   155
            noticedict = {
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
   156
                "id": n.id,
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
   157
                "title": n.titr,
143
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   158
                "designation": " | ".join([ v for v in [ n.deno, n.appl] if v ]),
162
e849690649d4 other optimisation
cavaliet
parents: 161
diff changeset
   159
                "image": selected_image,
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   160
                "author": n.autr,
111
439485fd5961 Add year search on timeline
veltr
parents: 110
diff changeset
   161
                "terms_by_thesaurus": termsbythesaurus,
150
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
   162
                "datation": termsbythesaurus.get("PERI",{}).get("translated",[]) + termsbythesaurus.get("EPOQ",{}).get("translated",[])
106
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
   163
            }
143
dfb76c5aa3ff translation updates
veltr
parents: 142
diff changeset
   164
            noticedict['image_title'] = noticedict['title'] if noticedict['title'] else noticedict['designation']
111
439485fd5961 Add year search on timeline
veltr
parents: 110
diff changeset
   165
            if show_years and n.years.exists():
439485fd5961 Add year search on timeline
veltr
parents: 110
diff changeset
   166
                noticedict["years"] = [n.years.all()[0].start_year, n.years.all()[0].end_year]
106
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
   167
            notices.append(noticedict)
219e27e5e26d Ajax Scroll Loading
veltr
parents: 104
diff changeset
   168
        context["notices"] = notices
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   169
                        
87
70cc8154164c Added notice view
veltr
parents: 86
diff changeset
   170
        return self.render_to_response(context)
70cc8154164c Added notice view
veltr
parents: 86
diff changeset
   171
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   172
class GeoView(TemplateView):
103
da385c0872a6 Added Country map
veltr
parents: 101
diff changeset
   173
    
da385c0872a6 Added Country map
veltr
parents: 101
diff changeset
   174
    template_name = "jocondelab/front_geo.html"
da385c0872a6 Added Country map
veltr
parents: 101
diff changeset
   175
    
da385c0872a6 Added Country map
veltr
parents: 101
diff changeset
   176
    def get(self, request):
da385c0872a6 Added Country map
veltr
parents: 101
diff changeset
   177
        
da385c0872a6 Added Country map
veltr
parents: 101
diff changeset
   178
        context = {}
da385c0872a6 Added Country map
veltr
parents: 101
diff changeset
   179
        cqs = Country.objects.order_by('-nb_notices')
da385c0872a6 Added Country map
veltr
parents: 101
diff changeset
   180
        context["countries"] = json.dumps([c for c in cqs.values('dbpedia_uri','iso_code_3','nb_notices')])
da385c0872a6 Added Country map
veltr
parents: 101
diff changeset
   181
        
da385c0872a6 Added Country map
veltr
parents: 101
diff changeset
   182
        return self.render_to_response(context)
da385c0872a6 Added Country map
veltr
parents: 101
diff changeset
   183
    
100
25636bb50756 Grouped geographical locations and years by dbpedia uri
veltr
parents: 98
diff changeset
   184
class NoticeView(DetailView):
87
70cc8154164c Added notice view
veltr
parents: 86
diff changeset
   185
    
100
25636bb50756 Grouped geographical locations and years by dbpedia uri
veltr
parents: 98
diff changeset
   186
    model = Notice
87
70cc8154164c Added notice view
veltr
parents: 86
diff changeset
   187
    template_name = "jocondelab/front_notice.html"
113
c0d1d15130b3 Added contribution and about
veltr
parents: 111
diff changeset
   188
    show_contributions = True
87
70cc8154164c Added notice view
veltr
parents: 86
diff changeset
   189
    
100
25636bb50756 Grouped geographical locations and years by dbpedia uri
veltr
parents: 98
diff changeset
   190
    def get_context_data(self, **kwargs):
87
70cc8154164c Added notice view
veltr
parents: 86
diff changeset
   191
        
100
25636bb50756 Grouped geographical locations and years by dbpedia uri
veltr
parents: 98
diff changeset
   192
        context = super(NoticeView, self).get_context_data(**kwargs)
25636bb50756 Grouped geographical locations and years by dbpedia uri
veltr
parents: 98
diff changeset
   193
        lang = self.request.GET.get('lang',self.request.LANGUAGE_CODE)[:2]
87
70cc8154164c Added notice view
veltr
parents: 86
diff changeset
   194
        
148
8ff19e5d2d70 navigation fixes
veltr
parents: 146
diff changeset
   195
        context["images"] = [settings.JOCONDE_IMG_BASE_URL + i.url for i in self.object.images.exclude(relative_url__endswith='v.jpg').order_by('id')]
100
25636bb50756 Grouped geographical locations and years by dbpedia uri
veltr
parents: 98
diff changeset
   196
        context["title"] = self.object.titr if self.object.titr else self.object.deno
150
c4c2f3be5ddd Fixes for 2013.10.14 meeting
veltr
parents: 148
diff changeset
   197
        context["terms_by_thesaurus"] = get_terms_by_thesaurus(self.object, lang)
101
19de76fe00a9 Added contribution
veltr
parents: 100
diff changeset
   198
        
113
c0d1d15130b3 Added contribution and about
veltr
parents: 111
diff changeset
   199
        if self.show_contributions:
c0d1d15130b3 Added contribution and about
veltr
parents: 111
diff changeset
   200
            cqs = self.object.contribution_set.select_related('term__dbpedia_fields')
c0d1d15130b3 Added contribution and about
veltr
parents: 111
diff changeset
   201
            contributions = [{
c0d1d15130b3 Added contribution and about
veltr
parents: 111
diff changeset
   202
                    "label": ct.term.dbpedia_fields.get(language_code=lang).label,
c0d1d15130b3 Added contribution and about
veltr
parents: 111
diff changeset
   203
                    "dbpedia_uri": ct.term.dbpedia_uri,
c0d1d15130b3 Added contribution and about
veltr
parents: 111
diff changeset
   204
                    "contribution_id": ct.id,
c0d1d15130b3 Added contribution and about
veltr
parents: 111
diff changeset
   205
                    "li_style": "positive" if ct.contribution_count > 0 else "null",
123
11f2aa317b70 Small UI tweaks
veltr
parents: 118
diff changeset
   206
                    "font_size": "%.1f"%(12. + .5 * max(0., min(12., ct.contribution_count))),
11f2aa317b70 Small UI tweaks
veltr
parents: 118
diff changeset
   207
                    "vote_mode": True
113
c0d1d15130b3 Added contribution and about
veltr
parents: 111
diff changeset
   208
                } for ct in cqs.filter(thesaurus=None,term__dbpedia_fields__language_code=lang).order_by('-contribution_count')]
c0d1d15130b3 Added contribution and about
veltr
parents: 111
diff changeset
   209
            context["contributions"] = contributions
c0d1d15130b3 Added contribution and about
veltr
parents: 111
diff changeset
   210
        
101
19de76fe00a9 Added contribution
veltr
parents: 100
diff changeset
   211
        context['wikipedia_urls'] = json.dumps(settings.WIKIPEDIA_URLS)
108
c0d227e8b0c4 Changes for contribution
veltr
parents: 106
diff changeset
   212
        context['JOCONDE_NOTICE_BASE_URL'] = settings.JOCONDE_NOTICE_BASE_URL
87
70cc8154164c Added notice view
veltr
parents: 86
diff changeset
   213
        
144
veltr
parents: 143
diff changeset
   214
        notice_history = self.request.session.get('notice_history',[])            
140
752062bdeb10 Corrected image load bug and added describe prev/next
veltr
parents: 136
diff changeset
   215
        if self.object.id in notice_history:
752062bdeb10 Corrected image load bug and added describe prev/next
veltr
parents: 136
diff changeset
   216
            p = notice_history.index(self.object.id)
752062bdeb10 Corrected image load bug and added describe prev/next
veltr
parents: 136
diff changeset
   217
            if p < len(notice_history) - 1:
752062bdeb10 Corrected image load bug and added describe prev/next
veltr
parents: 136
diff changeset
   218
                context['next_notice'] = notice_history[p + 1]
752062bdeb10 Corrected image load bug and added describe prev/next
veltr
parents: 136
diff changeset
   219
            if p > 0:
752062bdeb10 Corrected image load bug and added describe prev/next
veltr
parents: 136
diff changeset
   220
                context['prev_notice'] = notice_history[p - 1]
752062bdeb10 Corrected image load bug and added describe prev/next
veltr
parents: 136
diff changeset
   221
        
100
25636bb50756 Grouped geographical locations and years by dbpedia uri
veltr
parents: 98
diff changeset
   222
        return context
140
752062bdeb10 Corrected image load bug and added describe prev/next
veltr
parents: 136
diff changeset
   223
752062bdeb10 Corrected image load bug and added describe prev/next
veltr
parents: 136
diff changeset
   224
def describe_view(request):
752062bdeb10 Corrected image load bug and added describe prev/next
veltr
parents: 136
diff changeset
   225
    notice_history = request.session.get('notice_history',[])
142
8edfc641a25c Better notice contribution handling
veltr
parents: 140
diff changeset
   226
    all_qs = Notice.objects.filter(image=True, repr='', peri__contains='4e quart 19e siècle', noticeterm__term__id__in=ContributableTerm.objects.values('term__id'))
8edfc641a25c Better notice contribution handling
veltr
parents: 140
diff changeset
   227
    qs = all_qs.exclude(id__in=notice_history)
8edfc641a25c Better notice contribution handling
veltr
parents: 140
diff changeset
   228
    found_notices = qs.count()
8edfc641a25c Better notice contribution handling
veltr
parents: 140
diff changeset
   229
    if not found_notices:
8edfc641a25c Better notice contribution handling
veltr
parents: 140
diff changeset
   230
        notice_history = []
8edfc641a25c Better notice contribution handling
veltr
parents: 140
diff changeset
   231
        qs = all_qs
8edfc641a25c Better notice contribution handling
veltr
parents: 140
diff changeset
   232
        found_notices = qs.count()
8edfc641a25c Better notice contribution handling
veltr
parents: 140
diff changeset
   233
    id = qs[random.randint(0, found_notices - 1)].id
140
752062bdeb10 Corrected image load bug and added describe prev/next
veltr
parents: 136
diff changeset
   234
    notice_history.append(id)
752062bdeb10 Corrected image load bug and added describe prev/next
veltr
parents: 136
diff changeset
   235
    request.session['notice_history'] = notice_history
752062bdeb10 Corrected image load bug and added describe prev/next
veltr
parents: 136
diff changeset
   236
    return redirect('front_describe', pk=id)
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   237
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   238
class FrontTermListView(TemplateView):
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   239
    
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   240
    template_name = "jocondelab/front_termlist.html"
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   241
    
146
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   242
    def image_extra(self, qs):
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   243
        return qs.extra(select={
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   244
                  'image_url': 'SELECT relative_url FROM core_noticeimage AS JL01 JOIN core_notice AS JL02 ON JL02.id = JL01.notice_id JOIN core_noticeterm AS JL03 ON JL02.id = JL03.notice_id WHERE JL03.term_id = core_term.id LIMIT 1'
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   245
              })
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   246
    
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   247
    def get(self, request):
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   248
        
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   249
        context = {}
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   250
        lang = self.request.GET.get('lang',self.request.LANGUAGE_CODE)[:2]
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   251
        is_ajax = request.is_ajax()
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   252
        letter = self.request.GET.get('letter',None)
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   253
        alpha_sort = (letter is not None) or self.request.GET.get('alphabet',False)
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   254
        context['alpha_sort'] = alpha_sort
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   255
        thesaurus = self.request.GET.get('thesaurus',None)
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   256
        context['thesaurus'] = thesaurus
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   257
        
136
823c898f538a Changes related to 10/07 meeting
veltr
parents: 129
diff changeset
   258
        if thesaurus is None:
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   259
            wqs = TagcloudTerm.objects.filter(term__dbpedia_fields__language_code=lang).values('term__dbpedia_fields__label','term__dbpedia_uri')
146
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   260
            wqs = wqs.distinct().annotate(sum_notice=Sum('term__nb_illustrated_notice')).order_by('-sum_notice')
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   261
            n = wqs.count()
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   262
            context['words'] = [{
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   263
                     'label': w['term__dbpedia_fields__label'],
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   264
                     'uri': w['term__dbpedia_uri'],
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   265
                     'font_size': "%.2f"%(1. + float(n-i)/n)
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   266
                                 } for i, w in enumerate(wqs)]
118
3d102aed3213 Added Wikipedia Info box in search results
veltr
parents: 113
diff changeset
   267
            random.shuffle(context['words'])
136
823c898f538a Changes related to 10/07 meeting
veltr
parents: 129
diff changeset
   268
        else:
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   269
            alphabets = [{
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   270
                  "languages": [ "fr", "en", "de", "it", "es", "pt", "ca", "br", "eu", "oc" ],
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   271
                  "letters": u"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   272
              }, {
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   273
                  "languages": [ "ru" ],
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   274
                  "letters": u"АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЭЮЯ"
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   275
              }, {
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   276
                  "languages": [ "ar" ],
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   277
                  "letters": u"ابتثجحخدذرزسشصضطظعغفقكلمنهوي"
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   278
            }]
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   279
            latinalph = alphabets[0]
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   280
            alphabet = None
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   281
            for a in alphabets:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   282
                if lang in a["languages"]:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   283
                    alphabet = a
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   284
            if alphabet is not None:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   285
                if thesaurus in ['REPR','AUTR']:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   286
                    context["show_alphabet"] = True
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   287
                letters = alphabet["letters"]
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   288
                context["alphabet"] = letters
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   289
                if letter is not None:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   290
                    letterpos = letters.find(letter)
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   291
            context["current_letter"] = letter
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   292
            if (not alpha_sort) or (thesaurus == 'AUTR' and alphabet == latinalph and letter is not None):
146
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   293
                # When ordering is not by translated label, we query the Term table
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   294
                tqs = Term.objects.filter(dbpedia_fields__language_code=lang, nb_illustrated_notice__gt=0)
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   295
                if thesaurus == 'REPR':
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   296
                    tqs = tqs.filter(thesaurus__label__in=['REPR','SREP'])
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   297
                else:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   298
                    tqs = tqs.filter(thesaurus__label=thesaurus)
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   299
                if alpha_sort:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   300
                    # Particular case in which thesaurus == AUTR and the alphabet is latin,
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   301
                    # we use original sorting by family name
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   302
                    if letterpos >= 0:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   303
                        tqs = tqs.filter(label__gte=letters[letterpos])
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   304
                    if letterpos < len(letters)-1:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   305
                        tqs = tqs.filter(label__lt=letters[letterpos+1])
146
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   306
                    tqs = tqs.distinct('label').order_by('label')
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   307
                    tqs = self.image_extra(tqs).values('image_url','dbpedia_uri','dbpedia_fields__abstract','label')
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   308
                    terms = []
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   309
                    known_uris = []
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   310
                    for t in tqs:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   311
                        uri = t['dbpedia_uri']
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   312
                        if uri not in known_uris:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   313
                            terms.append(t)
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   314
                            known_uris.append(uri)
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   315
                else:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   316
                    # When we're in sort by most frequent terms
146
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   317
                    tqs = self.image_extra(tqs.order_by('-nb_illustrated_notice'))[:60]
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   318
                    terms = tqs.values('image_url','dbpedia_fields__thumbnail','dbpedia_uri','dbpedia_fields__abstract','dbpedia_fields__label')
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   319
                terms = [{
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   320
                      "dbpedia_uri": t['dbpedia_uri'],
113
c0d1d15130b3 Added contribution and about
veltr
parents: 111
diff changeset
   321
                      "label": t.get('dbpedia_fields__label',t.get('label','')),
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   322
                      "abstract": t['dbpedia_fields__abstract'],
148
8ff19e5d2d70 navigation fixes
veltr
parents: 146
diff changeset
   323
                      "image_url": "%s%s"%(settings.JOCONDE_IMG_BASE_URL, t.get('image_url',''))
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   324
                            } for t in terms]
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   325
                context['termcount'] = len(terms)
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   326
            else:
146
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   327
                # When ordering is by translated label, we query the DbpediaFields table
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   328
                tqs = DbpediaFields.objects.filter(language_code=lang, term__nb_illustrated_notice__gt=0).exclude(label=None)
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   329
                if thesaurus == 'REPR':
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   330
                    tqs = tqs.filter(term__thesaurus__label__in=['REPR','SREP'])
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   331
                else:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   332
                    tqs = tqs.filter(term__thesaurus__label=thesaurus)
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   333
                if thesaurus in ['REPR','AUTR'] and letter is not None: #Pagination required for these two thesaura
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   334
                    if alphabet is not None:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   335
                        if letterpos >= 0:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   336
                            tqs = tqs.filter(label__gte=letters[letterpos])
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   337
                        if letterpos < len(letters)-1:
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   338
                            tqs = tqs.filter(label__lt=letters[letterpos+1])
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   339
                tqs = tqs.distinct('label').order_by('label')
146
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   340
                terms = self.image_extra(tqs).values('image_url','dbpedia_uri','abstract','label')
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   341
                for t in terms:
146
b5ce341745e3 Added nb_illustrated_notice and changed queries for keywords
veltr
parents: 144
diff changeset
   342
                    t['image_url'] = "%s%s"%(settings.JOCONDE_IMG_BASE_URL, t['image_url'])
110
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   343
                context['termcount'] = terms.count()
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   344
            context['terms'] = terms
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   345
        
597fa9d09973 Added Term List View
veltr
parents: 108
diff changeset
   346
        return self.render_to_response(context)
96
eca960eac58b Added Geo and Years tables
veltr
parents: 95
diff changeset
   347