diff -r 73f19fa4f997 -r 8f77cf71ab02 web/hdalab/views/pages.py --- a/web/hdalab/views/pages.py Fri Nov 16 18:12:05 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -# -*- coding: utf-8 -*- - -from django.shortcuts import render_to_response, redirect -from django.template import RequestContext -from hdabo.models import Datasheet, TaggedSheet -import re -import django.utils.simplejson as json - -def datasheet(request, hda_id=None): - MAX_TAG = 15 - MAX_RELATED = 50 - - datasheet = Datasheet.objects.select_related("organisation").get(hda_id=hda_id) - - domain = re.findall(r"^https?://(www\.)?([^/]+)",datasheet.url) - ordered_tags = TaggedSheet.objects.filter(datasheet=datasheet,order__lte=MAX_TAG).select_related("tag").order_by('order') - tags = [t.tag.id for t in ordered_tags] - tagorders = dict([(t.tag.id,t.order) for t in ordered_tags]) - tsqs = TaggedSheet.objects.exclude(datasheet=datasheet).filter(order__lte=MAX_TAG,tag_id__in=tags) - dsscores = {} - addtoscore = 2*MAX_TAG - - for ts in tsqs: - a_order = tagorders[ts.tag_id] - b_order = ts.order - score = addtoscore - a_order - b_order - dsscore = dsscores.get(ts.datasheet_id,0) - dsscores[ts.datasheet_id] = dsscore + score - relatedqs = Datasheet.objects.filter(id__in=dsscores.keys()).select_related("organisation") - relatedds = [{ - 'id': ds.id, - 'hda_id': ds.hda_id, - 'title': ds.title, - 'description': ds.description, - 'organisation_name': ds.organisation.name, - 'organisation_url': ds.organisation.website, - 'score': dsscores.get(ds.id,0), - } for ds in relatedqs] - relatedds = sorted(relatedds, key=lambda ds: -ds['score'])[:MAX_RELATED] - - for ds in relatedds: - otqs = TaggedSheet.objects.filter(datasheet_id=ds['id'],order__lte=MAX_TAG).select_related("tag").order_by('order') - ds['ordered_tags'] = [{ - 'id': t.tag.id, - 'label': t.tag.label, - 'order': t.order, - 'common' : (t.tag.id in tags) - } for t in otqs] - - return render_to_response( - "notice.html", - { - 'datasheet':datasheet, - 'domain': domain[0][1] if domain else "", - 'ordered_tags': ordered_tags, - 'related': relatedds, - }, - context_instance=RequestContext(request) - )