Esempio n. 1
0
    def getAnnouncements(self, limit=5, published_only=True):
        """See IHasAnnouncements."""

        # Create the SQL query.
        query = '1=1 '
        # Filter for published news items if necessary.
        if published_only:
            query += """ AND
                Announcement.date_announced <= timezone('UTC'::text, now()) AND
                Announcement.active IS TRUE
                """
        if IProduct.providedBy(self):
            if self.projectgroup is None:
                query += """ AND
                    Announcement.product = %s""" % sqlvalues(self.id)
            else:
                query += """ AND
                    (Announcement.product = %s OR Announcement.project = %s)
                    """ % sqlvalues(self.id, self.projectgroup)
        elif IProjectGroup.providedBy(self):
            query += """ AND
                (Announcement.project = %s OR Announcement.product IN
                    (SELECT id FROM Product WHERE project = %s))
                    """ % sqlvalues(self.id, self.id)
        elif IDistribution.providedBy(self):
            query += (' AND Announcement.distribution = %s' %
                      sqlvalues(self.id))
        elif IAnnouncementSet.providedBy(self):
            # There is no need to filter for pillar if we are looking for
            # all announcements.
            pass
        else:
            raise AssertionError('Unsupported announcement target')
        return Announcement.select(query, limit=limit)
Esempio n. 2
0
    def getAnnouncements(self, limit=5, published_only=True):
        """See IHasAnnouncements."""

        # Create the SQL query.
        query = '1=1 '
        # Filter for published news items if necessary.
        if published_only:
            query += """ AND
                Announcement.date_announced <= timezone('UTC'::text, now()) AND
                Announcement.active IS TRUE
                """
        if IProduct.providedBy(self):
            if self.project is None:
                query += """ AND
                    Announcement.product = %s""" % sqlvalues(self.id)
            else:
                query += """ AND
                    (Announcement.product = %s OR Announcement.project = %s)
                    """ % sqlvalues(self.id, self.project)
        elif IProjectGroup.providedBy(self):
            query += """ AND
                (Announcement.project = %s OR Announcement.product IN
                    (SELECT id FROM Product WHERE project = %s))
                    """ % sqlvalues (self.id, self.id)
        elif IDistribution.providedBy(self):
            query += (' AND Announcement.distribution = %s'
                % sqlvalues(self.id))
        elif IAnnouncementSet.providedBy(self):
            # There is no need to filter for pillar if we are looking for
            # all announcements.
            pass
        else:
            raise AssertionError, 'Unsupported announcement target'
        return Announcement.select(query, limit=limit)
Esempio n. 3
0
 def href(self):
     if IAnnouncementSet.providedBy(self.context):
         return urlappend(self.rooturl, 'announcements.atom')
     else:
         return urlappend(canonical_url(self.context, rootsite='feeds'),
                          'announcements.atom')
Esempio n. 4
0
 def title(self):
     if IAnnouncementSet.providedBy(self.context):
         return 'All Announcements'
     else:
         return 'Announcements for %s' % self.context.displayname
Esempio n. 5
0
 def href(self):
     if IAnnouncementSet.providedBy(self.context):
         return urlappend(self.rooturl, 'announcements.atom')
     else:
         return urlappend(canonical_url(self.context, rootsite='feeds'),
                          'announcements.atom')
Esempio n. 6
0
 def title(self):
     if IAnnouncementSet.providedBy(self.context):
         return 'All Announcements'
     else:
         return 'Announcements for %s' % self.context.displayname