def test_post_invalid(self):
     testuser = UserBuilder('testuser')
     testuser.update(
         languagecode='nb'
     )
     with self.settings(LANGUAGES=[('en', 'English')]):
         response = self.post_as(testuser.user, self.url, {
             'languagecode': 'tu',
             'redirect_url': '/successtest'
         })
         self.assertEqual(response.status_code, 400)
         testuser.reload_from_db()
         self.assertEqual(testuser.user.languagecode, 'nb')
 def test_post_valid(self):
     testuser = UserBuilder('testuser')
     testuser.update_profile(
         languagecode='nb'
     )
     with self.settings(LANGUAGES=[('en', 'English')]):
         response = self.post_as(testuser.user, self.url, {
             'languagecode': 'en',
             'redirect_url': '/successtest'
         })
         self.assertEquals(response.status_code, 302)
         self.assertEquals(response['Location'], 'http://testserver/successtest')
         testuser.reload_from_db()
         self.assertEquals(testuser.user.devilryuserprofile.languagecode, 'en')
 def setUp(self):
     self.testuser = UserBuilder('testuser').user
     self.assignmentbuilder = PeriodBuilder\
         .quickadd_ducku_duck1010_active()\
         .add_admins(self.testuser)\
         .add_assignment('testassignment')
     self.factory = RequestFactory()
 def setUp(self):
     self.admin1 = UserBuilder('admin1').user
     self.assignmentbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
         .add_assignment('assignment1')\
         .add_admins(self.admin1)
     self.url = reverse('devilry_gradingsystem_admin_setpassing_grade_min_points', kwargs={
         'assignmentid': self.assignmentbuilder.assignment.id,
     })
 def setUp(self):
     self.testexaminer = UserBuilder('testexaminer').user
     self.deliverybuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
         .add_assignment('assignment1',
                         points_to_grade_mapper='raw-points',
                         passing_grade_min_points=20,
                         max_points=100) \
         .add_group(examiners=[self.testexaminer])\
         .add_deadline_in_x_weeks(weeks=1)\
         .add_delivery_x_hours_before_deadline(hours=1)
Пример #6
0
 def test_get_last_feedbackdraft_feedback_workflow_does_not_allow_shared_feedback_drafts(
         self):
     FeedbackDraftFile.objects.create(
         delivery=self.deliverybuilder.delivery,
         saved_by=UserBuilder('otheruser').user,
         filename='test.txt')
     self.assertEquals(
         FeedbackDraftFile.objects.filter_accessible_files(
             assignment=self.assignment1builder.assignment,
             delivery=self.deliverybuilder.delivery,
             user=self.testexaminer).first(), None)
Пример #7
0
 def test_get_not_admin_404_with_pluginselected(self):
     nobody = UserBuilder('nobody').user
     myregistry = GradingSystemPluginRegistry()
     myregistry.add(MockPointsPluginApi)
     with patch(
             'devilry.devilry_gradingsystem.views.admin.selectplugin.gradingsystempluginregistry',
             myregistry):
         self.assertIn(MockPointsPluginApi.id, myregistry)
         response = self.get_as(
             nobody, {'grading_system_plugin_id': MockPointsPluginApi.id})
         self.assertEquals(response.status_code, 404)
Пример #8
0
 def setUp(self):
     self.admin1 = UserBuilder('admin1').user
     self.subjectbuilder = SubjectBuilder.quickadd_ducku_duck1010()
     self.periodbuilder = self.subjectbuilder.add_6month_active_period()
     self.assignmentbuilder = self.periodbuilder.add_assignment(
         'myassignment')
     self.url = reverse('devilry_gradingsystem_admin_summary',
                        kwargs={
                            'assignmentid':
                            self.assignmentbuilder.assignment.id,
                        })
Пример #9
0
 def test_get_render_other_examiner_has_feedback_draft_no_draft_sharing(
         self):
     FeedbackDraft.objects.create(
         delivery=self.get_empty_delivery_with_testexaminer_as_examiner(),
         feedbacktext_raw='Test feedback',
         points=30,
         saved_by=UserBuilder('someotheruser').user)
     response = self.get_as(self.get_testexaminer())
     selector = htmls.S(response.content)
     self.assertEquals(
         selector.one('#id_feedbacktext').alltext_normalized, '')
 def setUp(self):
     self.testexaminer = UserBuilder('testexaminer').user
     self.deliverybuilder = AssignmentGroupBuilder\
         .quickadd_ducku_duck1010_active_assignment1_group()\
         .add_examiners(self.testexaminer)\
         .add_deadline_in_x_weeks(weeks=1)\
         .add_delivery_x_hours_before_deadline(hours=1)
     self.draftfile = FeedbackDraftFile(
         delivery=self.deliverybuilder.delivery,
         saved_by=self.testexaminer,
         filename='test.txt')
     self.draftfile.file.save('test.txt', ContentFile('A testfile'))
Пример #11
0
 def test_get_last_feedbackdraft_feedback_workflow_does_not_allow_shared_feedback_drafts(
         self):
     FeedbackDraft.objects.create(delivery=self.deliverybuilder.delivery,
                                  feedbacktext_raw='Test',
                                  feedbacktext_html='<p>Test</p>',
                                  points=30,
                                  saved_by=UserBuilder('otheruser').user)
     self.assertEquals(
         FeedbackDraft.get_last_feedbackdraft(
             assignment=self.assignment1builder.assignment,
             delivery=self.deliverybuilder.delivery,
             user=self.testexaminer), None)
Пример #12
0
class TestAboutMeView(TestCase):
    def setUp(self):
        self.testuserbuilder = UserBuilder('testuserbuilder')
        self.url = reverse('devilry_header_aboutme')

    def _getas(self, user, *args, **kwargs):
        self.client.login(username=user.username, password='******')
        return self.client.get(self.url, *args, **kwargs)

    def test_nologin(self):
        response = self.client.get(self.url)
        self.assertEquals(response.status_code, 302)

    def test_render_noinput(self):
        response = self._getas(self.testuserbuilder.user)
        self.assertEquals(response.status_code, 200)
        # html = response.content

    def test_languageselect(self):
        self.testuserbuilder.update_profile(
            languagecode='en'
        )
        with self.settings(LANGUAGES=[('en', 'English'), ('nb', 'Norwegian')]):
            html = self._getas(self.testuserbuilder.user).content
            self.assertTrue(cssExists(html,
                '#devilry_frontpage_languageselect #devilry_change_language_form'))
            self.assertEquals(
                cssGet(html, '#devilry_change_language_form option[value="en"]')['selected'],
                'selected')

    def test_languageselect_no_current_language(self):
        with self.settings(
                LANGUAGES=[('en', 'English'), ('nb', 'Norwegian')],
                LANGUAGE_CODE='nb'):
            html = self._getas(self.testuserbuilder.user).content
            self.assertTrue(cssExists(html,
                '#devilry_frontpage_languageselect #devilry_change_language_form'))
            self.assertEquals(
                cssGet(html, '#devilry_change_language_form option[value="nb"]')['selected'],
                'selected')
Пример #13
0
 def test_get_last_feedbackdraft_feedback_workflow_allows_shared_feedback_drafts(
         self):
     self.assignment1builder.update(
         feedback_workflow='trusted-cooperative-feedback-editing')
     feedbackdraft = FeedbackDraftFile.objects.create(
         delivery=self.deliverybuilder.delivery,
         saved_by=UserBuilder('otheruser').user,
         filename='test.txt')
     self.assertEquals(
         FeedbackDraftFile.objects.filter_accessible_files(
             assignment=self.assignment1builder.assignment,
             delivery=self.deliverybuilder.delivery,
             user=self.testexaminer).first(), feedbackdraft)
Пример #14
0
class TestAboutMeView(TestCase):
    def setUp(self):
        self.testuserbuilder = UserBuilder('testuserbuilder')
        self.url = reverse('devilry_header_aboutme')

    def _getas(self, user, *args, **kwargs):
        self.client.login(username=user.shortname, password='******')
        return self.client.get(self.url, *args, **kwargs)

    def test_nologin(self):
        response = self.client.get(self.url)
        self.assertEquals(response.status_code, 302)

    def test_render_noinput(self):
        response = self._getas(self.testuserbuilder.user)
        self.assertEquals(response.status_code, 200)
        # html = response.content

    def test_languageselect(self):
        self.testuserbuilder.update(
            languagecode='en'
        )
        with self.settings(LANGUAGES=[('en', 'English'), ('nb', 'Norwegian')]):
            html = self._getas(self.testuserbuilder.user).content
            self.assertTrue(cssExists(html,
                '#devilry_change_language_form'))
            self.assertEquals(
                cssGet(html, '#devilry_change_language_form option[value="en"]')['selected'],
                'selected')

    def test_languageselect_no_current_language(self):
        with self.settings(
                LANGUAGES=[('en', 'English'), ('nb', 'Norwegian')],
                LANGUAGE_CODE='nb'):
            html = self._getas(self.testuserbuilder.user).content
            self.assertTrue(cssExists(html, '#devilry_change_language_form'))
            self.assertEquals(
                cssGet(html, '#devilry_change_language_form option[value="nb"]')['selected'],
                'selected')
Пример #15
0
 def test_get_last_feedbackdraft_for_group_feedback_workflow_allows_shared_feedback_drafts(
         self):
     self.assignment1builder.update(
         feedback_workflow='trusted-cooperative-feedback-editing')
     feedbackdraft = FeedbackDraft.objects.create(
         delivery=self.deliverybuilder.delivery,
         feedbacktext_raw='Test',
         feedbacktext_html='<p>Test</p>',
         points=30,
         saved_by=UserBuilder('otheruser').user)
     self.assertEquals(
         FeedbackDraft.get_last_feedbackdraft_for_group(
             assignment=self.assignment1builder.assignment,
             group=self.groupbuilder.group,
             user=self.testexaminer), feedbackdraft)
Пример #16
0
 def test_get_render_other_examiner_has_feedback_draft_draft_sharing(self):
     testdelivery = self.get_empty_delivery_with_testexaminer_as_examiner()
     assignment = testdelivery.assignment
     assignment.feedback_workflow = 'trusted-cooperative-feedback-editing'
     assignment.save()
     FeedbackDraft.objects.create(
         delivery=testdelivery,
         feedbacktext_raw='Test feedback',
         points=30,
         saved_by=UserBuilder('someotheruser').user)
     response = self.get_as(self.get_testexaminer())
     selector = htmls.S(response.content)
     self.assertEquals(
         selector.one('#id_feedbacktext').alltext_normalized,
         'Test feedback')
Пример #17
0
 def setUp(self):
     self.admin1 = UserBuilder('admin1').user
     self.myregistry = GradingSystemPluginRegistry()
     self.myregistry.add(MockPointsPluginApi)
     self.assignmentbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
         .add_assignment('assignment1',
             grading_system_plugin_id=MockPointsPluginApi.id,
             max_points=100,
             points_to_grade_mapper='custom-table'
         )\
         .add_admins(self.admin1)
     self.url = reverse('devilry_gradingsystem_admin_setup_custom_table',
                        kwargs={
                            'assignmentid':
                            self.assignmentbuilder.assignment.id,
                        })
Пример #18
0
 def test_post_invalid(self):
     testuser = UserBuilder('testuser')
     testuser.update(languagecode='nb')
     with self.settings(LANGUAGES=[('en', 'English')]):
         response = self.post_as(testuser.user, self.url, {
             'languagecode': 'tu',
             'redirect_url': '/successtest'
         })
         self.assertEquals(response.status_code, 400)
         testuser.reload_from_db()
         self.assertEquals(testuser.user.languagecode, 'nb')
Пример #19
0
 def test_has_staticfeedbacks_warning(self):
     examiner1 = UserBuilder('examiner1').user
     delivery = self.assignmentbuilder\
         .add_group()\
         .add_deadline_in_x_weeks(weeks=1)\
         .add_delivery_x_hours_before_deadline(hours=1)\
         .add_passed_feedback(saved_by=examiner1)
     myregistry = GradingSystemPluginRegistry()
     with patch(
             'devilry.apps.core.models.assignment.gradingsystempluginregistry',
             myregistry):
         response = self.get_as(self.admin1)
         self.assertEquals(response.status_code, 200)
         html = response.content
         self.assertIn(
             'You SHOULD NOT reconfigure the grading system for this assignment.',
             html)
Пример #20
0
 def test_has_feedbackdrafts_message(self):
     delivery = self.assignmentbuilder\
         .add_group()\
         .add_deadline_in_x_weeks(weeks=1)\
         .add_delivery_x_hours_before_deadline(hours=1).delivery
     examiner1 = UserBuilder('examiner1').user
     FeedbackDraft.objects.create(points=40,
                                  delivery=delivery,
                                  saved_by=examiner1,
                                  feedbacktext_html='This is a test.')
     myregistry = GradingSystemPluginRegistry()
     with patch(
             'devilry.apps.core.models.assignment.gradingsystempluginregistry',
             myregistry):
         response = self.get_as(self.admin1)
         self.assertEquals(response.status_code, 200)
         html = response.content
         self.assertIn(
             'You can reconfigure the grading system for this assignment, but be careful, at least one examiner has saved a feedback draft.',
             html)
Пример #21
0
    def test_post_with_feedbackfile_is_private(self):
        testexaminer = self.get_testexaminer()
        delivery = self.get_empty_delivery_with_testexaminer_as_examiner()
        feedbackdraftfile = FeedbackDraftFile(
            delivery=delivery,
            saved_by=UserBuilder('otheruser').user,
            filename='otherfile.txt')
        feedbackdraftfile.file.save('unused.txt', ContentFile('Other'))

        postdata = self.get_valid_post_data_without_feedbackfile_or_feedbacktext(
        )
        postdata['feedbackfile'] = SimpleUploadedFile('testfile.txt',
                                                      'Feedback file test')
        self.assertEquals(
            FeedbackDraftFile.objects.filter(delivery=delivery).count(), 1)
        self.post_as(testexaminer, postdata)
        self.assertEquals(
            FeedbackDraftFile.objects.filter(delivery=delivery).count(), 2)
        self.assertEquals(
            FeedbackDraftFile.objects.filter(delivery=delivery,
                                             saved_by=testexaminer).count(), 1)
Пример #22
0
    def test_send_invite_to_choices_queryset(self):
        UserBuilder('ignoreduser')
        alreadyingroupuser1 = UserBuilder('alreadyingroupuser1').user
        alreadyingroupuser2 = UserBuilder('alreadyingroupuser2').user
        hasinviteuser = UserBuilder('hasinviteuser').user
        matchuser1 = UserBuilder('matchuser1').user
        matchuser2 = UserBuilder('matchuser2').user

        group = PeriodBuilder.quickadd_ducku_duck1010_active() \
            .add_relatedstudents(
            alreadyingroupuser1, alreadyingroupuser2, hasinviteuser,
            matchuser1, matchuser2) \
            .add_assignment('assignment1', students_can_create_groups=True) \
            .add_group(students=[alreadyingroupuser1, alreadyingroupuser2]).group
        group.groupinvite_set.create(sent_by=alreadyingroupuser1,
                                     sent_to=hasinviteuser)

        can_invite_users = set(
            GroupInvite.send_invite_to_choices_queryset(group))
        self.assertEquals(can_invite_users, set([matchuser1, matchuser2]))
 def test_ok_as_superuser(self):
     self._test_as(UserBuilder('superuser', is_superuser=True).user)
Пример #24
0
 def setUp(self):
     self.testuser = UserBuilder('testuser').user
     self.assignmentbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
         .add_assignment('testassignment')
Пример #25
0
 def create_user(self):
     return UserBuilder(self.username, full_name=self.full_name, is_superuser=self.is_superuser).user
 def test_403_not_owner_or_superuser(self):
     response = self._get_as(
         UserBuilder('otheruser').user, self.draftfile.id)
     self.assertEquals(response.status_code, 403)
Пример #27
0
 def setUp(self):
     self.add(nodes="uio:admin(uioadmin).ifi:admin(ifiadmin,ifitechsupport)")
     self.add(nodes="uio.deepdummy1")
     self.thesuperuser = UserBuilder('thesuperuser', is_superuser=True).user
Пример #28
0
 def test_get_not_admin_404(self):
     nobody = UserBuilder('nobody').user
     response = self.get_as(nobody)
     self.assertEquals(response.status_code, 404)
Пример #29
0
 def setUp(self):
     self.testuserbuilder = UserBuilder('testuser')
     self.testuser = self.testuserbuilder.user
Пример #30
0
class TestProjectGroupOverviewView(TestCase):
    def setUp(self):
        self.testuserbuilder = UserBuilder('testuser')
        self.testuser = self.testuserbuilder.user

    def _getas(self, group_id, user, *args, **kwargs):
        self.client.login(username=user.shortname, password='******')
        url = reverse_cradmin_url(
            instanceid='devilry_student_group',
            appname='projectgroup',
            roleid=group_id
        )
        return self.client.get(url, *args, **kwargs)

    def _postas(self, group_id, user, *args, **kwargs):
        self.client.login(username=user.shortname, password='******')
        url = reverse_cradmin_url(
            instanceid='devilry_student_group',
            appname='projectgroup',
            roleid=group_id
        )
        return self.client.post(url, *args, **kwargs)

    def test_render(self):
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1')\
            .add_group(students=[self.testuser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)
        response = self._getas(groupbuilder.group.id, self.testuser)
        self.assertEquals(response.status_code, 200)
        html = response.content
        self.assertEquals(cssGet(html, 'h1').text.strip(), 'Project group')

    def test_groupinvite_not_allowed(self):
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1', students_can_create_groups=False)\
            .add_group(students=[self.testuser])
        html = self._getas(groupbuilder.group.id, self.testuser).content
        self.assertFalse(cssExists(html, '#devilry_student_projectgroupoverview_invitebox'))

    def test_groupinvite_allowed(self):
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)
        html = self._getas(groupbuilder.group.id, self.testuser).content
        self.assertTrue(cssExists(html, '#devilry_student_projectgroupoverview_invitebox'))

    def test_render_send_invite_to_selectlist(self):
        UserBuilder('ignoreduser')
        alreadyingroupuser1 = UserBuilder('alreadyingroupuser1').user
        alreadyingroupuser2 = UserBuilder('alreadyingroupuser2').user
        hasinviteuser = UserBuilder('hasinviteuser').user
        matchuser1 = UserBuilder('matchuser1').user
        matchuser2 = UserBuilder('matchuser2', full_name='Match User Two').user

        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_relatedstudents(
                alreadyingroupuser1, alreadyingroupuser2, hasinviteuser,
                matchuser1, matchuser2)\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[alreadyingroupuser1, alreadyingroupuser2])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)
        groupbuilder.group.groupinvite_set.create(
            sent_by=alreadyingroupuser1,
            sent_to=hasinviteuser)

        html = self._getas(groupbuilder.group.id, alreadyingroupuser1).content
        send_to_options = [e.text.strip() for e in cssFind(html, '#id_sent_to option')]
        self.assertEquals(set(send_to_options), {'', 'matchuser1', 'Match User Two'})

    def test_render_waiting_for_response_from(self):
        inviteuser1 = UserBuilder('inviteuser1').user
        inviteuser2 = UserBuilder('inviteuser2').user
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)
        for inviteuser in (inviteuser1, inviteuser2):
            groupbuilder.group.groupinvite_set.create(
                sent_by=self.testuser,
                sent_to=inviteuser)

        html = self._getas(groupbuilder.group.id, self.testuser).content
        names = [element.text.strip() for element in \
            cssFind(html, '#devilry_student_projectgroup_overview_waiting_for_response_from .invite_sent_to_displayname')]
        self.assertEquals(set(names), {'inviteuser1', 'inviteuser2'})

    def test_render_current_group_members_usernames(self):
        otheruser = UserBuilder('otheruser').user
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuser, otheruser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)

        html = self._getas(groupbuilder.group.id, self.testuser).content
        selector = htmls.S(html)
        usernames = [element.alltext_normalized
                     for element in selector.list('.devilry-student-projectgroupoverview-username')]
        self.assertEquals({'testuser', 'otheruser'}, set(usernames))

    def test_render_current_group_members_emails(self):
        otheruser = UserBuilder('otheruser').user
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuser, otheruser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)

        html = self._getas(groupbuilder.group.id, self.testuser).content
        selector = htmls.S(html)
        emails = [element.alltext_normalized
                  for element in selector.list('.devilry-student-projectgroupoverview-email')]
        self.assertEquals({'*****@*****.**', '*****@*****.**'}, set(emails))

    def test_render_current_group_members_fullnames(self):
        otheruser = UserBuilder('otheruser', full_name='Other User').user
        self.testuserbuilder.update(fullname='Test User')
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuserbuilder.user, otheruser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)

        html = self._getas(groupbuilder.group.id, self.testuserbuilder.user).content
        selector = htmls.S(html)
        emails = [element.alltext_normalized
                  for element in selector.list('.devilry-student-projectgroupoverview-fullname')]
        self.assertEquals({'Test User', 'Other User'}, set(emails))

    def test_send_to_post(self):
        inviteuser = UserBuilder('inviteuser').user
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_relatedstudents(self.testuser, inviteuser)\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)

        self.assertEquals(GroupInvite.objects.count(), 0)
        response = self._postas(groupbuilder.group.id, self.testuser, {
            'sent_to': inviteuser.id
        })
        self.assertEquals(response.status_code, 302)
        self.assertEquals(GroupInvite.objects.count(), 1)
        invite = GroupInvite.objects.all()[0]
        self.assertEquals(invite.sent_by, self.testuser)
        self.assertEquals(invite.sent_to, inviteuser)
        self.assertEquals(invite.accepted, None)

    def test_send_to_post_notrelated(self):
        inviteuser = UserBuilder('inviteuser').user
        groupbuilder = PeriodBuilder.quickadd_ducku_duck1010_active()\
            .add_relatedstudents(self.testuser)\
            .add_assignment('assignment1', students_can_create_groups=True)\
            .add_group(students=[self.testuser])
        groupbuilder.add_deadline_in_x_weeks(weeks=1)

        self.assertEquals(GroupInvite.objects.count(), 0)
        response = self._postas(groupbuilder.group.id, self.testuser, {
            'sent_to': inviteuser.id
        })
        self.assertEquals(response.status_code, 200)
        self.assertIn(
            'Select a valid choice. {} is not one of the available choices.'.format(inviteuser.id),
            response.content)
Пример #31
0
 def setUp(self):
     self.testuser1 = UserBuilder('testuser1').user
     self.testuser2 = UserBuilder('testuser2').user
     self.testuser3 = UserBuilder('testuser3').user
Пример #32
0
 def setUp(self):
     self.testuserbuilder = UserBuilder('testuserbuilder')
     self.url = reverse('devilry_header_aboutme')
Пример #33
0
 def setUp(self):
     self.testuser = UserBuilder('testuser').user
     DeliveryBuilder.set_memory_deliverystore()