# HG changeset patch # User cavaliet # Date 1308049702 -7200 # Node ID 056c19e37eabb49f7bf791be53d61e2bc6c3d3e1 # Parent e5f8cb1020c8e4fe1caff12cf962a3dc48cba183# Parent 6999575970267e7970c35d8b12d669fe75540528 fusionner diff -r 699957597026 -r 056c19e37eab .settings/org.eclipse.core.resources.prefs --- a/.settings/org.eclipse.core.resources.prefs Tue Jun 14 12:58:53 2011 +0200 +++ b/.settings/org.eclipse.core.resources.prefs Tue Jun 14 13:08:22 2011 +0200 @@ -1,10 +1,11 @@ -#Tue Jun 14 01:30:55 CEST 2011 +#Tue Jun 14 10:02:51 CEST 2011 eclipse.preferences.version=1 encoding//virtualenv/web/env/hdabo/lib/python2.6/site-packages/haystack/backends/__init__.py=utf-8 encoding//virtualenv/web/env/hdabo/lib/python2.6/site-packages/sortedm2m/fields.py=utf-8 encoding//virtualenv/web/env/hdabo/lib/python2.6/site-packages/sortedm2m/forms.py=utf-8 encoding//virtualenv/web/env/hdabo/lib/python2.6/site-packages/sortedm2m/tests.py=utf-8 encoding//virtualenv/web/env/hdabo/lib/python2.6/site-packages/whoosh/analysis.py=utf8 +encoding//virtualenv/web/env/hdabo/lib/python2.6/site-packages/wikitools/wiki.py=utf-8 encoding//web/hdabo/fields.py=utf-8 encoding//web/hdabo/forms.py=utf-8 encoding//web/hdabo/management/commands/importcsv.py=utf-8 diff -r 699957597026 -r 056c19e37eab web/hdabo/management/commands/importcsv.py --- a/web/hdabo/management/commands/importcsv.py Tue Jun 14 12:58:53 2011 +0200 +++ b/web/hdabo/management/commands/importcsv.py Tue Jun 14 13:08:22 2011 +0200 @@ -11,6 +11,7 @@ from django.db import transaction from hdabo.models import (Author, Datasheet, DocumentFormat, Domain, Organisation, Tag, TaggedSheet, TimePeriod, Location) +from hdabo.wp_utils import normalize_tag from optparse import make_option import csv import datetime @@ -82,15 +83,6 @@ sys.stdout.write("\n") sys.stdout.flush() - - def normalize_tag(self, tag): - if len(tag) == 0: - return tag - tag = tag.strip() - tag = tag.replace("_", " ") - tag = " ".join(tag.split()) - tag = tag[0].upper() + tag[1:] - return tag def create_domain_period(self, row_value, klass, school_period): res_list = [] @@ -191,7 +183,7 @@ for i, tag in enumerate([t.strip() for t in row[u'Tag'].split(u";")]): if len(tag) == 0: continue - tag_label = self.normalize_tag(tag) + tag_label = normalize_tag(tag) tag_objs = Tag.objects.filter(label__iexact=tag_label) if len(tag_objs) == 0: tag_obj = Tag(label=tag_label, original_label=tag) diff -r 699957597026 -r 056c19e37eab web/hdabo/management/commands/querywikipedia.py --- a/web/hdabo/management/commands/querywikipedia.py Tue Jun 14 12:58:53 2011 +0200 +++ b/web/hdabo/management/commands/querywikipedia.py Tue Jun 14 13:08:22 2011 +0200 @@ -15,6 +15,28 @@ import math import sys + +def process_tag(site, tag, verbosity): + new_label, status, url, pageid, response = query_wikipedia_title(site, tag.label) + + if verbosity >= 2 : + print "response from query to %s with parameters %s :" % (site.apibase, repr(new_label)) + print repr(response) + + if new_label is not None: + tag.label = new_label + if status is not None: + tag.url_status = status + if url is not None: + tag.wikipedia_url = url + tag.wikipedia_activated = True + if pageid is not None: + tag.wikipedia_pageid = pageid + + tag.save() + + + class Command(NoArgsCommand): ''' query and update wikipedia for tag title. @@ -166,23 +188,7 @@ print "processing tag %s (%d/%d)" % (tag.label, i + 1, count) else: self.show_progress(i + 1, count, tag.label, 60) - - new_label, status, url, pageid, response = query_wikipedia_title(site, tag.label) - - if verbosity >= 2 : - print "response from query to %s with parameters %s :" % (site_url, repr(new_label)) - print repr(response) - if new_label is not None: - tag.label = new_label - if status is not None: - tag.url_status = status - if url is not None: - tag.wikipedia_url = url - tag.wikipedia_activated = True - if pageid is not None: - tag.wikipedia_pageid = pageid - - tag.save() + process_tag(site, tag, verbosity) diff -r 699957597026 -r 056c19e37eab web/hdabo/static/hdabo/js/hdabo.js diff -r 699957597026 -r 056c19e37eab web/hdabo/templates/partial/list_for_orga.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/hdabo/templates/partial/list_for_orga.html Tue Jun 14 13:08:22 2011 +0200 @@ -0,0 +1,84 @@ +{% extends "hdabo_base.html" %} + {% block title %}HDA - BO : Fiches pour {{ orga_name }}{% endblock %} + + {% block js_import %} + {{block.super}} + + + {% endblock %} + + {% block js_declaration %} + {{block.super}} + {% if valid != "2" %} + + {% endif %} + {% endblock %} + + {% block css_import %} + {{block.super}} + + {% endblock %} + + {% block css_declaration %} + {{block.super}} + + {% endblock %} + + + {% block content %} + {{block.super}} +

Fiche(s) pour l'organisation {{ orga_name }} : {{nb_sheets}} fiche(s)

+ {% if valid != "2" %} +
+

<<   + <   + {{displayed_index}}/{{nb_sheets}}   + >   + >>

+
+ {% endif %} + + {% for ds in datasheets %} + + {% endfor %} +
+ {% include "partial/one_sheet.html" %} +
+ {% if valid != "2" %} +
+

<<   + <   + {{displayed_index}}/{{nb_sheets}}   + >   + >>

+
+ {% endif %} + {% endblock %} diff -r 699957597026 -r 056c19e37eab web/hdabo/templates/partial/tag_table.html --- a/web/hdabo/templates/partial/tag_table.html Tue Jun 14 12:58:53 2011 +0200 +++ b/web/hdabo/templates/partial/tag_table.html Tue Jun 14 13:08:22 2011 +0200 @@ -23,7 +23,7 @@ {% if not forloop.first %}up{% endif %} {% if not forloop.last %}down{% endif %} {% endif %} - {{t.tag.id}} + {{t.tag.id}} {{t.tag.label}} {% comment %}{{t.tag.original_label}}{% endcomment %} diff -r 699957597026 -r 056c19e37eab web/hdabo/urls.py --- a/web/hdabo/urls.py Tue Jun 14 12:58:53 2011 +0200 +++ b/web/hdabo/urls.py Tue Jun 14 13:08:22 2011 +0200 @@ -24,5 +24,6 @@ url(r'^removetagfromlist$', 'hdabo.views.remove_tag_from_list'), url(r'^validatelink$', 'hdabo.views.validate_wp_link'), url(r'^modifytag$', 'hdabo.views.modify_tag'), + url(r'^resetwpinfo$', 'hdabo.views.reset_wikipedia_info'), url(r'^addtag$', 'hdabo.views.add_tag'), ) diff -r 699957597026 -r 056c19e37eab web/hdabo/views.py --- a/web/hdabo/views.py Tue Jun 14 12:58:53 2011 +0200 +++ b/web/hdabo/views.py Tue Jun 14 13:08:22 2011 +0200 @@ -1,212 +1,201 @@ -from django.conf import settings -from django.contrib.auth.decorators import login_required #@UnusedImport -from django.db.models import Max -from django.http import HttpResponse -from django.shortcuts import render_to_response -from django.template import RequestContext -from hdabo.wp_utils import query_wikipedia_title -from models import Organisation, Datasheet, TaggedSheet, Tag -from wikitools import wiki - - -#@login_required -def home(request): - - # Get all organisations - orgas = Organisation.objects.all() - # Count all validated, unvalidated sheets for each organisation - org_list = [] - for orga in orgas : - all_datasheets = Datasheet.objects.filter(organisation=orga) - nb_all = len(all_datasheets) - nb_val = len(all_datasheets.filter(validated=True)) - nb_unval = len(all_datasheets.filter(validated=False)) - org_list.append({'organisation':orga, 'nb_all':nb_all, 'nb_val':nb_val, 'nb_unval':nb_unval}) - - - return render_to_response("organisation_list.html", - {'organisations':org_list}, - context_instance=RequestContext(request)) - - -#@login_required -def list_for_orga(request, orga_id=None, valid=None, start_index=None): - - orga = Organisation.objects.get(id=orga_id) - orga_name = orga.name - - if start_index : - try: - start_index = int(start_index) - except : - start_index = 0 - else : - start_index = 0 - - # If valid = 0, we search unvalidated sheets - # If valid = 1, we search validated sheets - # If valid = 2, we search AND DISPLAY all sheets - if valid == "1" : - # We count all the validated sheets - datasheets = Datasheet.objects.filter(organisation=orga).filter(validated=True) - nb_sheets = len(datasheets) - # And select the current one - datasheets = [datasheets[start_index]] - elif valid != "2": - # We count all the validated sheets - datasheets = Datasheet.objects.filter(organisation=orga).filter(validated=False) - nb_sheets = len(datasheets) - # And select the current one - datasheets = [datasheets[start_index]] - else : - datasheets = Datasheet.objects.filter(organisation=orga) - nb_sheets = len(datasheets) - - # We get the ORDERED tags if we display one sheet (case valid = 0 and 1) - ordered_tags = None - if valid != "2" : - ordered_tags = TaggedSheet.objects.filter(datasheet=datasheets[0]).order_by('order') - - displayed_index = start_index + 1; - prev_index = max(start_index - 1, 0); - next_index = min(nb_sheets - 1, start_index + 1); - last_index = max(nb_sheets - 1, 0); - - return render_to_response("list_for_orga.html", - {'datasheets':datasheets, 'orga_name':orga_name, - 'nb_sheets':nb_sheets, 'orga_id':orga_id, 'ordered_tags':ordered_tags, - 'prev_index':prev_index, 'next_index':next_index, 'last_index':last_index, - 'start_index':start_index, 'displayed_index':displayed_index, 'valid':valid}, - context_instance=RequestContext(request)) - -#@login_required -def tag_up_down(request): - ds_id = request.POST["datasheet_id"] - #tag_id = request.POST["tag_id"] - # tag_pos indicates the position (from 0) of the tag in the list. NB : it is different from the TagSheet.order in the database. - tag_pos = int(request.POST["tag_pos"]) - # move can be "u" or "d", for up and down - move = request.POST["move"] - # First we get the datasheet's TaggedSheets - ordered_tags = TaggedSheet.objects.filter(datasheet=Datasheet.objects.filter(id=ds_id)[0]).order_by('order') - # We get the current TaggedSheet and its's order - #ts = ordered_tags.filter(tag=Tag.objects.filter(id=tag_id))[0] - ts = ordered_tags[tag_pos] - tag_order = ts.order - # We get the other TaggedSheet that will be moved - if move == "u" : - other_ts = ordered_tags[tag_pos - 1] - elif move == "d" : - other_ts = ordered_tags[tag_pos + 1] - else : - other_ts = None - # We switch the orders - if other_ts : - ts.order = other_ts.order - other_ts.order = tag_order - ts.save() - other_ts.save() - - return get_tag_table(request=request, ds_id=ds_id, valid=0) - - -#@login_required -def get_tag_table(request=None, ds_id=None, valid=None): - - ordered_tags = TaggedSheet.objects.filter(datasheet=Datasheet.objects.filter(id=ds_id)[0]).order_by('order') - - return render_to_response("partial/tag_table.html", - {'ordered_tags':ordered_tags, 'valid':valid}, - context_instance=RequestContext(request)) - - -#@login_required -def remove_tag_from_list(request=None): - - ds_id = request.POST["datasheet_id"] - tag_id = request.POST["tag_id"] - # First we get the datasheet's TaggedSheets - ds_tags = TaggedSheet.objects.filter(datasheet=Datasheet.objects.filter(id=ds_id)[0]) - # We get the current TaggedSheet and we delete it - ts = ds_tags.filter(tag=Tag.objects.filter(id=tag_id))[0] - ts.delete() - - return get_tag_table(request=request, ds_id=ds_id, valid=0) - - -#@login_required -def validate_wp_link(request=None): - - ds_id = request.POST["datasheet_id"] - tag_id = request.POST["tag_id"] - if request.POST["activated"] != "false" : - wp_activ = True - else : - wp_activ = False - # First we get the tag object - tag = Tag.objects.filter(id=tag_id)[0] - tag.wikipedia_activated = wp_activ - tag.save() - - return get_tag_table(request=request, ds_id=ds_id, valid=0) - -#@login_required -def modify_tag(request): - - tag_id = request.POST["id"] - tag_label = request.POST["value"] - ds_id = request.POST["datasheet_id"] - - site = wiki.Wiki(settings.WIKIPEDIA_API_URL) #@UndefinedVariable - - new_label, status, url, pageid, response = query_wikipedia_title(site, tag_label) #@UnusedVariable - - tag = Tag.objects.get(id=tag_id) - - if new_label is not None: - tag.label = new_label - if status is not None: - tag.url_status = status - if url is not None: - tag.wikipedia_url = url - tag.wikipedia_activated = True - if pageid is not None: - tag.wikipedia_pageid = pageid - - tag.save() - - return get_tag_table(request=request, ds_id=ds_id, valid=0) - - -#@login_required -def add_tag(request=None): - - ds_id = request.POST["datasheet_id"] - tag_label = request.POST["value"] - # We get the wikipedia references for the tag_label - site = wiki.Wiki(settings.WIKIPEDIA_API_URL) #@UndefinedVariable - new_label, status, url, pageid, response = query_wikipedia_title(site, tag_label) #@UnusedVariable - # We get or create the tag object - tag, created = Tag.objects.get_or_create(label=new_label) - # We save the datas - if new_label is not None: - tag.label = new_label - tag.original_label = new_label - if status is not None: - tag.url_status = status - if url is not None: - tag.wikipedia_url = url - tag.wikipedia_activated = True - if pageid is not None: - tag.wikipedia_pageid = pageid - tag.save() - # We put the tag at the bottom of the datasheet's tag list - # if the tag is created or if the tag is not in the list - ds = Datasheet.objects.filter(id=ds_id)[0] - list_ts = TaggedSheet.objects.filter(datasheet=ds) - if created or len(list_ts.filter(tag=tag))==0 : - new_order = list_ts.aggregate(Max('order'))['order__max'] + 1 - ts = TaggedSheet.objects.create(datasheet=ds, tag=tag, original_order=new_order, order=new_order) - ts.save() - - return get_tag_table(request=request, ds_id=ds_id, valid=0) +from django.conf import settings +from django.contrib.auth.decorators import login_required #@UnusedImport +from django.shortcuts import render_to_response +from django.template import RequestContext +from hdabo.management.commands.querywikipedia import process_tag +from hdabo.wp_utils import normalize_tag, query_wikipedia_title +from models import Organisation, Datasheet, TaggedSheet, Tag +from wikitools import wiki + + +#@login_required +def home(request): + + # Get all organisations + orgas = Organisation.objects.all() + # Count all validated, unvalidated sheets for each organisation + org_list = [] + for orga in orgas : + all_datasheets = Datasheet.objects.filter(organisation=orga) + nb_all = len(all_datasheets) + nb_val = len(all_datasheets.filter(validated=True)) + nb_unval = len(all_datasheets.filter(validated=False)) + org_list.append({'organisation':orga, 'nb_all':nb_all, 'nb_val':nb_val, 'nb_unval':nb_unval}) + + + return render_to_response("partial/organisation_list.html", + {'organisations':org_list}, + context_instance=RequestContext(request)) + + +#@login_required +def list_for_orga(request, orga_id=None, valid=None, start_index=None): + + orga = Organisation.objects.get(id=orga_id) + orga_name = orga.name + + if start_index : + try: + start_index = int(start_index) + except : + start_index = 0 + else : + start_index = 0 + + # If valid = 0, we search unvalidated sheets + # If valid = 1, we search validated sheets + # If valid = 2, we search AND DISPLAY all sheets + if valid == "1" : + # We count all the validated sheets + datasheets = Datasheet.objects.filter(organisation=orga).filter(validated=True) + nb_sheets = len(datasheets) + # And select the current one + datasheets = [datasheets[start_index]] + elif valid != "2": + # We count all the validated sheets + datasheets = Datasheet.objects.filter(organisation=orga).filter(validated=False) + nb_sheets = len(datasheets) + # And select the current one + datasheets = [datasheets[start_index]] + else : + datasheets = Datasheet.objects.filter(organisation=orga) + nb_sheets = len(datasheets) + + # We get the ORDERED tags if we display one sheet (case valid = 0 and 1) + ordered_tags = None + if valid != "2" : + ordered_tags = TaggedSheet.objects.filter(datasheet=datasheets[0]).order_by('order') + + displayed_index = start_index + 1; + prev_index = max(start_index - 1, 0); + next_index = min(nb_sheets - 1, start_index + 1); + last_index = max(nb_sheets - 1, 0); + + return render_to_response("partial/list_for_orga.html", + {'datasheets':datasheets, 'orga_name':orga_name, + 'nb_sheets':nb_sheets, 'orga_id':orga_id, 'ordered_tags':ordered_tags, + 'prev_index':prev_index, 'next_index':next_index, 'last_index':last_index, + 'start_index':start_index, 'displayed_index':displayed_index, 'valid':valid}, + context_instance=RequestContext(request)) + +#@login_required +def tag_up_down(request): + ds_id = request.POST["datasheet_id"] + #tag_id = request.POST["tag_id"] + # tag_pos indicates the position (from 0) of the tag in the list. NB : it is different from the TagSheet.order in the database. + tag_pos = int(request.POST["tag_pos"]) + # move can be "u" or "d", for up and down + move = request.POST["move"] + # First we get the datasheet's TaggedSheets + ordered_tags = TaggedSheet.objects.filter(datasheet=Datasheet.objects.filter(id=ds_id)[0]).order_by('order') + # We get the current TaggedSheet and its's order + #ts = ordered_tags.filter(tag=Tag.objects.filter(id=tag_id))[0] + ts = ordered_tags[tag_pos] + tag_order = ts.order + # We get the other TaggedSheet that will be moved + if move == "u" : + other_ts = ordered_tags[tag_pos - 1] + elif move == "d" : + other_ts = ordered_tags[tag_pos + 1] + else : + other_ts = None + # We switch the orders + if other_ts : + ts.order = other_ts.order + other_ts.order = tag_order + ts.save() + other_ts.save() + + return get_tag_table(request=request, ds_id=ds_id, valid=0) + + +#@login_required +def get_tag_table(request=None, ds_id=None, valid=None): + + ordered_tags = TaggedSheet.objects.filter(datasheet=Datasheet.objects.filter(id=ds_id)[0]).order_by('order') + + return render_to_response("partial/tag_table.html", + {'ordered_tags':ordered_tags, 'valid':valid}, + context_instance=RequestContext(request)) + + +#@login_required +def remove_tag_from_list(request=None): + + ds_id = request.POST["datasheet_id"] + tag_id = request.POST["tag_id"] + # First we get the datasheet's TaggedSheets + ds_tags = TaggedSheet.objects.filter(datasheet=Datasheet.objects.filter(id=ds_id)[0]) + # We get the current TaggedSheet and we delete it + ts = ds_tags.filter(tag=Tag.objects.filter(id=tag_id))[0] + ts.delete() + + return get_tag_table(request=request, ds_id=ds_id, valid=0) + + +#@login_required +def validate_wp_link(request=None): + + ds_id = request.POST["datasheet_id"] + tag_id = request.POST["tag_id"] + if request.POST["activated"] != "false" : + wp_activ = True + else : + wp_activ = False + # First we get the tag object + tag = Tag.objects.filter(id=tag_id)[0] + tag.wikipedia_activated = wp_activ + tag.save() + + return get_tag_table(request=request, ds_id=ds_id, valid=0) + +#@login_required +def modify_tag(request): + + tag_id = request.POST["id"] + tag_label = request.POST["value"] + ds_id = request.POST["datasheet_id"] + + tag = Tag.objects.get(id=tag_id) + + if tag.label != tag_label: + + + tag.label = tag_label + + site = wiki.Wiki(settings.WIKIPEDIA_API_URL) #@UndefinedVariable + new_label, status, url, pageid, response = query_wikipedia_title(site, tag_label) #@UnusedVariable + + if status is not None: + tag.url_status = status + if url is not None: + tag.wikipedia_url = url + tag.wikipedia_activated = True + else: + tag.wikipedia_url = None + tag.wikipedia_activated = False + + if pageid is not None: + tag.wikipedia_pageid = pageid + else: + tag.wikipedia_pageid = None + + tag.save() + + return get_tag_table(request=request, ds_id=ds_id, valid=0) + + +#@login_required +def reset_wikipedia_info(request): + + tag_id = request.POST["tag_id"] + ds_id = request.POST["datasheet_id"] + + tag = Tag.objects.get(id=tag_id) + site = wiki.Wiki(settings.WIKIPEDIA_API_URL) #@UndefinedVariable + + tag.label = normalize_tag(tag.original_label) + + process_tag(site, tag, 0) + + return get_tag_table(request=request, ds_id=ds_id, valid=0) diff -r 699957597026 -r 056c19e37eab web/hdabo/wp_utils.py --- a/web/hdabo/wp_utils.py Tue Jun 14 12:58:53 2011 +0200 +++ b/web/hdabo/wp_utils.py Tue Jun 14 13:08:22 2011 +0200 @@ -39,3 +39,11 @@ return new_label, status, url, pageid, response +def normalize_tag(tag): + if len(tag) == 0: + return tag + tag = tag.strip() + tag = tag.replace("_", " ") + tag = " ".join(tag.split()) + tag = tag[0].upper() + tag[1:] + return tag