Example #1
0
def retire_legislator(request, id):
    legislator = db.legislators.find_one({'_all_ids': id})
    if not legislator:
        raise Http404('No legislators found for id %r.' % id)

    # retire a legislator
    abbr = legislator[settings.LEVEL_FIELD]
    meta = metadata(abbr)

    term = meta['terms'][-1]['name']
    cur_role = legislator['roles'][0]
    if cur_role['type'] != 'member' or cur_role['term'] != term:
        raise ValueError('member missing role for %s' % term)

    end_date = request.POST.get('end_date')
    if not end_date:
        alert = dict(type='warning', title='Warning!',
                     message='missing end_date for retirement')
    else:
        cur_role['end_date'] = datetime.datetime.strptime(end_date, '%Y-%m-%d')
        db.legislators.save(legislator, safe=True)
        deactivate_legislators(term, abbr)
        alert = dict(type='success', title='Retired Legislator',
                     message='{0} was successfully retired.'.format(
                         legislator['full_name']))

    return render(request, 'billy/legislator_edit.html', {'leg': legislator,
                                                          'metadata': meta,
                                                          'alert': alert})
Example #2
0
def retire_legislator(request, id):
    legislator = db.legislators.find_one({'_all_ids': id})
    if not legislator:
        raise Http404('No legislators found for id %r.' % id)

    # retire a legislator
    abbr = legislator[settings.LEVEL_FIELD]
    meta = metadata(abbr)

    term = meta['terms'][-1]['name']
    cur_role = legislator['roles'][0]
    if cur_role['type'] != 'member' or cur_role['term'] != term:
        raise ValueError('member missing role for %s' % term)

    end_date = request.POST.get('end_date')
    if not end_date:
        alert = dict(type='warning',
                     title='Warning!',
                     message='missing end_date for retirement')
    else:
        cur_role['end_date'] = datetime.datetime.strptime(end_date, '%Y-%m-%d')
        db.legislators.save(legislator, safe=True)
        deactivate_legislators(term, abbr)
        alert = dict(type='success',
                     title='Retired Legislator',
                     message='{0} was successfully retired.'.format(
                         legislator['full_name']))

    return render(request, 'billy/legislator_edit.html', {
        'leg': legislator,
        'metadata': meta,
        'alert': alert
    })
Example #3
0
def retire_legislator(request, id):
    legislator = db.legislators.find_one({"_all_ids": id})
    if not legislator:
        raise Http404("No legislators found for id %r." % id)

    # retire a legislator
    abbr = legislator[settings.LEVEL_FIELD]
    meta = metadata(abbr)

    term = meta["terms"][-1]["name"]
    cur_role = legislator["roles"][0]
    if cur_role["type"] != "member" or cur_role["term"] != term:
        raise ValueError("member missing role for %s" % term)

    end_date = request.POST.get("end_date")
    if not end_date:
        alert = dict(type="warning", title="Warning!", message="missing end_date for retirement")
    else:
        cur_role["end_date"] = datetime.datetime.strptime(end_date, "%Y-%m-%d")
        db.legislators.save(legislator, safe=True)
        deactivate_legislators(term, abbr)
        alert = dict(
            type="success",
            title="Retired Legislator",
            message="{0} was successfully retired.".format(legislator["full_name"]),
        )

    return render(request, "billy/legislator_edit.html", {"leg": legislator, "metadata": meta, "alert": alert})
def retire_legislator(leg_id, date):
    legislator = db.legislators.find_one({'leg_id':leg_id})
    term = metadata(legislator['state'])['terms'][-1]['name']
    cur_role = legislator['roles'][0]
    if cur_role['type'] != 'member' or cur_role['term'] != term:
        raise ValueError('member missing role for %s' % term)

    date = datetime.datetime.strptime(date, '%Y-%m-%d')
    cur_role['end_date'] = date
    db.legislators.save(legislator, safe=True)
    print('deactivating legislator {0}'.format(leg_id))
    deactivate_legislators(legislator['state'], term)
Example #5
0
def retire_legislator(leg_id, date):
    legislator = db.legislators.find_one({"leg_id": leg_id})
    level = legislator["level"]
    abbr = legislator[level]

    term = metadata(abbr)["terms"][-1]["name"]
    cur_role = legislator["roles"][0]
    if cur_role["type"] != "member" or cur_role["term"] != term:
        raise ValueError("member missing role for %s" % term)

    date = datetime.datetime.strptime(date, "%Y-%m-%d")
    cur_role["end_date"] = date
    db.legislators.save(legislator, safe=True)
    print("deactivating legislator {0}".format(leg_id))
    deactivate_legislators(term, abbr, level)
Example #6
0
def test_deactivate_legislators():
    # Previous term
    leg1 = {'_type': 'person', 'state': 'ex',
            'roles': [{'type': 'member', 'chamber': 'upper', 'state': 'ex',
                       'term': '2009-2010', 'district': '1',
                       'party': 'Democrat',
                       'start_date': None, 'end_date': None}],
            'active': True,
            'district': '1',
            'chamber': 'upper',
            'party': 'Democrat'}
    leg1_roles = leg1['roles']

    # Current term, no end date
    leg2 = {'_type': 'person', 'state': 'ex',
            'roles': [{'type': 'member', 'chamber': 'upper', 'state': 'ex',
                       'term': '2011-2012', 'district': '2',
                       'party': 'Democrat',
                       'start_date': None, 'end_date': None}],
            'active': True,
            'district': '2',
            'chamber': 'upper',
            'party': 'Democrat'}
    leg2_roles = leg2['roles']

    id1 = utils.insert_with_id(leg1)
    id2 = utils.insert_with_id(leg2)

    legislators.deactivate_legislators('ex', '2011-2012')

    leg1 = db.legislators.find_one({'_id': id1})
    assert leg1['active'] == False
    assert 'chamber' not in leg1
    assert 'district' not in leg1
    assert 'party' not in leg1
    assert leg1['roles'] == []
    assert leg1['old_roles']['2009-2010'] == leg1_roles

    leg2 = db.legislators.find_one({'_id': id2})
    assert leg2['active'] == True
    assert leg2['chamber'] == 'upper'
    assert leg2['district'] == '2'
    assert leg2['party'] == 'Democrat'
    assert leg2['roles'] == leg2_roles
    assert 'old_roles' not in leg2
Example #7
0
def test_deactivate_legislators():
    # Previous term
    leg1 = {
        '_type':
        'person',
        'state':
        'ex',
        'roles': [{
            'type': 'member',
            'chamber': 'upper',
            'state': 'ex',
            'term': 'T1',
            'district': '1',
            'party': 'Democrat',
            'start_date': None,
            'end_date': None
        }],
        'active':
        True,
        'district':
        '1',
        'chamber':
        'upper',
        'party':
        'Democrat'
    }
    leg1_roles = leg1['roles']

    # Current term, no end date
    leg2 = {
        '_type':
        'person',
        'state':
        'ex',
        'roles': [{
            'type': 'member',
            'chamber': 'upper',
            'state': 'ex',
            'term': 'T2',
            'district': '2',
            'party': 'Democrat',
            'start_date': None,
            'end_date': None
        }],
        'active':
        True,
        'district':
        '2',
        'chamber':
        'upper',
        'party':
        'Democrat'
    }
    leg2_roles = leg2['roles']

    # Current term, with end date
    leg3 = {
        '_type':
        'person',
        'state':
        'ex',
        'roles': [{
            'type': 'member',
            'chamber': 'upper',
            'state': 'ex',
            'term': 'T2',
            'district': '3',
            'party': 'Democrat',
            'start_date': None,
            'end_date': datetime.datetime(2012, 1, 1)
        }]
    }
    leg3_roles = leg3['roles']

    id1 = utils.insert_with_id(leg1)
    id2 = utils.insert_with_id(leg2)
    id3 = utils.insert_with_id(leg3)

    legislators.deactivate_legislators('T2', 'ex')

    leg1 = db.legislators.find_one({'_id': id1})
    assert leg1['active'] is False
    assert 'chamber' not in leg1
    assert 'district' not in leg1
    assert 'party' not in leg1
    assert leg1['roles'] == []
    assert leg1['old_roles']['T1'] == leg1_roles

    leg2 = db.legislators.find_one({'_id': id2})
    assert leg2['active'] is True
    assert leg2['chamber'] == 'upper'
    assert leg2['district'] == '2'
    assert leg2['party'] == 'Democrat'
    assert leg2['roles'] == leg2_roles
    assert 'old_roles' not in leg2

    leg3 = db.legislators.find_one({'_id': id3})
    assert leg3['active'] is False
    assert 'chamber' not in leg3
    assert 'district' not in leg3
    assert 'party' not in leg3
    assert leg3['roles'] == []
    assert leg3['old_roles']['T2'] == leg3_roles
Example #8
0
def test_import_legislator():
    leg1 = {
        '_type':
        'person',
        'state':
        'ex',
        'full_name':
        'T. Rex Hagan',
        'roles': [{
            'role': 'member',
            'chamber': 'upper',
            'state': 'ex',
            'term': 'T1',
            'district': '1',
            'party': 'Democrat',
            'start_date': None,
            'end_date': None
        }]
    }

    leg2 = {
        '_type':
        'person',
        'state':
        'ex',
        'full_name':
        'T. Rex Hagan',
        'roles': [{
            'role': 'member',
            'chamber': 'upper',
            'state': 'ex',
            'term': 'T2',
            'district': '1',
            'party': 'Democrat',
            'start_date': None,
            'end_date': None
        }]
    }

    leg3 = {
        '_type':
        'person',
        'state':
        'ex',
        'full_name':
        'Joe Heck',
        'roles': [{
            'role': 'member',
            'chamber': 'upper',
            'state': 'ex',
            'term': 'T1',
            'district': '2',
            'party': 'Democrat',
            'start_date': None,
            'end_date': None
        }]
    }

    leg4 = {
        '_type':
        'person',
        'state':
        'ex',
        'full_name':
        'Bob Dold',
        'roles': [{
            'role': 'member',
            'chamber': 'upper',
            'state': 'ex',
            'term': 'T2',
            'district': '2',
            'party': 'Democrat',
            'start_date': None,
            'end_date': None
        }]
    }

    leg5 = {
        '_type':
        'person',
        'state':
        'ex',
        'full_name':
        'Bob Dold',
        'roles': [{
            'role': 'member',
            'chamber': 'upper',
            'state': 'ex',
            'term': 'T0',
            'district': '2',
            'party': 'Democrat',
            'start_date': None,
            'end_date': None
        }]
    }

    leg6 = {
        '_type':
        'person',
        'state':
        'ex',
        'full_name':
        'Grey Sun',
        'roles': [{
            'role': 'member',
            'chamber': 'upper',
            'state': 'ex',
            'term': 'T0',
            'district': '9',
            'party': 'Libertarian',
            'start_date': None,
            'end_date': None
        }]
    }

    # T. Rex
    legislators.import_legislator(leg1)
    assert db.legislators.count() == 1

    # T. Rex's second role
    legislators.import_legislator(leg2)
    t_rex = db.legislators.find_one({'_scraped_name': 'T. Rex Hagan'})
    assert db.legislators.count() == 1
    assert t_rex['roles'][0]['term'] == 'T2'
    assert 'T1' in t_rex['old_roles']

    # Joe Heck in district 2
    legislators.import_legislator(leg3)
    assert db.legislators.count() == 2

    # Bob Dold replaces Joe Heck
    legislators.import_legislator(leg4)
    assert db.legislators.count() == 3

    # import a prior role for Bob Dold
    legislators.import_legislator(leg5)
    assert db.legislators.count() == 3
    dold = db.legislators.find_one({'_scraped_name': 'Bob Dold'})
    assert 'T0' in dold['old_roles']
    assert dold['roles'][0]['term'] == 'T2'

    # Grey Sun - old role only
    legislators.import_legislator(leg6)
    # moves the role to old _roles
    legislators.deactivate_legislators('T2', 'ex')
    # reimport should find him
    legislators.import_legislator(leg6)
    assert db.legislators.count() == 4

    # reimport all, make sure nothing changes
    for l in [leg1, leg2, leg3, leg4, leg5, leg6]:
        legislators.import_legislator(l)
        assert db.legislators.count() == 4
Example #9
0
def test_deactivate_legislators():
    # Previous term
    leg1 = {'_type': 'person', 'state': 'ex',
            'roles': [{'type': 'member', 'chamber': 'upper',
                       'state': 'ex',
                       'term': 'T1', 'district': '1',
                       'party': 'Democrat',
                       'start_date': None, 'end_date': None}],
            'active': True,
            'district': '1',
            'chamber': 'upper',
            'party': 'Democrat'}
    leg1_roles = leg1['roles']

    # Current term, no end date
    leg2 = {'_type': 'person', 'state': 'ex',
            'roles': [{'type': 'member', 'chamber': 'upper',
                       'state': 'ex', 'term': 'T2', 'district': '2',
                       'party': 'Democrat',
                       'start_date': None, 'end_date': None}],
            'active': True,
            'district': '2',
            'chamber': 'upper',
            'party': 'Democrat'}
    leg2_roles = leg2['roles']

    # Current term, with end date
    leg3 = {'_type': 'person', 'state': 'ex',
            'roles': [{'type': 'member', 'chamber': 'upper',
                       'state': 'ex', 'term': 'T2', 'district': '3',
                       'party': 'Democrat',
                       'start_date': None,
                       'end_date': datetime.datetime(2012, 1, 1)}]}
    leg3_roles = leg3['roles']

    id1 = utils.insert_with_id(leg1)
    id2 = utils.insert_with_id(leg2)
    id3 = utils.insert_with_id(leg3)

    legislators.deactivate_legislators('T2', 'ex')

    leg1 = db.legislators.find_one({'_id': id1})
    assert leg1['active'] is False
    assert 'chamber' not in leg1
    assert 'district' not in leg1
    assert 'party' not in leg1
    assert leg1['roles'] == []
    assert leg1['old_roles']['T1'] == leg1_roles

    leg2 = db.legislators.find_one({'_id': id2})
    assert leg2['active'] is True
    assert leg2['chamber'] == 'upper'
    assert leg2['district'] == '2'
    assert leg2['party'] == 'Democrat'
    assert leg2['roles'] == leg2_roles
    assert 'old_roles' not in leg2

    leg3 = db.legislators.find_one({'_id': id3})
    assert leg3['active'] is False
    assert 'chamber' not in leg3
    assert 'district' not in leg3
    assert 'party' not in leg3
    assert leg3['roles'] == []
    assert leg3['old_roles']['T2'] == leg3_roles
Example #10
0
def test_import_legislator():
    leg1 = {'_type': 'person', 'state': 'ex', 'full_name': 'T. Rex Hagan',
            'roles': [{'role': 'member', 'chamber': 'upper', 'state': 'ex',
                       'term': 'T1', 'district': '1',
                       'party': 'Democrat',
                       'start_date': None, 'end_date': None}]}

    leg2 = {'_type': 'person', 'state': 'ex', 'full_name': 'T. Rex Hagan',
            'roles': [{'role': 'member', 'chamber': 'upper', 'state': 'ex',
                       'term': 'T2', 'district': '1',
                       'party': 'Democrat',
                       'start_date': None, 'end_date': None}]}

    leg3 = {'_type': 'person', 'state': 'ex', 'full_name': 'Joe Heck',
            'roles': [{'role': 'member', 'chamber': 'upper', 'state': 'ex',
                       'term': 'T1', 'district': '2',
                       'party': 'Democrat',
                       'start_date': None, 'end_date': None}]}

    leg4 = {'_type': 'person', 'state': 'ex', 'full_name': 'Bob Dold',
            'roles': [{'role': 'member', 'chamber': 'upper', 'state': 'ex',
                       'term': 'T2', 'district': '2',
                       'party': 'Democrat',
                       'start_date': None, 'end_date': None}]}

    leg5 = {'_type': 'person', 'state': 'ex', 'full_name': 'Bob Dold',
            'roles': [{'role': 'member', 'chamber': 'upper', 'state': 'ex',
                       'term': 'T0', 'district': '2',
                       'party': 'Democrat',
                       'start_date': None, 'end_date': None}]}

    leg6 = {'_type': 'person', 'state': 'ex', 'full_name': 'Grey Sun',
            'roles': [{'role': 'member', 'chamber': 'upper', 'state': 'ex',
                       'term': 'T0', 'district': '9',
                       'party': 'Libertarian',
                       'start_date': None, 'end_date': None}]}

    # T. Rex
    legislators.import_legislator(leg1)
    assert db.legislators.count() == 1

    # T. Rex's second role
    legislators.import_legislator(leg2)
    t_rex = db.legislators.find_one({'_scraped_name': 'T. Rex Hagan'})
    assert db.legislators.count() == 1
    assert t_rex['roles'][0]['term'] == 'T2'
    assert 'T1' in t_rex['old_roles']

    # Joe Heck in district 2
    legislators.import_legislator(leg3)
    assert db.legislators.count() == 2

    # Bob Dold replaces Joe Heck
    legislators.import_legislator(leg4)
    assert db.legislators.count() == 3

    # import a prior role for Bob Dold
    legislators.import_legislator(leg5)
    assert db.legislators.count() == 3
    dold = db.legislators.find_one({'_scraped_name': 'Bob Dold'})
    assert 'T0' in dold['old_roles']
    assert dold['roles'][0]['term'] == 'T2'

    # Grey Sun - old role only
    legislators.import_legislator(leg6)
    # moves the role to old _roles
    legislators.deactivate_legislators('T2', 'ex')
    # reimport should find him
    legislators.import_legislator(leg6)
    assert db.legislators.count() == 4

    # reimport all, make sure nothing changes
    for l in [leg1, leg2, leg3, leg4, leg5, leg6]:
        legislators.import_legislator(l)
        assert db.legislators.count() == 4