コード例 #1
0
 def test_basic(self, dept, trusted_role):
     a = Attendee(
         staffing=True,
         requested_depts=[dept],
         ribbon=c.VOLUNTEER_RIBBON,
         shifts=[Shift()])
     a.dept_memberships = [DeptMembership(
         attendee=a,
         department=dept,
         dept_roles=[trusted_role])]
     a.assigned_depts = [dept]
     a.unset_volunteering()
     assert not a.staffing
     assert not a.has_role_somewhere
     assert not a.requested_depts
     assert not a.dept_memberships
     assert not a.shifts
     assert a.ribbon == ''
コード例 #2
0
ファイル: test_attendee.py プロジェクト: magfest/ubersystem
 def test_basic(self, dept, trusted_role):
     a = Attendee(
         staffing=True,
         requested_depts=[dept],
         ribbon=c.VOLUNTEER_RIBBON,
         shifts=[Shift()])
     a.dept_memberships = [DeptMembership(
         attendee=a,
         department=dept,
         dept_roles=[trusted_role])]
     a.assigned_depts = [dept]
     a.unset_volunteering()
     assert not a.staffing
     assert not a.has_role_somewhere
     assert not a.requested_depts
     assert not a.dept_memberships
     assert not a.shifts
     assert a.ribbon == ''
コード例 #3
0
 def test_staffing_still_trusted_assigned(self, dept, shiftless_dept):
     """
     After applying staffing adjustements:
     Any depts you are both trusted and assigned to should remain unchanged
     """
     a = Attendee(staffing=True)
     dept_memberships = [
         DeptMembership(attendee=a,
                        attendee_id=a.id,
                        department=dept,
                        department_id=dept.id,
                        is_dept_head=True),
         DeptMembership(attendee=a,
                        attendee_id=a.id,
                        department=shiftless_dept,
                        department_id=shiftless_dept.id,
                        dept_roles=[DeptRole()])
     ]
     a.assigned_depts = [dept, shiftless_dept]
     a.dept_memberships_with_role = dept_memberships
     a._staffing_adjustments()
     assert a.assigned_to(dept) and a.trusted_in(dept)
     assert a.assigned_to(shiftless_dept) and a.trusted_in(shiftless_dept)
コード例 #4
0
ファイル: test_attendee.py プロジェクト: magfest/ubersystem
 def test_staffing_still_trusted_assigned(self, dept, shiftless_dept):
     """
     After applying staffing adjustements:
     Any depts you are both trusted and assigned to should remain unchanged
     """
     a = Attendee(staffing=True)
     dept_memberships = [
         DeptMembership(
             attendee=a,
             attendee_id=a.id,
             department=dept,
             department_id=dept.id,
             is_dept_head=True),
         DeptMembership(
             attendee=a,
             attendee_id=a.id,
             department=shiftless_dept,
             department_id=shiftless_dept.id,
             dept_roles=[DeptRole()])]
     a.assigned_depts = [dept, shiftless_dept]
     a.dept_memberships_with_role = dept_memberships
     a._staffing_adjustments()
     assert a.assigned_to(dept) and a.trusted_in(dept)
     assert a.assigned_to(shiftless_dept) and a.trusted_in(shiftless_dept)
コード例 #5
0
def duplicate_badge_num_preconditions():
    group_id = None
    leader_id = None
    with Session() as session:
        leader = Attendee(
            first_name='Fearless',
            last_name='Leader',
            email='*****@*****.**',
            zip_code='21211',
            ec_name='Nana Fearless',
            ec_phone='555-555-1234',
            cellphone='555-555-2345',
            birthdate=date(1964, 12, 30),
            registered=localized_now(),
            paid=c.PAID_BY_GROUP,
            ribbon='',
            staffing=True,
            badge_type=c.PSEUDO_GROUP_BADGE)

        group = Group(name='Too Many Badges!')
        group.attendees = [leader]
        group.leader = leader
        session.add(leader)
        session.add(group)
        assert session.assign_badges(
            group,
            15,
            new_badge_type=c.STAFF_BADGE,
            new_ribbon_type='',
            paid=c.NEED_NOT_PAY) is None
        session.flush()

        group_id = group.id
        leader_id = leader.id

    with Session() as session:
        console = Department(name='DEPT_01', description='DEPT_01')
        leader = session.query(Attendee).get(leader_id)
        leader.paid = c.NEED_NOT_PAY
        leader.badge_printed_name = 'Fearmore'
        leader.badge_type = c.STAFF_BADGE
        leader.assigned_depts = [console]

        group = session.query(Group).get(group_id)
        group.auto_recalc = False

    for i in range(10):
        with Session() as session:
            console = session.query(Department).filter_by(name='DEPT_01').one()
            group = session.query(Group).get(group_id)

            is_staff = (i < 9)
            params = {
                'first_name': 'Doubtful',
                'last_name': 'Follower{}'.format(i),
                'email': 'fearsome{}@example.com'.format(i),
                'zip_code': '21211',
                'ec_name': 'Nana Fearless',
                'ec_phone': '555-555-1234',
                'cellphone': '555-555-321{}'.format(i),
                'birthdate': date(1964, 12, 30),
                'registered': localized_now(),
                'staffing': is_staff,
                'badge_status': str(c.COMPLETED_STATUS),
                'badge_printed_name': 'Fears{}'.format(i) if is_staff else '',
                'assigned_depts': [console] if is_staff else ''}

            attendee = group.unassigned[0]
            attendee.apply(params, restricted=False)

        with Session() as session:
            group = session.query(Group).get(group_id)
            badge_nums = [a.badge_num for a in group.attendees]
            # SQLite doesn't support deferred constraints, so our test database
            # doesn't actually have a unique constraint on the badge_num
            # column. So we have to manually check for duplicate badge numbers.
            assert_unique(badge_nums)

    yield group_id

    with Session() as session:
        session.query(Group).filter(Group.id == group_id).delete(
            synchronize_session=False)
コード例 #6
0
def duplicate_badge_num_preconditions():
    group_id = None
    leader_id = None
    with Session() as session:
        leader = Attendee(first_name='Fearless',
                          last_name='Leader',
                          email='*****@*****.**',
                          zip_code='21211',
                          ec_name='Nana Fearless',
                          ec_phone='555-555-1234',
                          cellphone='555-555-2345',
                          birthdate=date(1964, 12, 30),
                          registered=localized_now(),
                          paid=c.PAID_BY_GROUP,
                          ribbon='',
                          staffing=True,
                          badge_type=c.PSEUDO_GROUP_BADGE)

        group = Group(name='Too Many Badges!')
        group.attendees = [leader]
        group.leader = leader
        session.add(leader)
        session.add(group)
        assert session.assign_badges(group,
                                     15,
                                     new_badge_type=c.STAFF_BADGE,
                                     new_ribbon_type='',
                                     paid=c.NEED_NOT_PAY) is None
        session.flush()

        group_id = group.id
        leader_id = leader.id

    with Session() as session:
        console = Department(name='DEPT_01', description='DEPT_01')
        leader = session.query(Attendee).get(leader_id)
        leader.paid = c.NEED_NOT_PAY
        leader.badge_printed_name = 'Fearmore'
        leader.badge_type = c.STAFF_BADGE
        leader.assigned_depts = [console]

        group = session.query(Group).get(group_id)
        group.auto_recalc = False

    for i in range(10):
        with Session() as session:
            console = session.query(Department).filter_by(name='DEPT_01').one()
            group = session.query(Group).get(group_id)

            is_staff = (i < 9)
            params = {
                'first_name': 'Doubtful',
                'last_name': 'Follower{}'.format(i),
                'email': 'fearsome{}@example.com'.format(i),
                'zip_code': '21211',
                'ec_name': 'Nana Fearless',
                'ec_phone': '555-555-1234',
                'cellphone': '555-555-321{}'.format(i),
                'birthdate': date(1964, 12, 30),
                'registered': localized_now(),
                'staffing': is_staff,
                'badge_status': str(c.COMPLETED_STATUS),
                'badge_printed_name': 'Fears{}'.format(i) if is_staff else '',
                'assigned_depts': [console] if is_staff else ''
            }

            attendee = group.unassigned[0]
            attendee.apply(params, restricted=False)

        with Session() as session:
            group = session.query(Group).get(group_id)
            badge_nums = [a.badge_num for a in group.attendees]
            # SQLite doesn't support deferred constraints, so our test database
            # doesn't actually have a unique constraint on the badge_num
            # column. So we have to manually check for duplicate badge numbers.
            assert_unique(badge_nums)

    yield group_id

    with Session() as session:
        session.query(Group).filter(Group.id == group_id).delete(
            synchronize_session=False)