def create_ta_data(): unit = Unit.objects.get(slug='cmpt') s = Semester.objects.get(name=TEST_SEMESTER).next_semester() admin = Person.objects.get(userid='dixon') CourseDescription(unit=unit, description="Office/Marking", labtut=False).save() CourseDescription(unit=unit, description="Office/Marking/Lab", labtut=True).save() post = TAPosting(semester=s, unit=unit) post.opens = s.start - datetime.timedelta(100) post.closes = s.start - datetime.timedelta(20) post.set_salary([972,972,972,972]) post.set_scholarship([135,340,0,0]) post.set_accounts([Account.objects.get(account_number=12345).id, Account.objects.get(account_number=12346).id, Account.objects.get(account_number=12347).id, Account.objects.get(account_number=12348).id]) post.set_start(s.start) post.set_end(s.end) post.set_deadline(s.start - datetime.timedelta(10)) post.set_payperiods(7.5) post.set_contact(admin.id) post.set_offer_text("This is **your** TA offer.\n\nThere are various conditions that are too numerous to list here.") post.save() offerings = list(post.selectable_offerings()) for p in Person.objects.filter(userid__endswith='grad'): app = TAApplication(posting=post, person=p, category=random.choice(['GTA1','GTA2']), current_program='CMPT', sin='123456789', base_units=random.choice([3,4,5])) app.save() will_ta = [] for i,o in enumerate(random.sample(offerings, 5)): t = random.choice(TAKEN_CHOICES)[0] e = random.choice(EXPER_CHOICES)[0] cp = CoursePreference(app=app, course=o.course, rank=i+1, taken=t, exper=e) cp.save() if random.random() < 0.07*(5-i): will_ta.append(o) if will_ta and random.random() < 0.75: c = TAContract(status=random.choice(['NEW','OPN','ACC'])) c.first_assign(app, post) c.save() for o in will_ta: tac = TACourse(course=o, contract=c, bu=app.base_units) tac.description = tac.default_description() tac.save()
def test_application(self): p = Person.objects.get(emplid=210012345) s = Semester.objects.get(name="1077") unit = Unit.objects.get(label="CMPT") d = CourseDescription(unit=unit, description="Lab TA", labtut=True) d.save() d = CourseDescription(unit=unit, description="Office Hours", labtut=False) d.save() #Create posting that closes in a long time so no applications are late posting = TAPosting(semester=s, unit=unit, opens=date(2007, 9, 4), closes=date(2099, 9, 4)) posting.config['accounts'] = [a.id for a in Account.objects.all()] posting.config['start'] = date(2100, 10, 10) posting.config['end'] = date(2101, 10, 10) posting.config['deadline'] = date(2099, 9, 20) posting.save() #Create application for posting as well as campus and course preferences app = TAApplication(posting=posting, person=p, category="UTA", base_units=2, sin="123123123", course_load="No Other Courses") app.save() cp1 = CampusPreference(app=app, campus="BRNBY", pref="PRF") cp2 = CampusPreference(app=app, campus="SURRY", pref="NOT") cp1.save() cp2.save() c1 = Course.objects.get(subject="CMPT", number="120") course1 = CoursePreference(app=app, course=c1, taken="YES", exper="FAM", rank=1) course1.save() #Login a ta admin client = Client() userid = Role.objects_fresh.filter(role="TAAD")[0].person.userid client.login_user(userid) #Check that assign_tas page has two courses in it, one with someone who has applied url = reverse('ta:assign_tas', kwargs={ 'post_slug': posting.slug, }) response = basic_page_tests(self, client, url) self.assertEqual(response.status_code, 200) self.assertContains( response, '<a href="/ta/%s/%s"' % (posting.slug, self.co1.slug)) self.assertContains( response, '<a href="/ta/%s/%s"' % (posting.slug, self.co2.slug)) self.assertContains(response, '<td class="num">1</td>') #Check the view application page to make sure it displays properly url = reverse('ta:view_application', kwargs={ 'post_slug': posting.slug, 'userid': app.person.userid, }) response = basic_page_tests(self, client, url) self.assertEqual(response.status_code, 200) self.assertContains(response, '<a href="mailto:%[email protected]"' % (app.person.userid)) self.assertContains(response, '<td>%s</td>' % (c1)) #Check the assign_bu page to make sure applicant appears url = reverse('ta:assign_bus', kwargs={ 'post_slug': posting.slug, 'course_slug': self.co1.slug, }) response = basic_page_tests(self, client, url) self.assertEqual(response.status_code, 200) self.assertContains( response, '<a href="/ta/%s/application/%s"' % (posting.slug, app.person.userid)) #Assign bu's to the applicant and make sure they show up on assign_ta page post_data = { 'form-TOTAL_FORMS': 2, 'form-INITIAL_FORMS': 1, 'form-MAX_NUM_FORMS': '', 'form-0-rank': 1, 'form-0-bu': 2.0, } response = client.post(url, post_data, follow=True) self.assertEqual(response.status_code, 200) self.assertContains(response, '<td class="num">2.00</td>')
def create_ta_ra(): """ Build test data for the ta and ra modules. """ from ta.models import CourseDescription, TAPosting, TAApplication, CoursePreference, TAContract, TACourse from ta.models import TAKEN_CHOICES, EXPER_CHOICES from ra.models import Account, Project, SemesterConfig, RAAppointment from ra.models import HIRING_CATEGORY_CHOICES, HIRING_CATEGORY_DISABLED # TAs d = Person.objects.get(userid='dzhao') unit = Unit.objects.get(slug='cmpt') r1 = Role(person=d, role='TAAD', unit=unit, expiry=role_expiry) r1.save() r2 = Role(person=d, role='FUND', unit=unit, expiry=role_expiry) r2.save() s = Semester.current().next_semester() admin = Person.objects.get(userid='dixon') CourseDescription(unit=unit, description="Office/Marking", labtut=False).save() CourseDescription(unit=unit, description="Office/Marking/Lab", labtut=True).save() a = Account(account_number=12345, position_number=12345, title='MSc TA', unit=unit) a.save() a = Account(account_number=12346, position_number=12346, title='PhD TA', unit=unit) a.save() a = Account(account_number=12347, position_number=12347, title='External TA', unit=unit) a.save() a = Account(account_number=12348, position_number=12348, title='Undergrad TA', unit=unit) a.save() post = TAPosting(semester=s, unit=unit) post.opens = s.start - datetime.timedelta(100) post.closes = s.start - datetime.timedelta(20) post.set_salary([972, 972, 972, 972]) post.set_scholarship([135, 340, 0, 0]) post.set_accounts([ Account.objects.get(account_number=12345).id, Account.objects.get(account_number=12346).id, Account.objects.get(account_number=12347).id, Account.objects.get(account_number=12348).id ]) post.set_start(s.start) post.set_end(s.end) post.set_deadline(s.start - datetime.timedelta(10)) post.set_payperiods(7.5) post.set_contact(admin.id) post.set_offer_text( "This is **your** TA öffer.\n\nThere are various conditions that are töö numerous to list here." ) post.save() offerings = list(post.selectable_offerings()) for p in Person.objects.filter(last_name='Grad'): app = TAApplication(posting=post, person=p, category=random.choice(['GTA1', 'GTA2']), current_program='CMPT', sin='123456789', base_units=random.choice([3, 4, 5])) app.save() will_ta = [] for i, o in enumerate(random.sample(offerings, 5)): t = random.choice(TAKEN_CHOICES)[0] e = random.choice(EXPER_CHOICES)[0] cp = CoursePreference(app=app, course=o.course, rank=i + 1, taken=t, exper=e) cp.save() if random.random() < 0.07 * (5 - i): will_ta.append(o) if will_ta and random.random() < 0.75: c = TAContract(status=random.choice(['NEW', 'OPN', 'ACC'])) c.first_assign(app, post) c.save() for o in will_ta: tac = TACourse(course=o, contract=c, bu=app.base_units) tac.description = tac.default_description() tac.save() # RAs s = Semester.current() superv = list( m.person for m in Member.objects.filter(role='INST').select_related('person')) empl = list( itertools.chain( Person.objects.filter(last_name='Grad'), random.sample(Person.objects.filter(last_name='Student'), 10))) cats = [ c for c, d in HIRING_CATEGORY_CHOICES if c not in HIRING_CATEGORY_DISABLED ] config = SemesterConfig.get_config([unit], s) acct = Account(account_number=12349, position_number=12349, title='NSERC RA', unit=unit) acct.save() proj1 = Project(project_number=987654, fund_number=31, unit=unit) proj1.save() proj2 = Project(project_number=876543, fund_number=13, unit=unit) proj2.save() for i in range(30): p = random.choice(empl) s = random.choice(superv) c = random.choice(cats) freq = random.choice(['B', 'L']) if freq == 'B': payargs = { 'lump_sum_pay': 10000, 'biweekly_pay': 1250, 'pay_periods': 8, 'hourly_pay': 31, 'hours': 40 } else: payargs = { 'lump_sum_pay': 4000, 'biweekly_pay': 0, 'pay_periods': 8, 'hourly_pay': 0, 'hours': 0 } ra = RAAppointment(person=p, sin=123456789, hiring_faculty=s, unit=unit, hiring_category=c, project=random.choice([proj1, proj2]), account=acct, pay_frequency=freq, start_date=config.start_date(), end_date=config.end_date(), **payargs) ra.set_use_hourly(random.choice([True, False])) ra.save() return itertools.chain( [r1, r2], Account.objects.all(), Project.objects.all(), SemesterConfig.objects.all(), RAAppointment.objects.all(), TAPosting.objects.all(), CourseDescription.objects.all(), TAApplication.objects.all(), CoursePreference.objects.all(), TAContract.objects.all(), TACourse.objects.all(), )
def test_application(self): p = Person.objects.get(emplid=210012345) s = Semester.objects.get(name="1077") unit = Unit.objects.get(label="CMPT") d = CourseDescription(unit=unit, description="Lab TA", labtut=True) d.save() d = CourseDescription(unit=unit, description="Office Hours", labtut=False) d.save() #Create posting that closes in a long time so no applications are late posting = TAPosting(semester=s, unit=unit,opens=date(2007,9,4), closes=date(2099,9,4)) posting.config['accounts'] = [a.id for a in Account.objects.all()] posting.config['start'] = date(2100,10,10) posting.config['end'] = date(2101,10,10) posting.config['deadline'] = date(2099,9,20) posting.save() #Create application for posting as well as campus and course preferences app = TAApplication(posting=posting, person=p, category="UTA", base_units=2, sin="123123123", course_load="No Other Courses") app.save() cp1 = CampusPreference(app=app, campus="BRNBY", pref="PRF") cp2 = CampusPreference(app=app, campus="SURRY", pref="NOT") cp1.save() cp2.save() c1 = Course.objects.get(subject="CMPT", number="120") course1 = CoursePreference(app=app, course=c1, taken="YES", exper="FAM", rank=1) course1.save() #Login a ta admin client = Client() userid = Role.objects.filter(role="TAAD")[0].person.userid client.login_user(userid) #Check that assign_tas page has two courses in it, one with someone who has applied url = reverse('ta.views.assign_tas', kwargs={'post_slug': posting.slug,}) response = basic_page_tests(self, client, url) self.assertEqual(response.status_code, 200) self.assertContains(response, '<a href="/ta/%s/%s"' % (posting.slug, self.co1.slug) ) self.assertContains(response, '<a href="/ta/%s/%s"' % (posting.slug, self.co2.slug) ) self.assertContains(response, '<td class="num">1</td>') #Check the view application page to make sure it displays properly url = reverse('ta.views.view_application', kwargs={'post_slug': posting.slug, 'userid':app.person.userid,}) response = basic_page_tests(self, client, url) self.assertEqual(response.status_code, 200) self.assertContains(response, '<a href="mailto:%[email protected]"' % (app.person.userid) ) self.assertContains(response, '<td>%s</td>' % (c1) ) #Check the assign_bu page to make sure applicant appears url = reverse('ta.views.assign_bus', kwargs={'post_slug': posting.slug, 'course_slug':self.co1.slug,}) response = basic_page_tests(self, client, url) self.assertEqual(response.status_code, 200) self.assertContains(response, '<a href="/ta/%s/application/%s"' % (posting.slug, app.person.userid) ) #Assign bu's to the applicant and make sure they show up on assign_ta page post_data = { 'form-TOTAL_FORMS':2, 'form-INITIAL_FORMS':1, 'form-MAX_NUM_FORMS':'', 'form-0-rank':1, 'form-0-bu':2.0, } response = client.post(url, post_data, follow=True) self.assertEqual(response.status_code, 200) self.assertContains(response, '<td class="num">2.00</td>')