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)}
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)
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) }
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']
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']
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)}
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)}
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, }
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']
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)