Example #1
0
    default_filter = models.ForeignKey(Discipline, null=True, blank=True, related_name='watcher')
    tags = TagField()
    occupation = models.CharField(max_length=2, choices=OCCUPATIONS, blank=True)
    institution = models.ForeignKey(Institution, verbose_name=_("Current Institution"), null=True, blank=True, related_name='researchers')
    grad_institution = models.ForeignKey(Institution, verbose_name=_("Graduate Institution"), null=True, blank=True, related_name='graduates')
    
    ### denormalization
    # followers
    followers_count = models.PositiveIntegerField(default=0, editable=False)
    
    class Meta:
        verbose_name = _("researcher")
        verbose_name_plural = _("researchers")
    
    def __unicode__(self):
        return self.name
    
    def get_absolute_url(self):
        return reverse("researcher_detail", kwargs={
            "username": self.user.username
        })

object_feeds.register(Researcher)

def create_researcher(sender, instance=None, **kwargs):
    if instance is None:
        return
    researcher, created = Researcher.objects.get_or_create(user=instance)

post_save.connect(create_researcher, sender=User)
Example #2
0
        return self.contributors.filter(user=user).exists()
    
    def user_can_read(self, user):
        if self.private and not self.user_is_contributor(user):
            return False
        return True
    
    def resolve(self, resolution_paper):
        if resolution_paper in self.papers:
            self.resolution = resolution_paper
            self.resolved = True
            self.save()
            return resolution_paper
        return False

object_feeds.register(Issue)

class IssueContributor(models.Model):
    
    issue = models.ForeignKey(Issue, related_name = "contributors", verbose_name = _("issue"))
    user = models.ForeignKey(User, related_name = "issues", verbose_name = _("user"))
    
    contributions = models.PositiveIntegerField(_("contributions"), default=1)
    
    away = models.BooleanField(_("away"), default=False)
    away_message = models.CharField(_("away_message"), max_length=500)
    away_since = models.DateTimeField(_("away since"), default=datetime.now)
    
    class Meta:
        unique_together = [("user", "issue")]
Example #3
0
    
    def __unicode__(self):
        return self.title
    
    def get_absolute_url(self):
        return reverse("paper_detail", kwargs={"slug": self.slug})
    
    @property
    def current(self):
        return self.revisions.latest()
    
    @property
    def revision(self, rev_number):
        return self.revisions.get(revision=rev_number)

object_feeds.register(Paper)

class PaperRevision(models.Model):
    """ A change in Paper. """
    
    paper = models.ForeignKey(Paper, verbose_name=_(u'Paper'), related_name="revisions")
    editor = models.ForeignKey(User, verbose_name=_(u'Editor'), null=True)
    revision = models.IntegerField(_(u"Revision Number"))
    comment = models.CharField(_(u"Editor comment"), max_length=255, blank=True)
    
    content = models.TextField(_(u"Content"))

    created = models.DateTimeField(_(u"Modified at"), default=datetime.now)
    
    yeas = models.PositiveIntegerField(default=0, editable=False)
    nays = models.PositiveIntegerField(default=0, editable=False)
Example #4
0
    page_specific = models.BooleanField(default=False, help_text=_('Specific to this page?'))
    page = models.CharField(max_length=255, blank=True)
    
    # denormalize votes
    yeas = models.PositiveIntegerField(default=0, editable=False)
    nays = models.PositiveIntegerField(default=0, editable=False)
    votes = models.PositiveIntegerField(default=0, editable=False)
    
    class Meta:
        ordering = ['-created']
    
    def save(self):
        try:
            self.status
        except:
            try:
                default = Status.objects.get(default=True)
            except:
                default = Status.objects.filter()[0]
            self.status = default
        super(Feedback, self).save()
    
    def get_absolute_url(self):
        return reverse("feedback_detail", kwargs={"object_id": self.id})
    
    def __unicode__(self):
        return self.title
    
object_feeds.register(Feedback)

Example #5
0
    level = models.PositiveIntegerField(null=True, blank=True)
    
    def __unicode__(self):
        return self.name
    
    @models.permalink
    def get_absolute_url(self):
        return ('discipline_detail', (), {'slug': self.slug})
    
    def researcher_is_member(self, researcher):
        if self == researcher.expertise:
            return True
        else:
            return False

try:
    mptt.register(Discipline)
except mptt.AlreadyRegistered:
    pass

object_feeds.register(Discipline)


from django.db.models.signals import pre_save, post_save

def discipline_feed_title_update(sender, instance, created, **kwargs):
    instance.feed.title = instance.name
    instance.feed.save()

post_save.connect(discipline_feed_title_update, sender=Discipline)
Example #6
0
    
    def __unicode__(self):
        return "Discussion Summary of %s" % self.content_object_title
    
    def get_absolute_url(self):
        return reverse("summary_detail", kwargs={"summary_id": self.id})
    
    @property
    def current(self):
        return self.revisions.latest()
    
    @property
    def revision(self, rev_number):
        return self.revisions.get(revision=rev_number)

object_feeds.register(Summary)


class SummaryRevision(models.Model):
    """ A change in Summary. """
    
    summary = models.ForeignKey(Summary, verbose_name=_(u'Summary'), related_name="revisions")
    editor = models.ForeignKey(User, verbose_name=_(u'Editor'), null=True)
    revision = models.IntegerField(_(u"Revision Number"))
    comment = models.CharField(_(u"Editor comment"), max_length=255, blank=True)
    
    content = models.TextField(_(u"Content"))

    created = models.DateTimeField(_(u"Modified at"), default=datetime.now)
    
    yeas = models.PositiveIntegerField(default=0, editable=False)