def test_person(self): """ Basics of Person objects. """ # create some people to test with p1 = Person(emplid=210012345, userid="test1", last_name="Lname", first_name="Fname", pref_first_name="Fn", middle_name="M") p2 = Person(emplid=210012346, userid="test2", last_name="Lname", first_name="Zname", pref_first_name="Gn", middle_name="M") p3 = Person(emplid=210012347, userid="test3", last_name="Zname", first_name="Fname", pref_first_name="Gn", middle_name="M") p3.save() p1.save() p2.save() self.assertEquals(str(p1), "Lname, Fname") self.assertEquals(p1.name(), "Fname Lname") self.assertEquals(p1.email(), "*****@*****.**") people = Person.objects.filter(userid__startswith="test") # check sorting self.assertEquals(p1, people[0]) self.assertEquals(p2, people[1]) self.assertEquals(p3, people[2]) # uniqueness checking for emplid and userid px = Person(emplid=210012345, userid="test4") self.assertRaises(IntegrityError, px.save)
def manage_tas(request, course_slug): course = get_object_or_404(CourseOffering, slug=course_slug) longform = False if not Member.objects.filter(offering=course, person__userid=request.user.username, role="INST"): # only instructors can manage TAs return ForbiddenResponse(request, "Only instructors can manage TAs") if request.method == 'POST' and 'action' in request.POST and request.POST[ 'action'] == 'add': form = TAForm(offering=course, data=request.POST) if form.non_field_errors(): # have an unknown userid longform = True elif form.is_valid(): userid = form.cleaned_data['userid'] if not Person.objects.filter(userid=userid) \ and form.cleaned_data['fname'] and form.cleaned_data['lname']: # adding a new person: handle that. eid = 1 # search for an unused temp emplid while True: emplid = "%09i" % (eid) if not Person.objects.filter(emplid=emplid): break eid += 1 p = Person(first_name=form.cleaned_data['fname'], pref_first_name=form.cleaned_data['fname'], last_name=form.cleaned_data['lname'], middle_name='', userid=userid, emplid=emplid) p.save() else: p = Person.objects.get(userid=userid) m = Member(person=p, offering=course, role="TA", credits=0, career="NONS", added_reason="TAIN") m.save() #LOG EVENT# l = LogEntry(userid=request.user.username, description=("TA added by instructor: %s for %s") % (userid, course), related_object=m) l.save() messages.success(request, 'Added %s as a TA.' % (p.name())) return HttpResponseRedirect( reverse(manage_tas, kwargs={'course_slug': course.slug})) elif request.method == 'POST' and 'action' in request.POST and request.POST[ 'action'] == 'del': userid = request.POST['userid'] ms = Member.objects.filter(person__userid=userid, offering=course, role="TA", added_reason="TAIN") if ms: m = ms[0] m.role = "DROP" m.save() #LOG EVENT# l = LogEntry(userid=request.user.username, description=("TA removed by instructor: %s for %s") % (userid, course), related_object=m) l.save() messages.success(request, 'Removed %s as a TA.' % (m.person.name())) return HttpResponseRedirect( reverse(manage_tas, kwargs={'course_slug': course.slug})) else: form = TAForm(offering=course) tas = Member.objects.filter(role="TA", offering=course) context = { 'course': course, 'form': form, 'tas': tas, 'longform': longform } return render(request, 'coredata/manage_tas.html', context)
def manage_tas(request, course_slug): course = get_object_or_404(CourseOffering, slug=course_slug) longform = False if not Member.objects.filter(offering=course, person__userid=request.user.username, role="INST"): # only instructors can manage TAs return ForbiddenResponse(request, "Only instructors can manage TAs") if request.method == 'POST' and 'action' in request.POST and request.POST['action']=='add': form = TAForm(offering=course, data=request.POST) if form.non_field_errors(): # have an unknown userid longform = True elif form.is_valid(): userid = form.cleaned_data['userid'] if not Person.objects.filter(userid=userid) \ and form.cleaned_data['fname'] and form.cleaned_data['lname']: # adding a new person: handle that. eid = 1 # search for an unused temp emplid while True: emplid = "%09i" % (eid) if not Person.objects.filter(emplid=emplid): break eid += 1 p = Person(first_name=form.cleaned_data['fname'], pref_first_name=form.cleaned_data['fname'], last_name=form.cleaned_data['lname'], middle_name='', userid=userid, emplid=emplid) p.save() else: p = Person.objects.get(userid=userid) m = Member(person=p, offering=course, role="TA", credits=0, career="NONS", added_reason="TAIN") m.save() #LOG EVENT# l = LogEntry(userid=request.user.username, description=("TA added by instructor: %s for %s") % (userid, course), related_object=m) l.save() messages.success(request, 'Added %s as a TA.' % (p.name())) return HttpResponseRedirect(reverse(manage_tas, kwargs={'course_slug': course.slug})) elif request.method == 'POST' and 'action' in request.POST and request.POST['action']=='del': userid = request.POST['userid'] ms = Member.objects.filter(person__userid=userid, offering=course, role="TA", added_reason="TAIN") if ms: m = ms[0] m.role = "DROP" m.save() #LOG EVENT# l = LogEntry(userid=request.user.username, description=("TA removed by instructor: %s for %s") % (userid, course), related_object=m) l.save() messages.success(request, 'Removed %s as a TA.' % (m.person.name())) return HttpResponseRedirect(reverse(manage_tas, kwargs={'course_slug': course.slug})) else: form = TAForm(offering=course) tas = Member.objects.filter(role="TA", offering=course) context = {'course': course, 'form': form, 'tas': tas, 'longform': longform} return render(request, 'coredata/manage_tas.html', context)