2563: API lister les chercheurs d'une région, partie 1
authorNilovna Bascunan-Vasquez <n.b.vasquez@gmail.com>
Tue, 24 Jan 2012 06:49:36 +0000 (01:49 -0500)
committerNilovna Bascunan-Vasquez <n.b.vasquez@gmail.com>
Tue, 24 Jan 2012 06:49:36 +0000 (01:49 -0500)
auf_savoirs_en_partage/chercheurs/api.py [new file with mode: 0644]
auf_savoirs_en_partage/conf.py.edit [deleted file]
auf_savoirs_en_partage/urls.py
buildout.cfg

diff --git a/auf_savoirs_en_partage/chercheurs/api.py b/auf_savoirs_en_partage/chercheurs/api.py
new file mode 100644 (file)
index 0000000..5e80de2
--- /dev/null
@@ -0,0 +1,58 @@
+# -*- encoding: utf-8 -*
+from django.http import HttpResponse
+from django.core import serializers
+from chercheurs.models import Chercheur
+
+STATUS_OK = 200
+STATUS_ERROR = 400
+STATUS_ERROR_PERMISSIONS = 403 
+STATUS_ERROR_NOT_FOUND = 404
+STATUS_ERROR_BADMETHOD = 405
+
+def api(request, pays=None, region_id=None, *args, **kwargs):
+    api = API(request)
+    # if not hasattr(api, 'api_%s' % method):
+    #    return api_return(STATUS_ERROR)
+    # if pays is not None:
+    return api.api_chercheurs_liste(pays=pays, region_id=region_id)
+    #elif region_id is not None:
+    #    return api.api_chercheurs_liste(region_id=region_id)
+
+def api_return(status, text='', json=False):
+    content_type = 'text/html'
+    if status == STATUS_OK and json:
+        content_type = 'text/json'
+    if text is None:
+        if status == STATUS_ERROR:
+            text = 'Error'
+        elif status == STATUS_ERROR_NOT_FOUND:
+            text = 'Resource Not Found'
+        elif status == STATUS_ERROR_PERMISSIONS:
+            text = 'Invalid username or password'
+        elif status == STATUS_ERROR_BADMETHOD:
+            text = 'Invalid request method'
+        elif status == STATUS_OK:
+            text = 'OK'
+
+    r = HttpResponse(status=status, content=text, content_type=content_type)
+
+    if status == STATUS_ERROR_BADMETHOD:
+        r.Allow = 'POST'
+
+    return r
+
+class API:
+    def __init__(self, request):
+        self.request = request
+
+    def api_chercheurs_liste(self, pays=None, region_id=None):
+        import pdb;pdb.set_trace()
+        if pays is not None:
+            chercheurs = Chercheur.objects.filter_pays(pays)
+        elif region_id is not None:
+            chercheurs = Chercheur.objects.filter_region(region_id)
+        else:
+            return api_return(STATUS_ERROR, "Erreur dans la requete de recherche de chercheurs")
+
+        data = serializers.serialize('json', chercheurs)
+        return api_return(STATUS_OK, data)
diff --git a/auf_savoirs_en_partage/conf.py.edit b/auf_savoirs_en_partage/conf.py.edit
deleted file mode 100644 (file)
index bbf402b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-DATABASE_ENGINE = 'sqlite3'    # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
-DATABASE_NAME = 'auf_savoirs_en_partage_django.db'
-DATABASE_USER = ''             # Not used with sqlite3.
-DATABASE_PASSWORD = ''         # Not used with sqlite3.
-DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
-DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.
-ROA_API_KEY = ''
-
-# Don't share this with anybody.
-SECRET_KEY = ''
-
-CALENDRIER_URL = 'http://davin:davin@cal.ro.auf.org/caldav.php/davin/test/'
-SITE_ROOT_URL = 'http://www.savoirsenpartage.auf.org'
-
-AUTH_PASSWORD_REQUIRED = True
-EMAIL_SUBJECT_PREFIX = '[savoirsenpartage - TEST] '
-
-SITE_DOMAIN = 'test.savoirsenpartage.auf.org'
index 2f8428c..52e3a99 100644 (file)
@@ -103,6 +103,11 @@ urlpatterns = sep_patterns + patterns(
     (r'^etablissements/autocomplete/$', 'chercheurs.views.etablissements_autocomplete'),
     (r'^etablissements/autocomplete/(?P<pays>.*)/$', 'chercheurs.views.etablissements_autocomplete'),
 
+    # API chercheurs
+    (r'^api/chercheurs/(?P<pays>.*)/$', 'chercheurs.api.api'), # (?P<pays>.*)/$', 'chercheurs.api.api'),
+    (r'^api/chercheurs/(?P<region_id>\d+)/$', 'chercheurs.api.api'),
+
+
     # groupes
     (r'^groupes/$', 'chercheurs.views.groupe_index'),
     url(r'^groupes/(?P<id>\d+)/$', 'chercheurs.views.groupe_retrieve', name='groupe_retrieve'),
index 2049f20..c52b161 100644 (file)
@@ -25,7 +25,7 @@ eggs = auf_references_client==0.4.9
     chardet==1.0.1
     pytz==2010l
     feedparser==4.1
-    BeautifulSoup==3.1.0.1
+    BeautifulSoup==3.2.0
     django_compressor==0.5.3
     django_pagination==1.0.7
     django_sorting==0.1