Merge branch 'test'
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / scripts / sphinx.conf.py.in
CommitLineData
5212238e
EMS
1#!/usr/bin/python
2# coding: utf-8
3#
4# Ce script compose dynamiquement une configuration pour Sphinx. Il suffit
5# que le fichier soit exécutable pour que Sphinx exécute le script plutôt
6# que de le lire comme un fichier statique.
7#
8# Le manuel de sphinx se trouve au http://sphinxsearch.com/docs/manual-0.9.9.html
9
10import glob
11import os
12import sys
13
14sys.path[0:0] = [
15 "%(directory)s",
16 "%(directory)s/auf_savoirs_en_partage",
17 ]
18os.environ['DJANGO_SETTINGS_MODULE'] = 'production'
19for d in glob.glob("%(directory)s/eggs/*"):
20 sys.path[0:0] = [d,]
21for d in glob.glob("%(directory)s/parts/*"):
22 sys.path[0:0] = [d,]
23
24from django.conf import settings
25
26SQL_HOST = settings.DATABASE_HOST
27SQL_USER = settings.DATABASE_USER
28SQL_PASS = settings.DATABASE_PASSWORD
29SQL_DB = settings.DATABASE_NAME
4134daa0 30DATA_DIR = '/var/lib/sphinxsearch/data'
5212238e
EMS
31
32def multiline(s):
33 """Place un marqueur de continuation avant chaque saut de ligne."""
34 return s.replace("\n", "\\\n")
35
36def emit_source(name, sql_query, sql_query_info=None, sql_attr_multi=None, sql_attr_uint=None):
37 print '''
38source %%(name)s
39{
40 type = mysql
41 sql_host = %%(sql_host)s
42 sql_user = %%(sql_user)s
43 sql_pass = %%(sql_pass)s
44 sql_db = %%(sql_db)s
45 sql_query_pre = SET NAMES utf8
46 sql_query_pre = SET SESSION query_cache_type=OFF
47 sql_query = %%(sql_query)s
48''' %% dict(name=name, sql_host=SQL_HOST, sql_user=SQL_USER,
49 sql_pass=SQL_PASS, sql_db=SQL_DB, sql_query=multiline(sql_query))
50
51 if sql_query_info:
52 print ' sql_query_info = ' + sql_query_info
53
54 if sql_attr_multi:
55 for attr in sql_attr_multi:
56 print ' sql_attr_multi = uint %%s from field' %% attr
57
58 if sql_attr_uint:
59 for attr in sql_attr_uint:
60 print ' sql_attr_uint = ' + attr
61
62 print '}'
63
64def emit_index(name):
65 print '''
66index %%(name)s
67{
68 morphology = libstemmer_fr
69 charset_type = utf-8
70 charset_table = 0..9, A..Z->a..z, _, a..z, \\
71 U+C0->a, U+C2->a, U+E0->a, U+E2->a, \\
72 U+C7->c, U+E7->c, \\
73 U+C8->e, U+C9->e, U+CA->e, U+E8->e, U+E9->e, U+EA->e, U+EB->e, \\
74 U+CE->i, U+EE->i, U+EF->i, \\
75 U+D4->o, U+F4->o, \\
76 U+F9->u, U+FB->u, U+FC->u
77 source = %%(name)s
78 path = %%(path)s
42a890cf 79 stopwords = %(directory)s/auf_savoirs_en_partage/stopwords.txt
5212238e
EMS
80}''' %% dict(name=name, path=os.path.join(DATA_DIR, name))
81
4134daa0 82emit_source('savoirsenpartage_ressources',
5212238e
EMS
83 '''SELECT r.id AS id,
84 r.title AS title,
85 r.description AS description,
86 r.creator AS creator,
87 r.contributor AS contributor,
88 r.subject AS subject,
89 r.publisher AS publisher,
90 GROUP_CONCAT(DISTINCT d.nom_discipline) AS disciplines,
91 GROUP_CONCAT(DISTINCT d.id_discipline) AS discipline_ids,
92 GROUP_CONCAT(DISTINCT p.nom) AS pays,
93 GROUP_CONCAT(DISTINCT reg.nom) AS regions,
94 GROUP_CONCAT(DISTINCT reg.id) AS region_ids
95 FROM savoirs_record r
96 LEFT JOIN savoirs_record_disciplines rd ON rd.record_id = r.id
97 LEFT JOIN discipline d ON d.id_discipline = rd.discipline_id
98 LEFT JOIN savoirs_record_pays rp ON rp.record_id = r.id
99 LEFT JOIN ref_pays p ON p.id = rp.pays_id
100 LEFT JOIN savoirs_record_regions rr ON rr.record_id = r.id
101 LEFT JOIN ref_region reg ON reg.id = rr.region_id OR reg.id = p.region
102 LEFT JOIN savoirs_record_listsets rl ON rl.record_id = r.id
103 LEFT JOIN savoirs_listset l ON l.spec = rl.listset_id
104 WHERE r.validated AND (l.spec IS NULL OR l.validated)
105 GROUP BY r.id''',
106 sql_query_info='SELECT * from savoirs_record WHERE id=$id',
107 sql_attr_multi=['discipline_ids', 'region_ids']
108 )
109
4134daa0 110emit_source('savoirsenpartage_actualites',
5212238e
EMS
111 '''SELECT a.id_actualite AS id,
112 a.titre_actualite AS titre,
113 a.texte_actualite AS texte,
114 TO_DAYS(a.date_actualite) AS date,
115 GROUP_CONCAT(DISTINCT r.nom) AS regions,
116 GROUP_CONCAT(DISTINCT d.nom_discipline) AS disciplines
117 FROM actualite a
118 LEFT JOIN actualite_regions ar ON ar.actualite_id = a.id_actualite
119 LEFT JOIN ref_region r ON r.id = ar.region_id
120 LEFT JOIN actualite_disciplines ad ON ad.actualite_id = a.id_actualite
121 LEFT JOIN discipline d ON d.id_discipline = ad.discipline_id
122 WHERE a.visible_actualite
123 GROUP BY a.id_actualite''',
124 sql_query_info='SELECT * from actualite WHERE id_actualite=$id',
125 sql_attr_uint=['date']
126 )
127
4134daa0 128emit_source('savoirsenpartage_evenements',
5212238e
EMS
129 '''SELECT e.id AS id,
130 e.titre AS titre,
131 e.mots_cles AS mots_cles,
132 e.type AS type,
133 e.lieu AS lieu,
134 e.description AS description,
135 e.contact AS contact,
136 CONCAT_WS(',', d.nom_discipline, d2.nom_discipline) AS disciplines,
137 GROUP_CONCAT(DISTINCT r.nom) AS regions,
138 TO_DAYS(DATE(e.debut)) AS debut
139 FROM savoirs_evenement e
140 LEFT JOIN discipline d ON d.id_discipline = e.discipline_id
141 LEFT JOIN discipline d2 ON d2.id_discipline = e.discipline_secondaire_id
142 LEFT JOIN savoirs_evenement_regions er ON er.evenement_id = e.id
143 LEFT JOIN ref_region r ON r.id = er.region_id
144 WHERE e.approuve
145 GROUP BY e.id''',
146 sql_query_info='SELECT * from savoirs_evenement WHERE id=$id',
147 sql_attr_uint=['debut'])
148
4134daa0 149emit_source('savoirsenpartage_chercheurs',
5212238e
EMS
150 '''SELECT c.id AS id,
151 p.nom AS nom,
152 p.prenom AS prenom,
153 c.theme_recherche AS theme_recherche,
154 c.groupe_recherche AS groupe_recherche,
155 c.mots_cles AS mots_cles,
156 c.membre_association_francophone_details AS membre_association_francophone_details,
157 c.membre_reseau_institutionnel_details AS membre_reseau_institutionnel_details,
158 c.expert_oif_details AS expert_oif_details,
159 c.membre_instance_auf_details AS membre_instance_auf_details,
160 IFNULL(et.nom, etablissement_autre_nom) AS etablissement,
161 pays.nom AS pays,
162 pays.id AS pays_id,
163 r.nom AS region,
164 r.id AS region_id,
165 GROUP_CONCAT(DISTINCT d.nom_discipline) AS disciplines,
42a890cf 166 GROUP_CONCAT(DISTINCT pub.titre) AS publications,
5212238e
EMS
167 t.titre AS these,
168 GROUP_CONCAT(DISTINCT g.nom) AS groupes,
169 GROUP_CONCAT(DISTINCT ex.nom) AS expertises,
170 GROUP_CONCAT(DISTINCT g.id) AS groupe_ids,
171 TO_DAYS(c.date_modification) AS date_modification,
172 CASE pays WHEN 'Nord' THEN 1
173 WHEN 'Sud' THEN 2
174 END AS nord_sud,
175 CASE statut WHEN 'enseignant' THEN 1
176 WHEN 'etudiant' THEN 2
177 WHEN 'independant' THEN 3
178 END AS statut,
179 (ex.id IS NULL) AS expert
180 FROM chercheurs_chercheur c
181 INNER JOIN chercheurs_personne p ON c.personne = p.id
182 LEFT JOIN ref_etablissement et ON et.id = c.etablissement
183 LEFT JOIN ref_pays pays ON pays.id = IFNULL(et.pays, c.etablissement_autre_pays)
184 LEFT JOIN ref_region r ON pays.region = r.id
185 LEFT JOIN discipline d ON d.id_discipline = c.discipline
42a890cf
EMS
186 LEFT JOIN chercheurs_publication pub ON pub.chercheur_id = c.id
187 LEFT JOIN chercheurs_these t ON t.chercheur_id = c.id
5212238e
EMS
188 LEFT JOIN chercheurs_chercheurgroupe cg ON cg.chercheur = c.id
189 LEFT JOIN chercheurs_groupe g ON g.id = cg.groupe
190 LEFT JOIN chercheurs_expertise ex ON ex.chercheur_id = c.id
191 GROUP BY c.id''',
192 sql_query_info='SELECT * from chercheurs_chercheur WHERE id=$id',
193 sql_attr_multi=['groupe_ids'],
194 sql_attr_uint=['pays_id', 'region_id', 'nord_sud', 'date_modification', 'statut', 'expert'])
195
4134daa0 196emit_source('savoirsenpartage_sites',
5212238e
EMS
197 '''SELECT s.id AS id,
198 s.titre AS titre,
199 s.description AS description,
200 s.editeur AS editeur,
201 s.auteur AS auteur,
202 s.mots_cles AS mots_cles,
203 GROUP_CONCAT(DISTINCT d.nom_discipline) AS disciplines,
204 GROUP_CONCAT(DISTINCT p.nom) AS pays,
205 GROUP_CONCAT(DISTINCT p.id) AS pays_ids,
a611bc4a
EMS
206 GROUP_CONCAT(DISTINCT r.nom) AS regions,
207 TO_DAYS(s.date_maj) AS date_maj
5212238e
EMS
208 FROM sitotheque_site s
209 LEFT JOIN sitotheque_site_discipline sd ON sd.site_id = s.id
210 LEFT JOIN discipline d ON d.id_discipline = sd.discipline_id
211 LEFT JOIN ref_pays p ON p.id = s.pays
212 LEFT JOIN ref_region r ON r.id = p.region
213 GROUP BY s.id''',
214 'SELECT * FROM sitotheque_site WHERE id=$id',
a611bc4a
EMS
215 sql_attr_multi=['pays_ids'],
216 sql_attr_uint=['date_maj']
217 )
5212238e 218
4134daa0
EMS
219emit_index('savoirsenpartage_actualites')
220emit_index('savoirsenpartage_ressources')
221emit_index('savoirsenpartage_evenements')
222emit_index('savoirsenpartage_chercheurs')
223emit_index('savoirsenpartage_sites')