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, }
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, }
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]
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]