Groupe(s) de chercheur -> groupe(s) de chercheurs, pour les verbose_name
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / chercheurs / models.py
index 049a810..b0bf17b 100644 (file)
@@ -227,7 +227,7 @@ class Chercheur(Personne):
         help_text=u"Vous pouvez indiquer ici l'adresse de votre page personnelle dans votre réseau social préféré (e.g. Facebook, LinkedIn, Twitter, Identica, ...)"
     )
                                     
-    groupes = models.ManyToManyField('Groupe', through='ChercheurGroupe', blank=True, verbose_name='Domaines de recherche')
+    groupes = models.ManyToManyField('Groupe', through='ChercheurGroupe', related_name='membres', blank=True, verbose_name='Domaines de recherche')
     
     # Activités en francophonie
     membre_instance_auf = models.NullBooleanField(verbose_name="est ou a déjà été membre d'une instance de l'AUF")
@@ -310,6 +310,13 @@ class Chercheur(Personne):
     def get_absolute_url(self):
         return url('chercheur', kwargs={'id': self.id})
 
+class ChercheurVoir(Chercheur):
+
+    class Meta:
+        proxy = True
+        verbose_name = '(visualisation) chercheur'
+        verbose_name_plural = '(visualisation) chercheur'
+
 class Publication(models.Model):
     chercheur = models.ForeignKey(Chercheur, related_name='publications')
     auteurs = models.CharField(max_length=255, blank=True, verbose_name='auteur(s)')
@@ -360,11 +367,15 @@ class Expertise(models.Model):
     def __unicode__(self):
         return u"%s" % (self.nom)
     
-class GroupeChercheurManager(models.Manager):
+class GroupeManager(models.Manager):
+    def search(self, text):
+        return self.get_query_set().filter(nom__icontains=text)
+
+class GroupeChercheurManager(GroupeManager):
     def get_query_set(self):
         return super(GroupeChercheurManager, self).get_query_set().filter(groupe_chercheur=True)
 
-class DomaineRechercheManager(models.Manager):
+class DomaineRechercheManager(GroupeManager):
     def get_query_set(self):
         return super(DomaineRechercheManager, self).get_query_set().filter(groupe_chercheur=False)
 
@@ -378,10 +389,15 @@ class Groupe(models.Model):
     bulletin = models.URLField(max_length=255, null=True, blank=True,
                                     verbose_name='Bulletin')
     actif = models.BooleanField(editable = False, db_column='actif')
-    groupe_chercheur = models.BooleanField(default=False, verbose_name='Groupe de chercheur')
+    groupe_chercheur = models.BooleanField(default=False, editable=False, verbose_name='Groupe de chercheur')
 
+    responsables = models.ManyToManyField(User, related_name='responsable_groupe', verbose_name='responsables', blank=True)
 
-    objects = models.Manager()
+    recherches = models.ManyToManyField(Search, related_name='recherche_groupe', verbose_name='recherches prédéfinies', blank=True)
+
+    page_accueil = models.TextField(null=True, blank=True)
+
+    objects = GroupeManager()
     groupe_chercheur_objects = GroupeChercheurManager()
     domaine_recherche_objects = DomaineRechercheManager()
 
@@ -392,13 +408,21 @@ class Groupe(models.Model):
     def __unicode__(self):
         return u"%s" % (self.nom)
 
+    def get_absolute_url(self):
+        return url('groupe_retrieve', kwargs={'id': self.id})
+
+
 class GroupeChercheur(Groupe):
     objects = GroupeChercheurManager()
 
     class Meta:
         proxy = True
-        verbose_name = 'groupe de chercheur'
-        verbose_name_plural = 'groupes de chercheur'
+        verbose_name = 'groupe de chercheurs'
+        verbose_name_plural = 'groupes de chercheurs'
+
+    def save(self, *args, **kwargs):
+        self.groupe_chercheur = True
+        super(GroupeChercheur, self).save(*args, **kwargs)
 
 class DomaineRecherche(Groupe):
     objects = DomaineRechercheManager()
@@ -408,13 +432,17 @@ class DomaineRecherche(Groupe):
         verbose_name = 'domaine de recherche'
         verbose_name_plural = 'domaines de recherche'
 
+    def save(self, *args, **kwargs):
+        self.groupe_chercheur = False
+        super(DomaineRecherche, self).save(*args, **kwargs)
+
 class ChercheurGroupe(models.Model):
     id = models.AutoField(primary_key=True, db_column='id')
-    chercheur = models.ForeignKey('Chercheur', db_column='chercheur', editable=False)
-    groupe = models.ForeignKey('Groupe', db_column='groupe')
+    chercheur = models.ForeignKey('Chercheur', db_column='chercheur')
+    groupe = models.ForeignKey('Groupe', db_column='groupe', related_name="membership")
     date_inscription = models.DateField(auto_now_add=True)
     date_modification = models.DateField(auto_now=True)
-    actif = models.BooleanField(editable = False, db_column='actif')
+    actif = models.BooleanField(db_column='actif')
 
     class Meta:
         verbose_name = 'adhésion'
@@ -425,7 +453,7 @@ class ChercheurGroupe(models.Model):
 class ChercheurSearch(Search):
     nom_chercheur = models.CharField(max_length=100, blank=True, verbose_name='nom')
     domaine = models.ForeignKey(DomaineRecherche, blank=True, null=True, verbose_name='domaine de recherche')
-    groupe_chercheur = models.ForeignKey(GroupeChercheur, blank=True, null=True, verbose_name='groupe de chercheur')
+    groupe_chercheur = models.ForeignKey(GroupeChercheur, blank=True, null=True, verbose_name='groupe de chercheurs')
     groupe_recherche = models.CharField(max_length=100, blank=True, null=True, 
                                         verbose_name='groupe de recherche',
                                         help_text='ou Laboratoire, ou Groupement inter-universitaire')
@@ -505,3 +533,42 @@ class ChercheurSearch(Search):
                                                    chercheur.get_absolute_url())
             content += u'    %s\n\n' % chercheur.etablissement_display
         return content
+
+class GroupeSearch(Search):
+
+    class Meta:
+        verbose_name = 'recherche de groupe'
+        verbose_name_plural = 'recherches de groupes'
+
+    def run(self):
+        results = Groupe.objects
+        if self.q:
+            results = results.search(self.q)
+        return results.all()
+
+    #def url(self):
+    #    qs = self.query_string()
+    #    return url('groupes') + ('?' + qs if qs else '')
+
+    #def rss_url(self):
+    #    qs = self.query_string()
+    #    return url('rss_groupes') + ('?' + qs if qs else '')
+
+class Message(models.Model):
+
+    chercheur = models.ForeignKey('Chercheur', db_column='chercheur')
+    groupe = models.ForeignKey('Groupe', db_column='groupe')
+    titre = models.CharField(max_length=255)
+    contenu = models.TextField()
+
+    date_creation = models.DateTimeField(auto_now_add=True, db_column='date_creation')
+
+    class Meta:
+        ordering = ['-date_creation']
+
+    def __unicode__(self):
+        return u"%s - %s" % (self.chercheur, self.titre)
+
+    def get_absolute_url(self):
+        return url('groupe_messages', kwargs={'id': self.groupe.id})
+