diff options
-rw-r--r-- | CHANGELOG.txt | 2 | ||||
-rw-r--r-- | yaksh/test_views.py | 32 | ||||
-rw-r--r-- | yaksh/views.py | 12 |
3 files changed, 42 insertions, 4 deletions
diff --git a/CHANGELOG.txt b/CHANGELOG.txt index c87120b..b68e58e 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -14,6 +14,8 @@ * Fixed a bug that would require shebang to be put in for Bash assertion based questions. * Bug fixed that did not allow to edit a profile. * CSV download for quiz attempts enhanced. +* Updated Courses Page to show Active Courses on top. + === 0.6.0 (11-05-2017) === * Added a course code field that can be used to search a course. diff --git a/yaksh/test_views.py b/yaksh/test_views.py index af9ac7d..e3b0168 100644 --- a/yaksh/test_views.py +++ b/yaksh/test_views.py @@ -196,6 +196,38 @@ class TestProfile(TestCase): self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'yaksh/profile_updated.html') + def test_edit_profile_post_for_user_without_profile(self): + """ + POST request to edit_profile view should update the user's profile + """ + self.client.login( + username=self.user1.username, + password=self.user1_plaintext_pass + ) + response = self.client.post(reverse('yaksh:edit_profile'), + data={ + 'user': self.user1, + 'first_name': 'new_first_name', + 'last_name': 'new_last_name', + 'roll_number': 21, + 'institute': 'new_institute', + 'department': 'Aerospace', + 'position': 'new_position', + 'timezone': 'UTC' + } + ) + updated_profile_user = User.objects.get(id=self.user1.id) + updated_profile = Profile.objects.get(user=updated_profile_user) + self.assertEqual(updated_profile_user.first_name, 'new_first_name') + self.assertEqual(updated_profile_user.last_name, 'new_last_name') + self.assertEqual(updated_profile.roll_number, '21') + self.assertEqual(updated_profile.institute, 'new_institute') + self.assertEqual(updated_profile.department, 'Aerospace') + self.assertEqual(updated_profile.position, 'new_position') + + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'yaksh/profile_updated.html') + def test_edit_profile_get(self): """ GET request to edit profile should display profile form diff --git a/yaksh/views.py b/yaksh/views.py index 3c57b83..0ba3270 100644 --- a/yaksh/views.py +++ b/yaksh/views.py @@ -796,8 +796,10 @@ def courses(request): ci = RequestContext(request) if not is_moderator(user): raise Http404('You are not allowed to view this page') - courses = Course.objects.filter(creator=user, is_trial=False) - allotted_courses = Course.objects.filter(teachers=user, is_trial=False) + courses = Course.objects.filter( + creator=user, is_trial=False).order_by('-active', '-id') + allotted_courses = Course.objects.filter( + teachers=user, is_trial=False).order_by('-active', '-id') context = {'courses': courses, "allotted_courses": allotted_courses} return my_render_to_response('yaksh/courses.html', context, context_instance=ci) @@ -1449,7 +1451,6 @@ def view_profile(request): @login_required -@has_profile @email_verified def edit_profile(request): """ edit profile details facility for moderator and students """ @@ -1461,7 +1462,10 @@ def edit_profile(request): else: template = 'user.html' context = {'template': template} - profile = Profile.objects.get(user_id=user.id) + try: + profile = Profile.objects.get(user_id=user.id) + except Profile.DoesNotExist: + profile = None if request.method == 'POST': form = ProfileForm(request.POST, user=user, instance=profile) |