def _get_session(term, session): """wrapper around number_to_session(term, session) so that it raises a Http404 for invalid session|term """ try: session = number_to_leg(term, session) except AttributeError: raise Http404('Invalid Legislative Session') return session
def bill_overview(request, term, session, bill_number): """ Individual Bill Detail shows sponsors, versions, actions(past and pending) with a link to show text and comments and also an option to view the Arizona Statues that this legislation affects when applicable """ session = number_to_leg(term, session) bill = get_object_or_404(Bill, number=bill_number, session__name=session) # TODO replace this with real analytics bill.page_views_count += 1 page_view, c = bill.page_views.get_or_create(date=datetime.date.today()) page_view.views += 1 page_view.save() bill.save() ################################### # Basic Bill Information ################################### c = {} c['title'] = "%s - %s" % (bill.number, bill.title) c['bill'] = bill # just need the name and document_id or each summary # sorting by date should be replaced by date added for the new session # need to make it so that the user can select a summary to read c['summaries'] = bill.documents.filter(doc_type="summary") if 'summary' in request.GET and request.GET['summary']: pass for summary in c['summaries']: if summary.doc_id: c['text'] = get_summary(summary) break else: c['text'] = '' c['sponsors'] = Sponsor.objects.filter(bill=bill).order_by('type') c['chamber'] = {'upper': 'Senate', 'lower': 'House'}[bill.chamber] c['other_chamber'] = {'upper': 'House', 'lower': 'Senate'}[bill.chamber] try: c['latest_action'] = bill.actions.latest() except ObjectDoesNotExist: c['latest_action'] = None c['latest_action'] = _render_action_description(c['latest_action'], bill) ################################### # Charts and User Actions ################################### actions = bill.actions.all().order_by('order') simi = [] for act in actions: action = {} action['start'] = act.date.strftime('%Y %m %d') action['title'] = act.action action['description'] = act.action simi.append(action) c['actions'] = actions c['graph_actions'] = json.dumps(simi) c['bill_graph'] = json.dumps(bill.get_bill_stats()) c['support'] = json.dumps(bill.get_user_support()) c['tracker_form'] = AddTrackerShortForm( initial={'object_id': bill.id, 'content_type': ContentType.objects.get(model="bill").id, 'where_to': request.get_full_path()} ) ################################### # bill tracking ################################### if request.user.is_authenticated(): tracked = request.user.profile.is_tracking(bill.id) if tracked: c['is_tracking'] = True elif 'trackers' in request.COOKIES: if bill.id in request.COOKIES['trackers']: c['is_tracking'] = True return render_to_response('bill.html', RequestContext(request, c))