Example #1
0
def homepage_summary(request):
	# parse & validate parameters
	try:
		state = request.GET["district"][0:2]
		district = int(request.GET["district"][2:])
		if state not in statenames: raise Exception()
	except:
		return None

	from django.contrib.humanize.templatetags.humanize import ordinal

	# view
	people = Person.from_state_and_district(state, district)
	feeds = [p.get_feed() for p in people]
	events = Feed.get_events_for(feeds, 6)

	from events.templatetags.events_utils import render_event
	for i in range(len(events)):
		events[i] = render_event(events[i], feeds)
		if not isinstance(events[i]["date"], str):
			events[i]["date"] = events[i]["date"].strftime('%B %d, %Y') # can't JSON-serialize a datetime anyway, TODO handle date_has_no_time
		for k in list(events[i]): # remove anything else in case it is not JSON-serializable
			if k not in ('type', 'date', 'title', 'body_html', 'url'):
				del events[i][k]

	# form output
	return {
		"state": state,
		"district": district,
		"state_name": statenames[state],
		"district_ordinal": ordinal(district),
		"reps": [ { "link": p.get_absolute_url(), "name": p.name_and_title(), "title": p.role.get_description(), "photo": p.get_photo_url() } for p in people],
		"events": events,
	}
Example #2
0
def view_list(request, list_id):
    # Get all of the trackers in the list.
    from events.templatetags.events_utils import render_event
    sublist = get_object_or_404(SubscriptionList, public_id=list_id)
    feeds = list(sublist.trackers.all())

    # Get all of the user's notes.
    notes = TrackerNote.objects.filter(user=sublist.user, sublist=sublist).select_related('feed')
    notes = { # make a mapping from feed name to note
        note.feed.feedname: note
        for note in notes
    }

    trackers = [
            {
                "feed": f,
                "id": f.id,
                "name": f.feedname,
                "title": f.title,
                "link": f.link or "/events/something/" + f.slug,
                "thumbnail_image_url": f.thumbnail_image_url(),
                "noun": f.type_metadata().get("noun"),
                "description": f.description,
                "is_subscribable": f.is_subscribable,
                "recently": [
                    render_event(event, [f])
                    for event in f.get_events(1)
                ],
                "user_note": notes.get(f.feedname),
            }
            for f in feeds ]
    trackers.sort(key = lambda t : (t["name"].split(":")[0], t["title"]))
    return {
        "list": sublist,
        "list_trackers": trackers,
    }
Example #3
0
 def items(self):
     events = [render_event(item, feedlist) for item in Feed.get_events_for(feedlist, 25)]
     return [e for e in events if e != None]
Example #4
0
 def items(self):
     events = [
         render_event(item, feedlist)
         for item in Feed.get_events_for(feedlist, 25)
     ]
     return [e for e in events if e != None]