Restructuration de la configuration
authorCyril Robert <Cyril Robert cyrilrbt@gmail.com>
Thu, 5 Aug 2010 14:29:00 +0000 (10:29 -0400)
committerCyril Robert <Cyril Robert cyrilrbt@gmail.com>
Thu, 5 Aug 2010 14:29:00 +0000 (10:29 -0400)
13 files changed:
auf_savoirs_en_partage/savoirs/__init__.py
auf_savoirs_en_partage/savoirs/lib/backend/__init__.py [deleted file]
auf_savoirs_en_partage/savoirs/lib/backend/globals.py [deleted file]
auf_savoirs_en_partage/savoirs/lib/backend/sql.py [deleted file]
auf_savoirs_en_partage/savoirs/lib/calendrier.py
auf_savoirs_en_partage/savoirs/lib/harvesters/lodel/html.py
auf_savoirs_en_partage/savoirs/lib/harvesters/oai/generic.py
auf_savoirs_en_partage/savoirs/lib/harvesters/pmb/export.py
auf_savoirs_en_partage/savoirs/lib/recherche.py
auf_savoirs_en_partage/savoirs/lib/sep.py
auf_savoirs_en_partage/savoirs/lib/utils.py
auf_savoirs_en_partage/savoirs/views.py
buildout.cfg

index 037fc27..8b13789 100644 (file)
@@ -1,13 +1 @@
-configuration = {
-    'max_actualite': 100,
-    'accueil_actualite': 5,
-    'nombre_par_page_actualite': 10,
-    'resultats_par_page': 8, # pas changeable a cause de google
-    'accueil_evenement': 10,
-    'engin_recherche': 'sep',
-    'google_xml': "http://www.savoirsenpartage.auf.org/recherche.xml?%s",
-    #'calendrier': 'http://sogo1:sogo1@sogo-demo.inverse.ca:80/SOGo/dav/sogo1/Calendar/personal/',
-    #'calendrier_publique': 'http://sogo-demo.inverse.ca:80/SOGo/dav/sogo1/Calendar/personal/',
-    'calendrier': 'http://davin:davin@cal.ro.auf.org/caldav.php/davin/test/',
-    'calendrier_publique': 'http://cal.ro.auf.org/caldav.php/davin/test/',
-}
+
diff --git a/auf_savoirs_en_partage/savoirs/lib/backend/__init__.py b/auf_savoirs_en_partage/savoirs/lib/backend/__init__.py
deleted file mode 100644 (file)
index ff6ea1e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env python
-# -*- encoding: utf-8 -*-
diff --git a/auf_savoirs_en_partage/savoirs/lib/backend/globals.py b/auf_savoirs_en_partage/savoirs/lib/backend/globals.py
deleted file mode 100644 (file)
index d29d4b9..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-
-#####
-# Meta fields
-TITLE           = 'title'
-ALT_TITLE       = 'alt_title'
-CREATOR         = 'creator'
-CONTRIBUTOR     = 'contributor'
-DESCRIPTION     = 'description'
-ABSTRACT        = 'abstract'
-SUBJECT         = 'subject'
-PUBLISHER       = 'publisher'
-DATE_CREATION   = 'creation'
-DATE_ISSUED     = 'issued'
-DATE_MODIFIED   = 'modified'
-TYPE            = 'type'
-FORMAT          = 'format'
-IDENTIFIER      = 'identifier'
-ISBN            = 'isbn'
-URI             = 'uri'
-SOURCE          = 'source'
-LANGUAGE        = 'language'
-ORIG_LANG       = 'orig_lang'
-
-
-META = {TITLE: {'type': 'text', 'text_search': True},
-        ALT_TITLE: {'type': 'text', 'text_search': True},
-        CREATOR: {'type': 'array', 'text_search': True},
-        CONTRIBUTOR: {'type': 'array', 'text_search': True},
-        DESCRIPTION: {'type': 'text', 'text_search': True},
-        ABSTRACT: {'type': 'text', 'text_search': True},
-        SUBJECT: {'type': 'array', 'text_search': True},
-        PUBLISHER: {'type': 'array'},
-        DATE_CREATION: {'type': 'date'},
-        DATE_ISSUED: {'type': 'date'},
-        DATE_MODIFIED: {'type': 'date'},
-        TYPE: {'type': 'array'},
-        FORMAT: {'type': 'array'},
-        IDENTIFIER: {'type': 'text'},
-        ISBN: {'type': 'text'},
-        URI: {'type': 'text', 'unique': True},
-        SOURCE: {'type': 'text'},
-        LANGUAGE: {'type': 'array'},
-        ORIG_LANG: {'type': 'array'}
-        }
diff --git a/auf_savoirs_en_partage/savoirs/lib/backend/sql.py b/auf_savoirs_en_partage/savoirs/lib/backend/sql.py
deleted file mode 100644 (file)
index 2d9dcf1..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-# -*- encoding: utf-8 -*-
-import simplejson, re, datetime, operator
-from globals import *
-from savoirs.models import Record, HarvestLog
-
-
-class Backend:
-    def close (self):
-        pass
-
-    def add (self, metadata):
-        r = Record ()
-        for k in metadata.keys ():
-            setattr (r, k, simplejson.dumps(metadata[k]))
-        r.save()
-
-    def delete (self, id):
-        r = Record.objects.get(id = id)
-        r.delete()
-
-    def update (self, id, metadata):
-        r = Record.objects.get(id = id)
-        for k in metadata.keys ():
-            setattr (r, k, simplejson.dumps(metadata[k]))
-        r.save()
-
-    def get (self, id):
-        r = Record.objects.get(id = id)
-        meta = {}
-        for k in META.keys ():
-            if hasattr (r, k):
-                v = getattr (r, k)
-                if v is not None:
-                    meta[k] = simplejson.loads(v)
-        return meta
-
-    def ids (self):
-        return [x.id for x in Record.objects.all()]
-
-    def _text_search (self, q, fields = None):
-        if fields is None:
-            fields = [x for x in META.keys() if META[x].get("text_search", False)]
-
-        w = re.compile (r'\W+', re.U)
-        words = w.split (q)
-        
-        matches = []
-        suffix = ""
-        if len(fields)==1 and fields[0] == "subject":
-            suffix = " IN BOOLEAN MODE"
-
-        for k in fields:
-            matches.append ("MATCH(`%s`) AGAINST ('%s'%s)" % (k, " ".join(words), suffix))
-        m = "+".join (matches)
-
-        q = "SELECT id, (" + m + ") AS score FROM savoirs_record WHERE (" \
-                + m + ") HAVING score > 0 ORDER BY score DESC"
-
-        from django.db import connection, transaction
-        cursor = connection.cursor()
-        cursor.execute(q)
-        rc = cursor.fetchall()
-        return rc
-
-    def filter_string_contains (self, set, q, key):
-        rc = []
-        words = q.get (key)
-        if words:
-            r = re.compile (r'%s' % words, re.IGNORECASE)
-            for k in set:
-                str = self.get(k).get(key, "").encode("utf-8")
-                if r.search (str) is not None:
-                    rc.append (k)
-        else:
-            rc = set
-        return rc
-
-    def filter_string_equals (self, q, key):
-        rc = []
-        keys = self.ids ()
-        for k in keys:
-            str = self.get(k).get(key, "")
-            if str.lower() == q[key].lower():
-                rc.append ((k, 1))
-        return rc
-
-    def _score (self, matches):
-        rc = 0
-        for i in matches:
-            for j in i:
-                if len (j.strip()) > 0:
-                    rc += 1
-        return rc
-
-    def _combine (self, result_lists, op):
-        scores = {}
-        simple_sets = []
-
-        for list in result_lists:
-            simple_sets.append (set([x[0] for x in list]))
-            for (id, score) in list:
-                if scores.get (id) is None:
-                    scores[id] = 0
-                scores[id] += score
-
-        matches = []
-        for s in simple_sets:
-            if op == "|":
-                matches = set(matches) | s
-            elif op == "&":
-                if len (matches) == 0:
-                    matches = s
-                else:
-                    matches = set(matches) & s
-            #print "EE", matches
-
-        return [(x, scores[x]) for x in matches]
-
-    def search (self, q):
-        rc = []
-        sets = []
-
-        if len (q) > 0:
-            # Recherche "simple"
-            ww = simplejson.dumps(q.get ("q", "").strip())[1:-1]
-            if len (ww) > 0:
-                s = self._text_search (ww)
-                if len(s) > 0:
-                    rc.append (s)
-            # Recherche URL
-            elif q.get (URI) is not None:
-                s = []
-                try:
-                    s.append((Record.objects.get(uri__iexact = \
-                                                 "\"" + q.get(URI) + "\"").id, 1))
-                    rc.append(s)
-                except: pass
-            # Recherche avancée
-            else:
-                creator = simplejson.dumps(q.get ("creator", ""))[1:-1]
-                title = simplejson.dumps(q.get ("title", ""))[1:-1]
-                description = simplejson.dumps(q.get ("description", ""))[1:-1]
-                subject = simplejson.dumps(q.get ("subject", ""))[1:-1]
-
-                if len (creator) > 0:
-                    sets.append (self._text_search (creator, [CREATOR, CONTRIBUTOR]))
-                if len (title) > 0:
-                    sets.append (self._text_search (title, [TITLE, ALT_TITLE]))
-                if len (description) > 0:
-                    sets.append (self._text_search (description, [DESCRIPTION, ABSTRACT]))
-                if len (subject) > 0:
-                    sets.append (self._text_search (subject, [SUBJECT,]))
-                rc = self._combine (sets, q.get ("operator", "|"))
-                rc.sort (key = operator.itemgetter(1), reverse = True)
-
-            if len(rc) > 0:
-                rc = [x[0] for x in rc]
-
-        else:
-            rc = self.ids()
-
-        return rc
-
-    def add_log (self, name, count):
-        try:
-            t = HarvestLog.objects.get(name = name)
-        except:
-            t = HarvestLog(name = name)
-
-        t.count = count
-        t.date = datetime.datetime.today()
-        t.save()
-
-    def logs (self):
-        rc = {}
-        tmp = HarvestLog.objects.all()
-        for r in tmp:
-            rc[r.name] = (r.date, r.count)
-        return rc
-
-
-
index 1ecdb76..f1b4426 100644 (file)
@@ -1,6 +1,6 @@
 # -*- encoding: utf-8 -*-
 import caldav, datetime, time, pytz
-from savoirs import configuration
+from savoirs.globals import configuration
 
 def evenements():
     rc = []
index b994481..5dc832a 100644 (file)
@@ -3,7 +3,7 @@ from lxml import etree
 import sys, httplib, re, pprint, simplejson
 from urlparse import urlparse, urljoin
 
-from auf_savoirs_en_partage.savoirs.lib.backend.globals import *
+from auf_savoirs_en_partage.savoirs.globals import *
 from auf_savoirs_en_partage.savoirs.lib.utils \
         import safe_append, print_structure, meta_set, smart_str
 
index 9b1d48b..04356f3 100644 (file)
@@ -3,7 +3,7 @@ from lxml import etree
 from urlparse import urlparse, urljoin
 import sys, urllib, httplib, re, chardet
 
-from auf_savoirs_en_partage.savoirs.lib.backend.globals import *
+from auf_savoirs_en_partage.savoirs.globals import *
 from auf_savoirs_en_partage.savoirs.lib.utils \
         import safe_append, print_structure, meta_set
 
index 49de213..41fc860 100644 (file)
@@ -3,8 +3,8 @@ from pmbclient import PmbClient
 from lxml import etree
 import sys, re
 
-from auf_savoirs_en_partage_backend.globals import *
-from auf_savoirs_en_partage_backend.sep.utils import print_structure, find_text, meta_set
+from auf_savoirs_en_partage.savoirs.globals import *
+from auf_savoirs_en_partage.savoirs.lib.utils import print_structure, find_text, meta_set
 
 
 def read_person (node):
index e226839..8c1f529 100644 (file)
@@ -3,7 +3,7 @@ import urllib, httplib, time, simplejson, pprint, math, re
 from django.conf import settings
 from sep import SEP
 from utils import smart_str
-from savoirs import configuration
+from savoirs.globals import configuration
 
 
 def google_search (page, q, data):
index 237eaca..88409a1 100644 (file)
@@ -3,8 +3,8 @@ from exceptions import Exception
 import sys, time
 
 from auf_savoirs_en_partage.backend_config import RESOURCES
-from backend.globals import *
-from backend.sql import Backend
+from savoirs.globals import *
+from backend import Backend
 
 
 class SEP:
index 4478bc8..299e4ef 100644 (file)
@@ -1,5 +1,5 @@
 # -*- encoding: utf-8 -*-
-from backend.globals import *
+from savoirs.globals import *
 
 # From django
 def smart_str(s, encoding='utf-8', strings_only=False, errors='strict'):
index fe54623..c67d069 100644 (file)
@@ -11,7 +11,7 @@ from django.core.urlresolvers import reverse
 from lib.recherche import cherche, google_search
 from lib import sep
 from lib.calendrier import evenements, evenement_info, evenement_publie, combine
-from savoirs import configuration
+from savoirs.globals import configuration
 from forms import *
 from models import *
 
index 3f428e2..b38834a 100644 (file)
@@ -17,6 +17,7 @@ eggs = auf_references_client
     pytz
     django-timezones
     feedparser
+    django-roa
 
 [articles]
 recipe = buildout_script