Пример #1
0
 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
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
    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
    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
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
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)