fix candidat
[auf_rh_dae.git] / project / monkey.py
index a6a96e2..a283dc8 100644 (file)
@@ -1,23 +1,33 @@
 # -*- encoding: utf-8 -*-
 
-################################################################################
+############################################################################
 #
 # PATCH AJAX SELECT FIELD : pour gérer le fait que certaine FK ne sont pas
-# forcément mappé sur la PK du modèle, dans notre cas ici c'est le modèle 
-# Pays qui dispose d'un pk sur son id mais les fk sont mappé sur le champs 'code'
+# forcément mappé sur la PK du modèle, dans notre cas ici c'est le modèle
+# Pays qui dispose d'un pk sur son id mais les fk sont mappé sur le champs
+# 'code'
 #
-################################################################################
-from ajax_select import get_lookup
-from django.contrib.admin import site
-from django.db import models
+###########################################################################
+
+from django.conf import settings
+from django.core.urlresolvers import reverse
 from django.http import HttpResponse
+from django.forms.util import flatatt
+from django.utils.safestring import mark_safe
+from django.template.loader import render_to_string
+
 import ajax_select.views
+from ajax_select import get_lookup
+from ajax_select.fields import AutoCompleteSelectWidget
+
 
-def fk_ajax_lookup(request,channel):
-    """ this view supplies results for both foreign keys and many to many fields """
+def fk_ajax_lookup(request, channel):
+    """
+    this view supplies results for both foreign keys and many to many fields
+    """
 
-    # it should come in as GET unless global $.ajaxSetup({type:"POST"}) has been set
-    # in which case we'll support POST
+    # it should come in as GET unless global $.ajaxSetup({type:"POST"}) has
+    # been set in which case we'll support POST
     if request.method == "GET":
         # we could also insist on an ajax request
         if 'q' not in request.GET:
@@ -25,33 +35,30 @@ def fk_ajax_lookup(request,channel):
         query = request.GET['q']
     else:
         if 'q' not in request.POST:
-            return HttpResponse('') # suspicious
+            return HttpResponse('')  # suspicious
         query = request.POST['q']
-    
+
     lookup_channel = get_lookup(channel)
-    
+
     if query:
-        instances = lookup_channel.get_query(query,request)
+        instances = lookup_channel.get_query(query, request)
     else:
         instances = []
 
     results = []
     for item in instances:
         itemf = lookup_channel.format_item(item)
-        itemf = itemf.replace("\n","").replace("|","¦")
+        itemf = itemf.replace("\n", "").replace("|", "¦")
         resultf = lookup_channel.format_result(item)
-        resultf = resultf.replace("\n","").replace("|","¦")
+        resultf = resultf.replace("\n", "").replace("|", "¦")
         fk = getattr(lookup_channel, 'fk_key', None)
         if fk is not None:
             id = getattr(item, fk)
         else:
             id = item.pk
-        results.append( "|".join((unicode(id),itemf,resultf)) )
+        results.append("|".join((unicode(id), itemf, resultf)))
     return HttpResponse("\n".join(results))
 
-ajax_select.views.ajax_lookup = fk_ajax_lookup
-
-from ajax_select.fields import AutoCompleteSelectWidget
 
 def value_from_datadict(self, data, files, name):
 
@@ -64,17 +71,10 @@ def value_from_datadict(self, data, files, name):
     else:
         return None
 
-AutoCompleteSelectWidget.value_from_datadict = value_from_datadict
-
-from django.conf import settings
-from django.core.urlresolvers import reverse
-from django.utils.safestring import mark_safe
-from django.forms.util import flatatt
-from django.template.loader import render_to_string
 
 def patched_render(self, name, value, attrs=None):
     """
-    prevention contre les choses supprimees   
+    prevention contre les choses supprimees
     """
     # precheck existence valeur
     lookup = get_lookup(self.channel)
@@ -95,25 +95,32 @@ def patched_render(self, name, value, attrs=None):
             obj = objs[0]
         except IndexError:
             raise Exception("%s cannot find object:%s" % (lookup, value))
-        current_result = mark_safe(lookup.format_item( obj ) )
+        current_result = mark_safe(lookup.format_item(obj))
     else:
         current_result = ''
 
     context = {
             'name': name,
-            'html_id' : self.html_id,
-            'lookup_url': reverse('ajax_lookup',kwargs={'channel':self.channel}),
+            'html_id': self.html_id,
+            'lookup_url': reverse(
+                'ajax_lookup', kwargs={'channel': self.channel}
+            ),
             'current_id': value,
             'current_result': current_result,
             'help_text': self.help_text,
             'extra_attrs': mark_safe(flatatt(final_attrs)),
-            'func_slug': self.html_id.replace("-",""),
-            'add_link' : self.add_link,
-            'admin_media_prefix' : settings.ADMIN_MEDIA_PREFIX
+            'func_slug': self.html_id.replace("-", ""),
+            'add_link': self.add_link,
+            'admin_media_prefix': settings.ADMIN_MEDIA_PREFIX
             }
 
-    return mark_safe(render_to_string(('autocompleteselect_%s.html' % self.channel, 'autocompleteselect.html'),context))
-
+    return mark_safe(render_to_string((
+        'autocompleteselect_%s.html' % self.channel,
+        'autocompleteselect.html'
+    ), context))
 
 
-AutoCompleteSelectWidget.render = patched_render
+def patch_ajax_selects():
+    ajax_select.views.ajax_lookup = fk_ajax_lookup
+    AutoCompleteSelectWidget.render = patched_render
+    AutoCompleteSelectWidget.value_from_datadict = value_from_datadict