return render_to_response ("chercheurs/retrieve.html", \
Context (variables),
context_instance = RequestContext(request))
+
+def conversion(request):
+ return render_to_response ("chercheurs/conversion.html", \
+ Context (), \
+ context_instance = RequestContext(request))
--- /dev/null
+.clockbox, .calendarbox {border: 1px solid #CDCDCD; background-color: #EEEEEE; padding:6px 12px;}
+.calendarbox th {padding:0}
+.clockbox, .calendarbox a {text-decoration: none;}
+.calendarnav-previous {float: left;}
+.calendarnav-next {float: right;}
+.vDateField {margin-left: 8px;}
+.vDateField, .vTimeField {width: 100px !important;}
h1 a { display:block; width:144px; height:110px; text-indent:-99999px; background:url(../img/logo-agence-universitaire-de-la-francophonie.gif) no-repeat 0 0;border:none; text-decoration:none;}
h5 a { text-decoration:none; }
-#sep-recherche { }
+#sep-recherche {}
h2.slogan { position:absolute; top:53px; left:240px; font-size:3.4em; color:#3a3125; padding:0;font-family:"Myriad Pro", "Lucida Grande", sans-serif; font-weight:normal; letter-spacing:-1px; line-height:0.8em; z-index:1000; }
h2.slogan span { display:block; margin: .7em 0 0; font-size:0.55em; color:#97012c; letter-spacing:normal; line-height: 1.1;}
div.boite-recherche { z-index:1000; position:absolute; top:150px; left:240px; width:390px; height:90px; background: url(../img/recherche-background.gif) no-repeat 0 5px;}
label {
font-size: 12px;
}
-td
+td, th
{
vertical-align:middle;
}
font-size:12px;
color:red;
}
+
+
+.ressource-retrieve * {margin-top: 1em;}
+.ressource-retrieve .fiche {margin-top: 2em;}
+
+.le-titre{line-height: 24px;}
+
+.fiche, .original, .provenance {font-size: 80%; margin: 2px 0px;}
+.fiche {margin-top: 6px;}
+.fiche a, .original a, .provenance a{text-decoration: none;}
+++ /dev/null
-Thématique prioritaire 1 : Langue française, diversité culturelle et linguistique
-================================================================================
-
-Domaine de recherche "Langues pour le développement"
-----------------------------------------
-* réseau de chercheurs "Dynamique des langues et francophonie"
-* réseau de chercheurs "Étude du français en francophonie"
-* réseau de chercheurs "Lexicologie, Terminologie, Traduction"
-
-Domaine de recherche "Littératures au Sud"
-----------------------------------------
-* réseau de chercheurs "Littérature francophone d'Afrique subsaharienne et de l'océan Indien (CRITAOI)"
-* réseau de chercheurs "Littératures d'enfance"
-
-Domaine de recherche "Cultures"
-----------------------------------------
-* réseau de chercheurs "Diversité des expressions culturelles et artistiques, et mondialisations"
-
-
-Thématique prioritaire 2 : État de droit, démocratie et société"
-================================================================================
-
-Domaine de recherche "Cultures juridiques et gouvernance"
-----------------------------------------
-* réseau de chercheurs "Droits fondamentaux"
-* réseau de chercheurs "Droit de la santé"
-* réseau de chercheurs "Genre, droits et citoyenneté"
-
-Domaine de recherche "Figures de l'Etat"
-----------------------------------------
-* réseau de chercheurs "Droits fondamentaux"
-* réseau de chercheurs "Droit de la santé"
-
-Domaine de recherche "Francophonie institutionnelle, État(s) francophone(s) et francophonie"
-----------------------------------------
-* réseau de chercheurs "Droits fondamentaux"
-* réseau de chercheurs "Droit de la santé"
-* réseau de chercheurs "L'état de droit saisi par la philosophie"
-
-
-Thématique prioritaire 3 - Environnement, eau, énergie et climat
-================================================================================
-
-Domaine de recherche "Agronomie"
-----------------------------------------
-* réseau de chercheurs "Biotechnologies végétales"
-* réseau de chercheurs "Génie des procédés appliqué à l'agro-alimentaire"
-* réseau de chercheurs "Érosion et gestion conservatoire des eaux et des sols
-* réseau de chercheurs "Environnement et développement durable
-
-Domaine de recherche "Biodiversité"
-----------------------------------------
-* réseau de chercheurs "Environnement et développement durable"
-
-Domaine de recherche "Changements climatiques"
-----------------------------------------
-* réseau de chercheurs "Télédétection"
-
-Domaine de recherche "Énergie"
-----------------------------------------
-* réseau de chercheurs "Environnement et développement durable"
-
-Domaine de recherche "Ville durable"
-----------------------------------------
-* réseau de chercheurs "Environnement et développement durable
-
-
-Thématique prioritaire 4 "Développement durable et bien-être des populations
-================================================================================
-
-Domaine de recherche "Économie du développement"
-----------------------------------------
-* réseau de chercheurs "Entrepreneuriat"
-* réseau de chercheurs "Analyse économique et développement"
-
-Domaine de recherche "Santé et bien-être des populations"
-----------------------------------------
-* réseau de chercheurs "Maladies parasitaires et vectorielles"
-* réseau de chercheurs "Dynamiques démographiques et sociétés"
-
-
-Thématique prioritaire 5 : Économie de la connaissance
-================================================================================
-
-Domaine de recherche "Res@TICE"
-----------------------------------------
-* réseau de chercheurs "Réseau de chercheurs en technologies de l'information et de la communication pour l'enseignement"
-
-
--- /dev/null
+function customOpenCalendar(num) {
+ var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1+num)
+ var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName+num)
+ var inp = DateTimeShortcuts.calendarInputs[num];
+
+ // With no starting value, try to initialize it with calendar before
+ if (!inp.value) {
+ var before = num-1;
+ if (before >= 0) {
+ inp = DateTimeShortcuts.calendarInputs[before];
+ DateTimeShortcuts.calendarInputs[num].value = inp.value;
+ }
+ }
+
+ // Determine if the current value in the input has a valid date.
+ // If so, draw the calendar with that date's year and month.
+ if (inp.value) {
+ var date_parts = inp.value.split('-');
+ var year = date_parts[0];
+ var month = parseFloat(date_parts[1]);
+ if (year.match(/\d\d\d\d/) && month >= 1 && month <= 12) {
+ DateTimeShortcuts.calendars[num].drawDate(month, year);
+ }
+ }
+
+
+ // Recalculate the clockbox position
+ // is it left-to-right or right-to-left layout ?
+ if (getStyle(document.body,'direction')!='rtl') {
+ cal_box.style.left = findPosX(cal_link) + 17 + 'px';
+ }
+ else {
+ // since style's width is in em, it'd be tough to calculate
+ // px value of it. let's use an estimated px for now
+ // TODO: IE returns wrong value for findPosX when in rtl mode
+ // (it returns as it was left aligned), needs to be fixed.
+ cal_box.style.left = findPosX(cal_link) - 180 + 'px';
+ }
+ cal_box.style.top = findPosY(cal_link) - 75 + 'px';
+
+ cal_box.style.display = 'block';
+ addEvent(window.document, 'click', function() { DateTimeShortcuts.dismissCalendar(num); return true; });
+}
+
+function customAddClock(inp) {
+ var num = DateTimeShortcuts.clockInputs.length;
+ DateTimeShortcuts.clockInputs[num] = inp;
+
+ // Shortcut links (clock icon and "Now" link)
+ var shortcuts_span = document.createElement('span');
+ inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);
+ var now_link = document.createElement('a');
+ now_link.setAttribute('href', "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date().getHourMinuteSecond());");
+ now_link.appendChild(document.createTextNode(gettext('Now')));
+ var clock_link = document.createElement('a');
+ clock_link.setAttribute('href', 'javascript:DateTimeShortcuts.openClock(' + num + ');');
+ clock_link.id = DateTimeShortcuts.clockLinkName + num;
+ quickElement('img', clock_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/admin/icon_clock.gif', 'alt', gettext('Clock'));
+ shortcuts_span.appendChild(document.createTextNode('\240'));
+ shortcuts_span.appendChild(now_link);
+ shortcuts_span.appendChild(document.createTextNode('\240|\240'));
+ shortcuts_span.appendChild(clock_link);
+
+ // Create clock link div
+ //
+ // Markup looks like:
+ // <div id="clockbox1" class="clockbox module">
+ // <h2>Choose a time</h2>
+ // <ul class="timelist">
+ // <li><a href="#">Now</a></li>
+ // <li><a href="#">Midnight</a></li>
+ // <li><a href="#">6 a.m.</a></li>
+ // <li><a href="#">Noon</a></li>
+ // </ul>
+ // <p class="calendar-cancel"><a href="#">Cancel</a></p>
+ // </div>
+
+ var clock_box = document.createElement('div');
+ clock_box.style.display = 'none';
+ clock_box.style.position = 'absolute';
+ clock_box.className = 'clockbox module';
+ clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num);
+ document.body.appendChild(clock_box);
+ addEvent(clock_box, 'click', DateTimeShortcuts.cancelEventPropagation);
+
+ quickElement('h2', clock_box, gettext('Choose a time'));
+ time_list = quickElement('ul', clock_box, '');
+ time_list.className = 'timelist';
+ quickElement("a", quickElement("li", time_list, ""), "6:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '06:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "7:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '07:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "8:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '08:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "9:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '09:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "10:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '10:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "11:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '11:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "12:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '12:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "13:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '13:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "14:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '14:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "15:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '15:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "16:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '16:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "17:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '17:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "18:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '18:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "19:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '19:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "20:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '20:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "21:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '21:00:00');")
+ quickElement("a", quickElement("li", time_list, ""), "22:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '22:00:00');")
+
+ cancel_p = quickElement('p', clock_box, '');
+ cancel_p.className = 'calendar-cancel';
+ quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissClock(' + num + ');');
+ }
+
+DateTimeShortcuts.addClock = customAddClock;
+DateTimeShortcuts.openCalendar = customOpenCalendar;
admin.site.register(Actualite, ActualiteAdmin)
+class EvenementAdminForm(forms.ModelForm):
+ class Meta:
+ model = Evenement
+
+ def clean(self,):
+ cleaned_data = self.cleaned_data
+ debut = cleaned_data.get("debut")
+ fin = cleaned_data.get("fin")
+ if debut > fin:
+ raise forms.ValidationError("La date de fin ne doit pas être antérieure à la date de début")
+ return cleaned_data
+
class EvenementAdmin(admin.ModelAdmin):
+ form = EvenementAdminForm
list_filter = ('approuve',)
list_display = ('titre', 'debut', 'fin', 'lieu', 'approuve')
fields = ['titre',
# -*- encoding: utf-8 -*-
-import re
+import re, datetime
from django import forms
+from django.db.models import Q
+from django.db import models
+from django.contrib.admin import widgets
from datamaster_modeles.models import Thematique, Pays, Region
from models import Evenement, Discipline, Record, Actualite
from savoirs.lib.recherche import build_search_regexp
+from savoirs.admin import EvenementAdminForm
+import settings
+
+# Modifications custom aux champs Django
+
+class SEPDateField(forms.DateField):
+ """Un champ de date avec des valeurs par défaut un peu modifiées."""
+
+ def __init__(self, *args, **kwargs):
+ super(SEPDateField, self).__init__(self, *args, **kwargs)
+
+ # La classe "date" active le datepicker dans sep.js
+ # Nous recevons les dates en format français
+ format = '%d/%m/%Y'
+ self.widget = forms.DateInput(attrs={'class': 'date'}, format=format)
+ self.input_formats = [format,]
# Formulaires de recherche
"""Formulaire de recherche pour les actualités."""
q = forms.CharField(required=False, label="Mots-clés")
- date_min = forms.DateField(required=False, label="Depuis le",
- widget=forms.DateInput(attrs={'class': 'date'}),
- input_formats=['%d/%m/%Y'])
- date_max = forms.DateField(required=False, label="Jusqu'au",
- widget=forms.DateInput(attrs={'class': 'date'}),
- input_formats=['%d/%m/%Y'])
+ date_min = SEPDateField(required=False, label="Depuis le")
+ date_max = SEPDateField(required=False, label="Jusqu'au")
def get_query_set(self):
"""Retourne l'ensemble des actualités qui correspondent aux valeurs
"""Formulaire de recherche pour les événements."""
q = forms.CharField(required=False, label="Mots-clés")
+ titre = forms.CharField(required=False, label="Intitulé")
+ type = forms.ChoiceField(required=False, choices=(('', 'Tous'),)+Evenement.TYPE_CHOICES)
+ discipline = forms.ModelChoiceField(queryset=Discipline.objects.all(),
+ required=False, label="Discipline", empty_label="Toutes")
+ date_min = SEPDateField(required=False, label="Depuis le")
+ date_max = SEPDateField(required=False, label="Jusqu'au")
def get_query_set(self):
"""Retourne l'ensemble des événements qui correspondent aux valeurs
query = self.cleaned_data['q']
if query:
evenements = evenements.search(query)
+ titre = self.cleaned_data['titre']
+ if titre:
+ evenements = evenements.search_titre(titre)
+ type = self.cleaned_data['type']
+ if type:
+ evenements = evenements.filter(type=type)
+ discipline = self.cleaned_data['discipline']
+ if discipline:
+ evenements = evenements.filter(Q(discipline=discipline) | Q(discipline_secondaire=discipline))
+ date_min = self.cleaned_data['date_min']
+ if date_min:
+ evenements = evenements.filter(debut__gte=date_min)
+ date_max = self.cleaned_data['date_max']
+ if date_max:
+ evenements = evenements.filter(debut__lte=date_max)
return evenements
def get_search_regexp(self):
###
-class EvenementForm(forms.ModelForm):
+class FrontEndSplitDateTime(widgets.AdminSplitDateTime):
+ class Media:
+ extend=False
+ js = ("/jsi18n/",
+ settings.ADMIN_MEDIA_PREFIX + "js/core.js",
+ settings.ADMIN_MEDIA_PREFIX + "js/calendar.js",
+ settings.ADMIN_MEDIA_PREFIX + "js/admin/DateTimeShortcuts.js",
+ 'js/calendrier.js', )
+ css = {'all' : ('css/calendrier.css', )}
+
+class EvenementForm(EvenementAdminForm):
+ debut = forms.DateTimeField(widget=FrontEndSplitDateTime)
+ fin = forms.DateTimeField(widget=FrontEndSplitDateTime)
+
class Meta:
model = Evenement
exclude = ('approuve', 'uid')
import urllib, httplib, time, simplejson, pprint, math, re
from django.core.urlresolvers import reverse
from django.conf import settings
+from auf_savoirs_en_partage.backend_config import RESOURCES
from sep import SEP
from utils import smart_str
from savoirs.globals import configuration
-
def google_search (page, q, data):
params = {'q': q,
'rsz': 'large',
if len (uri) == 0:
uri = r.get ("source")
+ serveur = RESOURCES[r.get('server')]['url']
+
# Récupère la source si ce n'est pas une URL
source = r.get("source", None)
if source is not None and source.startswith('http'):
data['results'].append ({
'uri': uri,
+ 'getServeurURL': serveur,
'source' : source,
'id': r.get("id"), \
'title': hl(regexp, title),
Q(contact__icontains=word))
return qs
+ def search_titre(self, text):
+ qs = self
+ for word in text.split():
+ qs = qs.filter(titre__icontains=word)
+ return qs
+
class Evenement(models.Model):
+ TYPE_CHOICES = ((u'Colloque', u'Colloque'),
+ (u'Conférence', u'Conférence'),
+ (u'Appel à contribution', u'Appel à contribution'),
+ (u'Journée d\'étude', u'Journée d\'étude'),
+ (None, u'Autre'))
+
uid = models.CharField(max_length = 255, default = str(uuid.uuid1()))
approuve = models.BooleanField(default = False)
titre = models.CharField(max_length=255)
"Discipline secondaire",
blank = True, null = True)
mots_cles = models.TextField('Mots-Clés', blank = True, null = True)
- type = models.CharField(max_length = 255, choices = \
- (('Colloque', 'Colloque'),
- ('Conférence', 'Conférence'),
- ('Appel à contribution', 'Appel à contribution'),
- ('Journée d\'étude', 'Journée d\'étude'),
- (None, 'Autre')
- )) #TODO: choices
+ type = models.CharField(max_length=255, choices=TYPE_CHOICES)
fuseau = TimeZoneField(verbose_name = 'Fuseau horaire')
debut = models.DateTimeField(default = datetime.datetime.now)
fin = models.DateTimeField(default = datetime.datetime.now)
def __unicode__(self,):
return "[%s] %s" % (self.uid, self.titre)
+ def clean(self):
+ from django.core.exceptions import ValidationError
+ if self.debut > self.fin:
+ raise ValidationError('La date de fin ne doit pas être antérieure à la date de début')
+
def save(self, *args, **kwargs):
"""Sauvegarde l'objet dans django et le synchronise avec caldav s'il a été
approuvé"""
+ self.clean()
self.update_vevent()
super(Evenement, self).save(*args, **kwargs)
# Manager
objects = RecordManager()
+ def getServeurURL(self,):
+ """Retourne l'URL du serveur de provenance"""
+ return RESOURCES[self.server]['url']
+
def est_complet(self,):
"""teste si le record à toutes les données obligatoires"""
return self.disciplines.count() > 0 and \
Context ({'type': type,
'page': page,
'data': r,
+ 'search_regexp': None, # pour pouvoir utiliser la même template de résultat
'form': f,
'q': q}),
context_instance = RequestContext(request))
search_regexp=search_regexp,
nb_resultats=evenements.count()),
context_instance=RequestContext(request))
-
+
+def evenement_utilisation(request):
+ return render_to_response ("savoirs/evenement_utilisation.html", \
+ Context (), \
+ context_instance = RequestContext(request))
+
def evenement(request, id):
evenement = get_object_or_404(Evenement, pk=id)
return render_to_response("savoirs/evenement.html",
--- /dev/null
+{% extends "container_base.html" %}
+
+{% block contenu %}
+<h4>Répertoire des chercheurs - conversion</h4>
+
+<p class="texte" style="font-style=italic">
+Pour chaque <b>domaine de recherche</b>, la liste des anciens <b>réseaux de chercheurs</b> associés. Les chercheurs de ces anciens réseaux ont été associés automatiquement aux nouveaux domaines de recherche.
+</p>
+
+<h5>Thématique prioritaire 1 : Langue française, diversité culturelle et linguistique</h5>
+
+<div class="texte">
+ <h6>Domaine de recherche "Langues pour le développement"</h6>
+ <ul>
+ <li>réseau de chercheurs "Dynamique des langues et francophonie"</li>
+ <li>réseau de chercheurs "Étude du français en francophonie"</li>
+ <li>réseau de chercheurs "Lexicologie, Terminologie, Traduction"</li>
+ </ul>
+
+ <h6>Domaine de recherche "Littératures au Sud"</h6>
+ <ul>
+ <li>réseau de chercheurs "Littérature francophone d'Afrique subsaharienne et de l'océan Indien (CRITAOI)"</li>
+ <li>réseau de chercheurs "Littératures d'enfance"</li>
+ </ul>
+
+ <h6>Domaine de recherche "Cultures"</h6>
+ <ul>
+ <li>réseau de chercheurs "Diversité des expressions culturelles et artistiques, et mondialisations"</li>
+ </ul>
+
+</div>
+
+<h5>Thématique prioritaire 2 : État de droit, démocratie et société"</h5>
+
+<div class="texte">
+ <h6>Domaine de recherche "Cultures juridiques et gouvernance"</h6>
+ <ul>
+ <li>réseau de chercheurs "Droits fondamentaux"</li>
+ <li>réseau de chercheurs "Droit de la santé"</li>
+ <li>réseau de chercheurs "Genre, droits et citoyenneté"</li>
+ </ul>
+
+ <h6>Domaine de recherche "Figures de l'Etat"</h6>
+ <ul>
+ <li>réseau de chercheurs "Droits fondamentaux"</li>
+ <li>réseau de chercheurs "Droit de la santé"</li>
+ </ul>
+
+ <h6>Domaine de recherche "Francophonie institutionnelle, État(s) francophone(s) et francophonie"</h6>
+ <ul>
+ <li>réseau de chercheurs "Droits fondamentaux"</li>
+ <li>réseau de chercheurs "Droit de la santé"</li>
+ <li>réseau de chercheurs "L'état de droit saisi par la philosophie"</li>
+ </ul>
+</div>
+
+<h5>Thématique prioritaire 3 - Environnement, eau, énergie et climat</h5>
+
+<div class="texte">
+ <h6>Domaine de recherche "Agronomie"</h6>
+ <ul>
+ <li>réseau de chercheurs "Biotechnologies végétales"</li>
+ <li>réseau de chercheurs "Génie des procédés appliqué à l'agro-alimentaire"</li>
+ <li>réseau de chercheurs "Érosion et gestion conservatoire des eaux et des sols</li>
+ <li>réseau de chercheurs "Environnement et développement durable</li>
+ </ul>
+
+ <h6>Domaine de recherche "Biodiversité"</h6>
+ <ul>
+ <li>réseau de chercheurs "Environnement et développement durable"</li>
+ </ul>
+
+ <h6>Domaine de recherche "Changements climatiques"</h6>
+ <ul>
+ <li>réseau de chercheurs "Télédétection"</li>
+ </ul>
+
+ <h6>Domaine de recherche "Énergie"</h6>
+ <ul>
+ <li>réseau de chercheurs "Environnement et développement durable"</li>
+ </ul>
+
+ <h6>Domaine de recherche "Ville durable"</h6>
+ <ul>
+ <li>réseau de chercheurs "Environnement et développement durable</li>
+ </ul>
+</div>
+
+<h5>Thématique prioritaire 4 "Développement durable et bien-être des populations</h5>
+
+<div class="texte">
+ <h6>Domaine de recherche "Économie du développement"</h6>
+ <ul>
+ <li>réseau de chercheurs "Entrepreneuriat"</li>
+ <li>réseau de chercheurs "Analyse économique et développement"</li>
+ </ul>
+
+ <h6>Domaine de recherche "Santé et bien-être des populations"</h6>
+ <ul>
+ <li>réseau de chercheurs "Maladies parasitaires et vectorielles"</li>
+ <li>réseau de chercheurs "Dynamiques démographiques et sociétés"</li>
+ </ul>
+</div>
+
+<h5>Thématique prioritaire 5 : Économie de la connaissance</h5>
+
+<div class="texte">
+ <h6>Domaine de recherche "Res@TICE"</h6>
+ <ul>
+ <li>réseau de chercheurs "Réseau de chercheurs en technologies de l'information et de la communication pour l'enseignement"</li>
+ </ul>
+</div>
+{% endblock %}
Cet outil recense les universitaires (enseignants, chercheurs, doctorants) impliqués, ou souhaitant s'impliquer, dans les projets scientifiques appuyés par l'AUF. Il permet à la communauté scientifique de se mobiliser sur des projets en fonction de repères thématiques et/ou régionaux.
</p>
<p>
- Dans le cadre de la programmation quadriennale, la politique scientifique de l'AUF s'appuie sur la mise en œuvre de projets inter-universitaires régionaux ou internationaux. Les <i>réseaux de chercheurs</i> ne sont plus le critère d'organisation du répertoire (consulter la <a href="{{ MEDIA_URL }}docs/conversion.txt">table de passage</a>). Les chercheurs précisent leur discipline et choissent leurs centres d'intérêt dans des listes prédéfinies, et ajoutent des mots-clés pour affiner leur profil scientifique.
+ Dans le cadre de la programmation quadriennale, la politique scientifique de l'AUF s'appuie sur la mise en œuvre de projets inter-universitaires régionaux ou internationaux. Les <i>réseaux de chercheurs</i> ne sont plus le critère d'organisation du répertoire (consulter la <a href="{% url chercheurs.views.conversion %}">table de passage</a>). Les chercheurs précisent leur discipline et choissent leurs centres d'intérêt dans des listes prédéfinies, et ajoutent des mots-clés pour affiner leur profil scientifique.
</p>
</div>
<script type="text/javascript" src="{{ MEDIA_URL }}js/tabber.js"></script>
<script type="text/javascript" src="{{ MEDIA_URL }}js/pagination.js"></script>
<script type="text/javascript" src="{{ MEDIA_URL }}js/sep.js"></script>
+ {% block extra-script %}{% endblock %}
+
<link href="{{ MEDIA_URL }}css/global.css" rel="stylesheet" type="text/css" />
<link href="{{ MEDIA_URL }}css/tabber.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="{{ MEDIA_URL }}js/jquery/css/smoothness/jquery-ui-1.8rc3.custom.css" type="text/css" media="all" />
DD_belatedPNG.fix('.top, .bottom, #col-droite, #contenu, .resultats');
</script>
<![endif]-->
+ {% block extra-style %}{% endblock %}
</head>
<body>
{% block contenu %}
{% autopaginate actualites 10 %}
+
<h4>Actualités</h4>
+
<ul class="actions">
- <li><a href="/rss/actualites"><img src="/media/img/feed.png" /></a></li>
+ <li><a href="/rss/actualites"><img src="/media/img/feed.png" /></a></li>
</ul>
-<div class="contenu-wrapper">
- <form action="" method="get">
+<h5>Recherche</h5>
+
+<form action="" method="get" class="contenu-wrapper">
<table>
- {{ search_form.as_table }}
- <tr><th></th><td><input type="submit" value="Rechercher" /></td></tr>
+ {{ search_form.as_table }}
+ <tr><th></th><td><input type="submit" value="Rechercher" /></td></tr>
</table>
- </form>
- <p><strong>{{ nb_resultats }} actualités correspondant à votre recherche :</strong></p>
- <div class="centre">{% paginate %}</div>
- {% for actualite in actualites %}
- {% include "savoirs/actualite_resultat.html" %}
- {% endfor %}
- <div class="centre">{% paginate %}</div>
+</form>
+
+<h5>Résultats : {{ nb_resultats }} actualités correspondant à votre recherche</h5>
+
+<div class="contenu-wrapper">
+ <div class="centre">{% paginate %}</div>
+ {% for actualite in actualites %}
+ {% include "savoirs/actualite_resultat.html" %}
+ {% endfor %}
+ <div class="centre">{% paginate %}</div>
</div>
{% endblock %}
<h4>Résultats de recherche:</h4>
<div class="zone-texte">
- {% for r in data.results %}
- {% include "savoirs/resultat.html" %}
+ {% for r in data.results %}
+ {% with r as ressource %}
+ {% include "savoirs/ressource_resultat.html" %}
+ {% endwith %}
{% empty %}
<div class="resultatRecherche">
<h2>Aucun résultat trouvé</h2>
<h4>{{ evenement.titre }}</h4>
<div class="zone-texte">
- <table width="100%">
+ <table width="100%">
+ <tr>
+ <th>Type</th>
+ <td>{{ evenement.type }}</td>
+ </tr>
+ <tr>
+ <th>Discipline{% if evenement.discipline_secondaire %}s{% endif %}</th>
+ <td>{{ evenement.discipline }}
+ {% if evenement.discipline_secondaire %}, {{ evenement.discipline_secondaire }}{% endif %}
+ </td>
+ </tr>
<tr>
<th width="120px">Début</th>
- <td>{{ evenement.debut|date:"Y-m-d H:i" }} (UTC)</td>
+ <td>{{ evenement.debut|date:"d/m/Y H\hi" }} (UTC)</td>
</tr>
<tr>
<th>Fin</th>
- <td>{{ evenement.fin|date:"Y-m-d H:i" }} (UTC)</td>
+ <td>{{ evenement.fin|date:"d/m/Y H\hi" }} (UTC)</td>
</tr>
<tr>
<th>Description</th>
{% endif %}
{% if evenement.lieu %}
<tr>
- <th>Emplacement</th>
+ <th>Lieu</th>
<td>{{ evenement.lieu|linebreaksbr }}</td>
</tr>
{% endif %}
{% extends "container_base.html" %}
+{% block extra-script %}
+ {{ form.media.js }}
+{% endblock %}
+
+{% block extra-style %}
+ {{ form.media.css }}
+{% endblock %}
+
{% block contenu %}
<style>
input[type=text] { width: 250px; }
</style>
-<script>
- $(function () {
- $("#id_debut").datetime({ userLang: 'fr' });
- $("#id_fin").datetime({ userLang: 'fr' });
- });
-</script>
-
<div class="clearfix">
<h4>Soumettre un événement</h4>
<div class="zone-texte">
<div class="clearfix">
<h4>Soumettre un événement</h4>
<div class="zone-texte">
- <p>Votre évenement a bien été pris en compte, il sera approuvé par notre
- équipe bientot.</p>
+ <p>Votre événement a bien été pris en compte, il sera approuvé par notre
+ équipe bientôt.</p>
</div>
</div>
{% block contenu %}
{% autopaginate evenements 10 %}
<h4>Agenda</h4>
+
<ul class="actions">
- {% include "savoirs/evenement_actions.html" %}
- <li><a href="/rss/agenda"><img src="/media/img/feed.png" /></a></li>
+ {% include "savoirs/evenement_actions.html" %}
+ <li><a href="/rss/agenda"><img src="/media/img/feed.png" /></a></li>
</ul>
-<div class="contenu-wrapper">
- <form action="" method="get">
+<div class="texte">
+ <p>
+ La possibilité est offerte aux chercheurs d'annoncer sur ce portail un événement scientifique en l'inscrivant dans un agenda consultable par tous.
+ C'est aussi un outil de communication et de veille au service des universitaires et scientifiques francophones qui leur permet de se tenir informés des manifestations scientifiques et de répondre aux appels à communications et contributions ainsi qu'aux appels à projets.
+ </p>
+ <p>
+ Consulter les <a href="{% url savoirs.views.evenement_utilisation %}">conditions d'utilisation</a>.
+ </p>
+</div>
+
+<h5>Recherche</h5>
+ <form action="" method="get" class="contenu-wrapper">
<table>
- {{ search_form.as_table }}
- <tr><th></th><td><input type="submit" value="Rechercher" /></td></tr>
+ {{ search_form.as_table }}
+ <tr><th></th><td><input type="submit" value="Rechercher" /></td></tr>
</table>
- </form>
- <p><strong>{{ nb_resultats }} événements correspondant à votre recherche :</strong></p>
- <div class="centre">{% paginate %}</div>
- {% for evenement in evenements %}
- {% include "savoirs/evenement_resultat.html" %}
- {% endfor %}
- <div class="centre">{% paginate %}</div>
+ </form>
+
+<h5>Résultats : {{ nb_resultats }} événements correspondant à votre recherche</h5>
+
+<div class="contenu-wrapper">
+ <div class="centre">{% paginate %}</div>
+ {% for evenement in evenements %}
+ {% include "savoirs/evenement_resultat.html" %}
+ {% endfor %}
+ <div class="centre">{% paginate %}</div>
</div>
{% endblock %}
{% load search %}
<div class="resultatRecherche">
- <div class="la-date">{{ evenement.debut|date:"d F Y H:i" }}</div>
+ <div class="la-date">{{ evenement.debut|date:"d/m/Y H\hi" }}</div>
<div><a href="{% url savoirs.views.evenement evenement.pk %}" class="le-titre">{{ evenement.titre|highlight:search_regexp }}</a></div>
<div class="le-resume">{{ evenement.description|excerpt:search_regexp|highlight:search_regexp }}</div>
</div>
--- /dev/null
+{% extends "container_base.html" %}
+
+{% block contenu %}
+<h4>Agenda</h4>
+
+<ul class="actions">
+ {% include "savoirs/evenement_actions.html" %}
+ <li><a href="/rss/agenda"><img src="/media/img/feed.png" /></a></li>
+</ul>
+
+<h5>Conditions d'utilisation</h5>
+
+<div class="texte">
+ <p>
+ <b>Autorisations :</b><br />
+ <ul>
+ <li>L'agenda est librement consultable par tous les visiteurs du site Savoirs en partage.</li>
+ <li>En revanche, seuls les chercheurs inscrits au répertoire peuvent ajouter des événements et pourront ainsi proposer d'annoncer à la communauté universitaire francophone un événement scientifique en remplissant en ligne une « fiche évènement ».</li>
+ </ul>
+ </p>
+ <p>
+ <b>Critères de validation :</b><br />
+ La validation de l'annonce est automatique, selon deux critères :
+ <ul>
+ <li>L'inscription au répertoire tient lieu de validation : tous les évènements proposés par des chercheurs inscrits apparaissent aussitôt dans le répertoire.</li>
+ <li>Seules les annonces complètes sont publiées : voir les champs indispensables sur la fiche évènement en ligne.</li>
+ </ul>
+ </p>
+ <p>
+ <b>Type d'événement : </b><br />
+ L'agenda scientifique permet d'annoncer les évènements de type :
+ <ul>
+ <li>Colloque, conférence</li>
+ <li>Journée d'étude, séminaire</li>
+ <li>Appels à contribution ou à communication pour colloque ou publication</li>
+ <li>Appels à projet</li>
+ <li style="color:red">NB : les cours et formations ne peuvent pas faire l'objet d'une annonce dans cet agenda.</li>
+ </ul>
+ </p>
+ <p>
+ <b>Droits : </b><br />
+ <br />
+ L'AUF se réserve le droit de retenir ou non une annonce.
+ L'auteur d'une annonce autorise l'AUF à publier en ligne les informations données sur le formulaire d'annonce d'évènement.
+ L'auteur d'une annonce s'engage à détenir l'autorisation de publication en ligne des informations attachés à leur annonce.
+ </p>
+</div>
+{% endblock %}
<ul class="liste-de-l-accueil">
{% for evenement in evenements %}
<li>
- <span class="la-date">{{ evenement.debut|date:"d F Y H:i" }}</span>
+ <span class="la-date">{{ evenement.debut|date:"d/m/Y H\hi" }}</span>
<a href="{% url savoirs.views.evenement evenement.id %}" class="le-titre">{{ evenement.titre|truncatewords:20 }}</a>
<span class="le-resume">{{ evenement.description|truncatewords:20 }}</span>
</li>
{% load search %}
<div class="resultatRecherche">
- <a class="le-titre" href="{{ ressource.uri }}">{{ ressource.title|highlight:search_regexp }}</a>
+ <a class="le-titre" href="{% url savoirs.views.ressource_retrieve ressource.id %}">{{ ressource.title|highlight:search_regexp }}</a>
{% if ressource.creator %}
<div><span class="lbl">Auteur:</span> {{ ressource.creator|highlight:search_regexp }}</div>
{% endif %}
{% if ressource.description %}
<div class="resultatResume"><span class="lbl">Description:</span> {{ ressource.description|excerpt:search_regexp|highlight:search_regexp }}</div>
{% endif %}
+ <div class="fiche"><span>Fiche: </span><a href="{% url savoirs.views.ressource_retrieve ressource.id %}">{% url savoirs.views.ressource_retrieve ressource.id %}</a></div>
+ <div class="original"><span>Contenu original: </span><a target="_blank" href="{{ ressource.uri }}">{{ ressource.uri }}</a></div>
+ <div class="provenance"><span>Provenance: </span><a target="_blank" href="{{ ressource.getServeurURL }}">{{ ressource.getServeurURL }}</a></div>
</div>
+
+ {% comment %}
+ {% if user.is_authenticated %}
+ <a href="{{ r.admin_url}}" target="_blank">Modifier</a>
+ {% endif %}
+ {% endcomment %}
{% block contenu %}
<h4>Ressource</h4>
-<div class="zone-texte">
- {% with ressource as r %}
- {% include "savoirs/resultat.html" %}
- {% endwith %}
+<div class="zone-texte ressource-retrieve">
+
+ <a class="le-titre" href="{% url savoirs.views.ressource_retrieve ressource.id %}">{{ ressource.title }}</a>
+
+ {% if ressource.subject %}
+ <div><span class="lbl">Sujet:</span> {{ ressource.subject }}</div>
+ {% endif %}
+
+ {% if ressource.creator %}
+ <div><span class="lbl">Auteur:</span> {{ ressource.creator }}</div>
+ {% endif %}
+ {% if ressource.description %}
+ <div class="resultatResume"><span class="lbl">Description:</span> {{ ressource.description }}</div>
+ {% endif %}
+
+ {% if ressource.source %}
+ <div><span class="lbl">Source:</span> {{ ressource.source }}</div>
+ {% endif %}
+
+ {% if ressource.publisher %}
+ <div><span class="lbl">Editeur:</span> {{ ressource.publisher }}</div>
+ {% endif %}
+
+ {% if ressource.format %}
+ <div><span class="lbl">Format:</span> {{ ressource.format }}</div>
+ {% endif %}
+
+ {% if ressource.type %}
+ <div><span class="lbl">Type:</span> {{ ressource.type }}</div>
+ {% endif %}
+
+
+
+
+
+ <div class="fiche"><span>Fiche: </span><a href="{% url savoirs.views.ressource_retrieve ressource.id %}">{% url savoirs.views.ressource_retrieve ressource.id %}</a></div>
+ <div class="original"><span>Contenu original: </span><a target="_blank" href="{{ ressource.uri }}">{{ ressource.uri }}</a></div>
+ <div class="provenance"><span>Provenance: </span><a target="_blank" href="{{ ressource.getServeurURL }}">{{ ressource.getServeurURL }}</a></div>
+
+
+
</div>
{% endblock %}
+++ /dev/null
-<div class="resultatRecherche">
- <a class="le-titre" href="{{ r.uri }}">{{ r.title|safe }}</a>
- {% if r.creator %}
- <div><span class="lbl">Auteur:</span> {{ r.creator|safe }}</div>
- {% endif %}
- {% if r.content %}
- <div class="resultatResume"><span class="lbl">Description:</span> {{ r.content|safe }}</div>
- {% endif %}
-
- {% comment %}
- {% if r.contributors %}
- <div><span class="lbl">Contributeurs:</span> {{ r.contributors|safe }}</div>
- {% endif %}
- {% if r.subject %}
- <div><span class="lbl">Sujets:</span> {{ r.subject|safe }}</div>
- {% endif %}
- {% if r.source %}
- <div><span class="lbl">Source:</span> {{ r.source|safe }}</div>
- {% endif %}
- {% if r.modified %}
- <div><span class="lbl">Date de modification:</span> {{ r.modified }}</div>
- {% endif %}
- {% if r.isbn %}
- <div><span class="lbl">ISBN:</span> {{ r.isbn|safe }}</div>
- {% endif %}
- {% if user.is_authenticated %}
- <a href="{{ r.admin_url}}" target="_blank">Modifier</a>
- {% endif %}
- {% endcomment %}
-</div>
<h4>Sitothèque</h4>
-<div class="contenu-wrapper">
+<h5>Recherche</h5>
- <form method="get" action="">
+<form method="get" action="" class="contenu-wrapper">
<table id="repertoire_recherche">
- {{search_form.as_table}}
- <tr><th></th><td><input type="submit" class="bouton" value="Rechercher" /></td></tr>
+ {{search_form.as_table}}
+ <tr><th></th><td><input type="submit" class="bouton" value="Rechercher" /></td></tr>
</table>
- </form>
+</form>
+
+<h5>Résultats : {{nb_sites}} site{{ nb_sites|pluralize }} correspondant à votre recherche</h5>
- <p><strong>{{nb_sites}} site{{ nb_sites|pluralize }} correspondant à votre recherche :</strong></p>
- <div class="centre">{% paginate %}</div>
- {% for site in sites %}
- {% include "sites/resultat.html" %}
- {% endfor %}
- <div class="centre">{% paginate %}</div>
+<div class="contenu-wrapper">
+ <div class="centre">{% paginate %}</div>
+ {% for site in sites %}
+ {% include "sites/resultat.html" %}
+ {% endfor %}
+ <div class="centre">{% paginate %}</div>
</div>
{% endblock %}
urlpatterns = patterns(
'',
+
+ # traduction disponible dans le frontend sans permissons
+ url(r'^jsi18n/$', admin.site.i18n_javascript,),
+
url(r'^admin_tools/', include('admin_tools.urls')),
(r'^admin/', include(admin.site.urls)),
(r'^admin/confirmation/(.*)', 'savoirs.admin_views.confirmation'),
# agenda
(r'^agenda/$', 'savoirs.views.evenement_index'),
+ (r'^agenda/evenements/utilisation/$', 'savoirs.views.evenement_utilisation'),
(r'^agenda/evenements/creer/$', 'savoirs.views.evenement_ajout'),
(r'^agenda/evenements/moderer/$', 'savoirs.views.evenement_moderation'),
(r'^agenda/evenements/moderer/(.+)/accepter/$', 'savoirs.views.evenement_accepter'),
(r'^chercheurs/inscription/$', 'chercheurs.views.inscription'),
(r'^chercheurs/perso/$', 'chercheurs.views.perso'),
(r'^chercheurs/edit/$', 'chercheurs.views.edit'),
+ (r'^chercheurs/conversion$', 'chercheurs.views.conversion'),
# sites
(r'^sites/$', 'sitotheque.views.index'),