예제 #1
0
파일: barcode_api.py 프로젝트: rams/barcode
 def lookup_badge_number_from_barcode(self, barcode_value):
     with Session() as session:
         try:
             result = get_badge_num_from_barcode(barcode_value)
             return {'badge_num': result['badge_num']}
         except Exception as e:
             return {'error': 'Couldn\'t look up barcode value: ' + str(e)}
예제 #2
0
 def with_check(*args, **kwargs):
     if kwargs.get('badge_num', None):
         try:
             int(kwargs['badge_num'])
         except Exception:
             kwargs['badge_num'] = get_badge_num_from_barcode(barcode_num=kwargs['badge_num'])['badge_num']
     return func(*args, **kwargs)
예제 #3
0
    def lookup_attendee_from_barcode(self, barcode_value, full=False):
        """
        Returns a single attendee using the barcode value from their badge.

        Takes the (possibly encrypted) barcode value as the first parameter.

        Optionally, "full" may be passed as the second parameter to return the
        complete attendee record, including departments, shifts, and food
        restrictions.
        """
        with Session() as session:
            badge_num = -1
            try:
                result = get_badge_num_from_barcode(barcode_value)
                badge_num = result['badge_num']
            except Exception as e:
                return {'error': "Couldn't look up barcode value: " + str(e)}

            # note: a descrypted barcode can yield to a valid badge#, but an attendee may not have that badge#

            query = session.query(Attendee).filter_by(badge_num=badge_num)
            fields, query = _attendee_fields_and_query(full, query)
            attendee = query.first()
            if attendee:
                return attendee.to_dict(fields)
            else:
                return {
                    'error':
                    'Valid barcode, but no attendee found with Badge #{}'.
                    format(badge_num)
                }
예제 #4
0
파일: __init__.py 프로젝트: rams/barcode
def test_encrypt_decrypt(cfg):
    badge_num = 3
    encrypted = generate_barcode_from_badge_num(badge_num=badge_num)

    assert len(encrypted) == 6
    decrypted = get_badge_num_from_barcode(barcode_num=encrypted)

    assert decrypted['badge_num'] == badge_num
    assert decrypted['event_id'] == config['secret']['barcode_event_id']
예제 #5
0
def test_encrypt_decrypt(cfg):
    badge_num = 3
    encrypted = generate_barcode_from_badge_num(badge_num=badge_num)

    assert len(encrypted) == 7
    decrypted = get_badge_num_from_barcode(barcode_num=encrypted)

    assert decrypted['badge_num'] == badge_num
    assert decrypted['event_id'] == config['secret']['barcode_event_id']
예제 #6
0
    def lookup_badge_number_from_barcode(self, barcode_value):
        """
        Returns a badge number using the barcode value from the given badge.

        Takes the (possibly encrypted) barcode value as a single parameter.
        """
        with Session() as session:
            try:
                result = get_badge_num_from_barcode(barcode_value)
                return {'badge_num': result['badge_num']}
            except Exception as e:
                return {'error': "Couldn't look up barcode value: " + str(e)}
예제 #7
0
파일: barcode_api.py 프로젝트: rams/barcode
    def lookup_attendee_from_barcode(self, barcode_value):
        with Session() as session:
            badge_num = -1
            try:
                result = get_badge_num_from_barcode(barcode_value)
                badge_num = result['badge_num']
            except Exception as e:
                return {'error': 'Couldn\'t look up barcode value: ' + str(e)}

            # note: a descrypted barcode can yield to a valid badge#, but an attendee may not have that badge#

            attendee = session.query(Attendee).filter_by(badge_num=badge_num).first()
            return attendee.to_dict(attendee_fields) if attendee else {'error': 'Valid barcode, but no attendee found with Badge #{}'.format(badge_num)}
예제 #8
0
파일: barcode.py 프로젝트: rams/barcode
    def get_badge_num_from_barcode(self, session, barcode):
        badge_num = -1
        msg = "Success."
        attendee = None
        try:
            # important note: a barcode encodes just a badge_number. however, that doesn't mean
            # that this badge# has been assigned to an attendee yet, so Attendee may come back as none
            # if they aren't checked in.
            badge_num = get_badge_num_from_barcode(barcode_num=barcode)['badge_num']
            attendee = session.attendee(badge_num=badge_num)
        except Exception as e:
            msg = "Failed: " + str(e)

        return {
            'message': msg,
            'badge_num': badge_num,
            'attendee_name': attendee.full_name if attendee else '',
            'attendee_id': attendee.id if attendee else -1,
        }
예제 #9
0
    def get_badge_num_from_barcode(self, session, barcode):
        badge_num = -1
        msg = "Success."
        attendee = None
        try:
            # important note: a barcode encodes just a badge_number. however, that doesn't mean
            # that this badge# has been assigned to an attendee yet, so Attendee may come back as none
            # if they aren't checked in.
            badge_num = get_badge_num_from_barcode(barcode_num=barcode)['badge_num']
            attendee = session.attendee(badge_num=badge_num)
        except Exception as e:
            msg = "Failed: " + str(e)

        return {
            'message': msg,
            'badge_num': badge_num,
            'attendee_name': attendee.full_name if attendee else '',
            'attendee_id': attendee.id if attendee else -1,
        }
예제 #10
0
파일: __init__.py 프로젝트: rams/barcode
def test_dontfail_wrong_event_id(cfg):
    badge_num = 78946
    barcode = generate_barcode_from_badge_num(badge_num=badge_num)
    decrytped = get_badge_num_from_barcode(barcode_num=barcode, event_id=2, verify_event_id_matches=False)
    assert decrytped['badge_num'] == badge_num
    assert decrytped['event_id'] == config['secret']['barcode_event_id']
예제 #11
0
파일: __init__.py 프로젝트: rams/barcode
def test_fail_wrong_event_id(cfg, monkeypatch):
    with pytest.raises(ValueError) as ex:
        barcode = generate_barcode_from_badge_num(badge_num=1, event_id=1)
        get_badge_num_from_barcode(barcode_num=barcode, event_id=2)
    assert "doesn't match our event ID" in str(ex.value)
예제 #12
0
def test_dontfail_wrong_event_id(cfg):
    badge_num = 78946
    barcode = generate_barcode_from_badge_num(badge_num=badge_num)
    decrytped = get_badge_num_from_barcode(barcode_num=barcode, event_id=2, verify_event_id_matches=False)
    assert decrytped['badge_num'] == badge_num
    assert decrytped['event_id'] == config['secret']['barcode_event_id']
예제 #13
0
def test_fail_wrong_event_id(cfg, monkeypatch):
    with pytest.raises(ValueError) as ex:
        barcode = generate_barcode_from_badge_num(badge_num=1, event_id=1)
        get_badge_num_from_barcode(barcode_num=barcode, event_id=2)
    assert "doesn't match our event ID" in str(ex.value)