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")
objects = ChercheurManager()
all_objects = models.Manager()
- class Meta:
- permissions = (
- ("view_chercheur", "Peut visualiser la liste des chercheurs"),
- )
-
def __unicode__(self):
return u"%s %s" % (self.nom.upper(), self.prenom.title())
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)')
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)
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)
+
+ 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 = models.Manager()
+ objects = GroupeManager()
groupe_chercheur_objects = GroupeChercheurManager()
domaine_recherche_objects = DomaineRechercheManager()
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()
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'
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')
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})
+