X-Git-Url: http://git.auf.org/?p=auf_savoirs_en_partage_django.git;a=blobdiff_plain;f=auf_savoirs_en_partage%2Fchercheurs%2Fmodels.py;h=21462f815ffe4a268f629dcd8821f47b02ad1858;hp=35d17a41f32b9db80fb24ca2c02a8a354a9ed43b;hb=a2c6bb7226b901738528c5984547976a15b713cb;hpb=7d07a79f69250a08abdf2b9a98f60b788a4ec275 diff --git a/auf_savoirs_en_partage/chercheurs/models.py b/auf_savoirs_en_partage/chercheurs/models.py index 35d17a4..21462f8 100644 --- a/auf_savoirs_en_partage/chercheurs/models.py +++ b/auf_savoirs_en_partage/chercheurs/models.py @@ -1,5 +1,6 @@ # -*- encoding: utf-8 -*- from django.db import models +from django.db.models import Q from datamaster_modeles.models import * from auf_references_modeles.models import Thematique from savoirs.models import Discipline @@ -32,6 +33,26 @@ class Personne(models.Model): class Utilisateur(Personne): password = models.CharField(max_length=35, verbose_name = 'Mot de passe') +class ChercheurManager(models.Manager): + + def get_query_set(self): + return ChercheurQuerySet(self.model) + + def search(self, text): + return self.get_query_set().search(text) + +class ChercheurQuerySet(models.query.QuerySet): + + def search(self, text): + qs = self + for word in text.split(): + qs = qs.filter(Q(personne__nom__icontains=word) | + Q(personne__prenom__icontains=word) | + Q(expertise__icontains=word) | + Q(etablissement_autre_nom__icontains=word) | + Q(etablissement__nom__icontains=word)) + return qs + FONCTION_CHOICES = (('Professeur', 'Professeur'), ('Chercheur', 'Chercheur'), ('Chercheur_independant', 'Chercheur indépendant'), ('Doctorant', 'Doctorant')) class Chercheur(models.Model): id = models.AutoField(primary_key=True, db_column='id') @@ -79,6 +100,9 @@ class Chercheur(models.Model): date_creation = models.DateField(auto_now_add=True, db_column='date_creation') date_modification = models.DateField(auto_now=True, db_column='date_modification') + # Manager + objects = ChercheurManager() + def __unicode__(self): return u"%s %s" % (self.personne.nom.upper(), self.personne.prenom.title())