fusionner
authorcavaliet
Tue, 14 Jun 2011 13:08:22 +0200
changeset 27 056c19e37eab
parent 25 e5f8cb1020c8 (diff)
parent 26 699957597026 (current diff)
child 28 2cc86e8db2ec
fusionner
web/hdabo/static/hdabo/js/hdabo.js
web/hdabo/templates/partial/organisation_list.html
web/hdabo/urls.py
web/hdabo/views.py
--- 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
--- 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)
--- 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)
             
             
--- /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}}
+    <script type="text/javascript" src="{{STATIC_URL}}hdabo/js/jquery-ui.min.js"></script>
+    <script type="text/javascript" src="{{STATIC_URL}}hdabo/js/jquery.jeditable.js"></script>
+    {% endblock %}
+    
+    {% block js_declaration %}
+    {{block.super}}
+    {% if valid != "2" %}
+    <script type="text/javascript">
+    
+    var global_csrf_token = "{{ csrf_token }}";
+    var static_url = "{{STATIC_URL}}";
+    var tag_up_down_url = "{% url hdabo.views.tag_up_down %}";
+    var remove_tag_from_list_url = "{% url hdabo.views.remove_tag_from_list %}";
+    var validate_wp_link_url = "{% url hdabo.views.validate_wp_link %}";
+    var modify_tag_url = "{% url hdabo.views.modify_tag %}";
+    var reset_wp_info_url = "{% url hdabo.views.reset_wikipedia_info %}";
+    
+    $(document).ready(function(){
+        $.editable.addInputType('autocomplete', {
+            element : $.editable.types.text.element,
+            plugin : function(settings, original) {
+                $('input', this).autocomplete(settings.autocomplete);
+            }
+        });
+        init_tags_events();
+    });
+    </script>
+    {% endif %}
+    {% endblock %}
+
+    {% block css_import %}
+    {{block.super}}
+    <link rel="stylesheet" href="{{STATIC_URL}}hdabo/css/smoothness/jquery-ui-1.8.13.custom.css" type="text/css"/>
+    {% endblock %}
+
+    {% block css_declaration %}
+    {{block.super}}
+    <style type="text/css">
+    .ui-autocomplete {
+        max-height: 100px;
+        overflow-y: auto;
+        /* prevent horizontal scrollbar */
+        overflow-x: hidden;
+        /* add padding to account for vertical scrollbar */
+        padding-right: 20px;
+    }
+    </style>
+    {% endblock %}
+    
+    
+    {% block content %}
+    {{block.super}}
+    <p>Fiche(s) pour l'organisation <b>{{ orga_name }}</b> : {{nb_sheets}} fiche(s)</p>
+    {% if valid != "2" %}
+    <div id="count_nav_top">
+        <p><a href="{% url hdabo.views.list_for_orga orga_id=orga_id, valid=valid, start_index=0 %}">&lt;&lt;</a>&nbsp;&nbsp;
+           <a href="{% url hdabo.views.list_for_orga orga_id=orga_id, valid=valid, start_index=prev_index %}">&lt;</a>&nbsp;&nbsp;
+           {{displayed_index}}/{{nb_sheets}}&nbsp;&nbsp;
+           <a href="{% url hdabo.views.list_for_orga orga_id=orga_id, valid=valid, start_index=next_index %}">&gt;</a>&nbsp;&nbsp;
+           <a href="{% url hdabo.views.list_for_orga orga_id=orga_id, valid=valid, start_index=last_index %}">&gt;&gt;</a></p>
+    </div>
+    {% endif %}
+    <table>
+    {% for ds in datasheets %}
+    <tr class="imageline {% cycle 'hdaboevenline' 'hdabooddline' %}"><td>
+    {% include "partial/one_sheet.html" %}
+    </td></tr>
+    {% endfor %}
+    </table>
+    {% if valid != "2" %}
+    <div id="count_nav_bottom">
+        <p><a href="{% url hdabo.views.list_for_orga orga_id=orga_id, valid=valid, start_index=0 %}">&lt;&lt;</a>&nbsp;&nbsp;
+           <a href="{% url hdabo.views.list_for_orga orga_id=orga_id, valid=valid, start_index=prev_index %}">&lt;</a>&nbsp;&nbsp;
+           {{displayed_index}}/{{nb_sheets}}&nbsp;&nbsp;
+           <a href="{% url hdabo.views.list_for_orga orga_id=orga_id, valid=valid, start_index=next_index %}">&gt;</a>&nbsp;&nbsp;
+           <a href="{% url hdabo.views.list_for_orga orga_id=orga_id, valid=valid, start_index=last_index %}">&gt;&gt;</a></p>
+    </div>
+    {% endif %}
+    {% endblock %}
--- 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 @@
             <td class="updown_td">{% if not forloop.first %}<img src="{{STATIC_URL}}hdabo/img/arrow_up.png" class="up" alt="up" id={{t.tag.id}} pos="{{forloop.counter0}}">{% endif %}</td>
             <td class="updown_td">{% if not forloop.last %}<img src="{{STATIC_URL}}hdabo/img/arrow_down.png" class="down" alt="down" id={{t.tag.id}} pos="{{forloop.counter0}}">{% endif %}</td>
             {% endif %}
-            <td>{{t.tag.id}}</td>
+            <td class="reset_wp_info">{{t.tag.id}}</td>
             <td class="{{t.tag.url_status_text}} wikipediatag" id="{{t.tag.id}}" >{{t.tag.label}}</td>
             {% comment %}<td>{{t.tag.original_label}}</td>{% endcomment %}
             <td class="text_centered">
--- 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'),
 )
--- 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)
--- 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