Пример #1
0
    def GET(self, bill_id, format=None):
        if bill_id == "" or bill_id == "index":
            i = web.input(page=0)
            return bill_list(format, int(i.page))
            
        try:
            b = db.select('bill', where='id=$bill_id', vars=locals())[0]
        except IndexError:
            raise web.notfound

        b.sponsorname = polname_by_id(b.sponsor)
        b.interest_group_support = interest_group_support(bill_id)
        b.votes_by_party = votes_by_party(bill_id)
        
        out = apipublish.publish({
          'uri': 'http://watchdog.net/b/' + bill_id,
          'type': 'Bill',
          'session title summary sponsor' : apipublish.identity,
          'interest_group_support': apipublish.table({
                'longname support': apipublish.identity}),
         }, [b], format)
        if out:
            return out
        return render.bill(b)
Пример #2
0
 def GET(self, polid, format=None):
     if polid != polid.lower():
         raise web.seeother('/p/' + polid.lower())
     
     if polid == "" or polid == "index":
         p = db.select(['politician'], order='district asc').list()
         
         out = apipublish.publish({
           'uri': apipublish.generic(lambda x: 'http://watchdog.net/p/' +
                                     x.id),
           'type': 'Politician',
           'district': lambda x: apipublish.URI('http://watchdog.net/us/' +
                                                x.lower()),
           'wikipedia': apipublish.URI,
          }, p, format)
         if out is not False:
             return out
         
         return render.pollist(p)
     
     try:
         p = db.select(['politician', 'district'],
                       what=("politician.*, "
                             "district.center_lat as d0, "
                             "district.center_lng as d1, "
                             "district.zoom_level as d2"),
                       where=('id=$polid AND '
                              'district.name = politician.district'),
                       vars=locals())[0]
     except IndexError:
         raise web.notfound
     
     p.fec_ids = [x.fec_id for x in db.select('politician_fec_ids', what='fec_id', 
       where='politician_id=$polid', vars=locals())]
     
     p.interest_group_rating = interest_group_ratings(polid)
     p.interest_group_table = interest_group_table(p.interest_group_rating)
     p.related_groups = group_politician_similarity(polid)
     p.sponsored_bills = bills_sponsored(polid)                           
         
     out = apipublish.publish({
       'uri': 'http://watchdog.net/p/' + polid,
       'type': 'Politician',
       'district': apipublish.URI('http://watchdog.net/us/' + p.district.lower()),
       'wikipedia photo_credit_url officeurl': apipublish.URI,
       'interest_group_rating': apipublish.table({
             'year groupname longname rating': apipublish.identity}),
       'related_groups' : apipublish.table({
             'longname': apipublish.identity,
             'num_bills_agreed': apipublish.generic(lambda g: g.agreed),
             'num_bills_voted': apipublish.generic(lambda g: g.total),
             'agreement_percent': apipublish.generic(lambda g: int(g.agreement * 100)),
             'group_politician_url': apipublish.generic(lambda g: 
                                     'http://watchdog.net/p/%s/%s' % (polid, g.id))
         }), 
         'sponsored_bills': apipublish.table({
             'id': apipublish.generic(lambda b: '%s. %s' % (b.type.upper(), b.number)),
             'session title introduced': apipublish.identity,
             'url': apipublish.generic(lambda b: 'http://watchdog.net/b/%s' % (b.id))
         }),
       'bioguideid opensecretsid govtrackid gender birthday firstname '
       'middlename lastname party religion photo_path '
       'photo_credit_text '
       'amt_earmark_requested n_earmark_requested n_earmark_received '
       'amt_earmark_received '
       'n_bills_introduced n_bills_enacted n_bills_debated '
       'n_bills_cosponsored '
       'icpsrid nominate predictability '
       'n_speeches words_per_speech '
       'fec_ids money_raised pct_spent pct_self '
       'pct_indiv pct_pac': apipublish.identity,
      }, [p], format)
     if out:
         return out
     
     return render.politician(p)