Example #1
0
    def get(self, year="current"):
        """year can be 'all', 'current', '2002', '2011', etc."""

        self.response.headers["Content-Type"] = "text/calendar; charset=utf-8"

        # find from cache
        q = Cache.gql("WHERE site = :site AND year = :year", site="nuscs", year=year)
        c = q.get()
        if c:
            self.response.out.write(c.data)
            return

        # generate now
        cal = Calendar()
        cal.add("prodid", "-//NUS CS Seminars//ronhuang.org//")
        cal.add("version", "2.0")
        cal.add("X-WR-CALNAME", "NUS CS Seminars")
        cal.add("X-WR-CALDESC", "Seminars are open to the public, and usually held in the School's Seminar Room.")

        q = Seminar.all().order("start")
        if year != "all":
            yn = None
            try:
                yn = int(year)
            except:
                pass

            if yn:
                # return events within that year
                q = q.filter("start >=", datetime(yn, 1, 1, tzinfo=SGT))
                q = q.filter("start <", datetime(yn + 1, 1, 1, tzinfo=SGT))
            else:  # default
                # return a year of events.
                q = q.filter("start >=", datetime.now(SGT) - timedelta(days=366))

        for s in q:
            event = Event()
            event["uid"] = s.url
            event.add("summary", s.title)
            event.add("dtstart", s.start)
            event.add("dtend", s.end)
            event.add("dtstamp", s.stamp)
            event.add("location", s.venue)
            event.add("url", s.url)
            event.add("description", s.speaker)
            event.add("categories", "seminar")
            event.add("class", "PUBLIC")

            cal.add_component(event)

        # generated data
        data = cal.as_string()
        encoding = chardet.detect(data)["encoding"]
        data = unicode(data, encoding)

        # store in datastore
        q = Cache.gql("WHERE site = :site AND year = :year", site="nuscs", year=year)
        c = q.get()
        if c:
            c.data = data
        else:
            c = Cache(site="nuscs", data=data, year=year)
        c.put()

        self.response.out.write(data)
Example #2
0
def save_profile_cache(screen_name, cache_data):
    clear_profile_cache(screen_name)
    cache = Cache(name='profile:' + screen_name.lower(),
                  value=encoder.encode(cache_data))
    cache.put()
Example #3
0
def save_profile_cache(screen_name, cache_data):
	clear_profile_cache(screen_name)
	cache = Cache(name='profile:' + screen_name.lower(), value=encoder.encode(cache_data))
	cache.put()