コード例 #1
0
ファイル: tests.py プロジェクト: avacariu/coursys
    def test_grad_letters(self):
        """
        Check handling of letters for grad students
        """
        client = Client()
        test_auth(client, 'ggbaker')
        gs = GradStudent.objects.get(person__userid=self.gs_userid)

        # get template text and make sure substitutions are made
        lt = LetterTemplate.objects.get(label="Funding")
        url = reverse('grad.views.get_letter_text', kwargs={'grad_slug': gs.slug, 'letter_template_id': lt.id})
        response = client.get(url)
        self.assertEqual(response.status_code, 200)
        self.assertContains(response, 'M Grad is making satisfactory progress')
        content = unicode(response.content)
        
        # create a letter with that content
        l = Letter(student=gs, date=datetime.date.today(), to_lines="The Student\nSFU", template=lt, created_by='ggbaker', content=content)
        l.save()
        url = reverse('grad.views.view_letter', kwargs={'grad_slug': gs.slug, 'letter_slug': l.slug})
        response = basic_page_tests(self, client, url)
        self.assertEqual(response.status_code, 200)

        url = reverse('grad.views.copy_letter', kwargs={'grad_slug': gs.slug, 'letter_slug': l.slug})
        response = basic_page_tests(self, client, url)
        self.assertEqual(response.status_code, 200)
コード例 #2
0
def copy_letter(request, grad_slug, letter_slug):
    grad = get_object_or_404(GradStudent,
                             slug=grad_slug,
                             program__unit__in=request.units)
    old_letter = get_object_or_404(Letter, slug=letter_slug, student=grad)
    letter = Letter(student=grad,
                    to_lines=old_letter.to_lines,
                    content=old_letter.content,
                    template=old_letter.template,
                    closing=old_letter.closing,
                    from_person=old_letter.from_person,
                    from_lines=old_letter.from_lines)
    letter.set_use_sig(old_letter.use_sig())

    from_choices = [('', u'\u2014')] \
                    + [(r.person.id, "%s. %s, %s" %
                            (r.person.get_title(), r.person.letter_name(), r.get_role_display()))
                        for r in Role.objects.filter(unit=grad.program.unit)]

    if request.method == 'POST':
        form = LetterForm(request.POST, instance=letter)
        form.fields['from_person'].choices = from_choices
        if form.is_valid():
            f = form.save(commit=False)
            f.created_by = request.user.username
            f.config = grad.letter_info()
            f.save()
            messages.success(
                request, "Created %s letter for %s." %
                (form.instance.template.label, form.instance.student))
            l = LogEntry(userid=request.user.username,
                         description="Copied %s letter for %s." %
                         (form.instance.template.label, form.instance.student),
                         related_object=form.instance)
            l.save()
            return HttpResponseRedirect(
                reverse('grad.views.manage_letters',
                        kwargs={'grad_slug': grad_slug}))
    else:
        form = LetterForm(instance=letter,
                          initial={'date': datetime.date.today()})
        form.fields['from_person'].choices = from_choices

    context = {
        'form': form,
        'grad': grad,
        'letter': letter,
    }
    return render(request, 'grad/copy_letter.html', context)
コード例 #3
0
ファイル: tests.py プロジェクト: csvenja/coursys
    def test_grad_letters(self):
        """
        Check handling of letters for grad students
        """
        client = Client()
        client.login_user('dzhao')
        gs = self.gs

        # get template text and make sure substitutions are made
        lt = LetterTemplate.objects.get(label="Funding")
        url = reverse('grad.views.get_letter_text',
                      kwargs={
                          'grad_slug': gs.slug,
                          'letter_template_id': lt.id
                      })
        response = client.get(url)
        self.assertEqual(response.status_code, 200)
        self.assertContains(
            response,
            gs.person.get_title() + ' ' + gs.person.last_name +
            ' is making satisfactory progress')
        content = response.content.decode('utf-8')

        # create a letter with that content
        l = Letter(student=gs,
                   date=datetime.date.today(),
                   to_lines="The Student\nSFU",
                   template=lt,
                   created_by='ggbaker',
                   content=content)
        l.save()
        url = reverse('grad.views.view_letter',
                      kwargs={
                          'grad_slug': gs.slug,
                          'letter_slug': l.slug
                      })
        response = basic_page_tests(self, client, url)
        self.assertEqual(response.status_code, 200)

        url = reverse('grad.views.copy_letter',
                      kwargs={
                          'grad_slug': gs.slug,
                          'letter_slug': l.slug
                      })
        response = basic_page_tests(self, client, url)
        self.assertEqual(response.status_code, 200)
コード例 #4
0
ファイル: copy_letter.py プロジェクト: avacariu/coursys
def copy_letter(request, grad_slug, letter_slug):
    grad = get_object_or_404(GradStudent, slug=grad_slug, program__unit__in=request.units)
    old_letter = get_object_or_404(Letter, slug=letter_slug, student=grad)
    letter = Letter(student=grad, to_lines=old_letter.to_lines, content=old_letter.content, template=old_letter.template,
                    closing=old_letter.closing, from_person=old_letter.from_person,
                    from_lines=old_letter.from_lines)
    letter.set_use_sig(old_letter.use_sig())

    from_choices = [('', u'\u2014')] \
                    + [(r.person.id, "%s. %s, %s" %
                            (r.person.get_title(), r.person.letter_name(), r.get_role_display()))
                        for r in Role.objects.filter(unit=grad.program.unit)]
    
    if request.method == 'POST':
        form = LetterForm(request.POST, instance=letter)
        form.fields['from_person'].choices = from_choices
        if form.is_valid():
            f = form.save(commit=False)
            f.created_by = request.user.username
            f.config = grad.letter_info()
            f.save()
            messages.success(request, "Created %s letter for %s." % (form.instance.template.label, form.instance.student))
            l = LogEntry(userid=request.user.username,
                  description="Copied %s letter for %s." % (form.instance.template.label, form.instance.student),
                  related_object=form.instance)
            l.save()            
            return HttpResponseRedirect(reverse('grad.views.manage_letters', kwargs={'grad_slug':grad_slug}))
    else:
        form = LetterForm(instance=letter, initial={'date': datetime.date.today()})
        form.fields['from_person'].choices = from_choices
        
    context = {
               'form': form,
               'grad' : grad,
               'letter': letter,
               }
    return render(request, 'grad/copy_letter.html', context)
コード例 #5
0
ファイル: tests.py プロジェクト: csvenja/coursys
    def test_grad_student_pages(self):
        """
        Check the pages for a grad student and make sure they all load
        """

        client = Client()
        client.login_user('dzhao')
        gs = self.__make_test_grad()
        lt = LetterTemplate(
            unit=gs.program.unit,
            label='Template',
            content="This is the\n\nletter for {{first_name}}.")
        lt.save()

        url = reverse('grad.views.get_letter_text',
                      kwargs={
                          'grad_slug': gs.slug,
                          'letter_template_id': lt.id
                      })
        content = client.get(url).content
        Letter(student=gs,
               template=lt,
               date=datetime.date.today(),
               content=content).save()

        url = reverse('grad.views.view', kwargs={'grad_slug': gs.slug})
        response = basic_page_tests(self, client, url)
        self.assertEqual(response.status_code, 200)

        # sections of the main gradstudent view that can be loaded
        for section in all_sections:
            url = reverse('grad.views.view', kwargs={'grad_slug': gs.slug})
            # check fragment fetch for AJAX
            try:
                response = client.get(url, {'section': section})
                self.assertEqual(response.status_code, 200)
            except:
                print "with section==" + repr(section)
                raise

            # check section in page
            try:
                response = basic_page_tests(
                    self, client, url + '?_escaped_fragment_=' + section)
                self.assertEqual(response.status_code, 200)
            except:
                print "with section==" + repr(section)
                raise

        # check all sections together
        url = url + '?_escaped_fragment_=' + ','.join(all_sections)
        response = basic_page_tests(self, client, url)
        self.assertEqual(response.status_code, 200)

        # check management pages
        for view in [
                'financials', 'manage_general', 'manage_requirements',
                'manage_scholarships', 'manage_otherfunding',
                'manage_promises', 'manage_letters', 'manage_status',
                'manage_supervisors', 'manage_program',
                'manage_start_end_semesters', 'manage_financialcomments',
                'manage_defence', 'manage_progress', 'manage_documents'
        ]:
            try:
                url = reverse('grad.views.' + view,
                              kwargs={'grad_slug': gs.slug})
                response = basic_page_tests(self, client, url)
                self.assertEqual(response.status_code, 200)
            except:
                print "with view==" + repr(view)
                raise

        for style in STYLES:
            url = reverse('grad.views.financials',
                          kwargs={
                              'grad_slug': gs.slug,
                              'style': style
                          })
            response = basic_page_tests(self, client, url)
            self.assertEqual(response.status_code, 200)

        url = reverse('grad.views.new_letter',
                      kwargs={
                          'grad_slug': gs.slug,
                          'letter_template_slug': lt.slug
                      })
        response = basic_page_tests(self, client, url)
        self.assertEqual(response.status_code, 200)