Commit fbdb6d1f by Awais Jibran

Updating Django Admin to disallow instructor position delete.

parent dd7589fa
...@@ -256,6 +256,16 @@ class PersonAdmin(admin.ModelAdmin): ...@@ -256,6 +256,16 @@ class PersonAdmin(admin.ModelAdmin):
@admin.register(Position) @admin.register(Position)
class PositionAdmin(admin.ModelAdmin): class PositionAdmin(admin.ModelAdmin):
list_display = ('person', 'organization', 'organization_override',) list_display = ('person', 'organization', 'organization_override',)
search_fields = ('person__given_name',)
def has_delete_permission(self, request, obj=None):
"""Don't allow deletes"""
return False
def get_actions(self, request):
actions = super(PositionAdmin, self).get_actions(request)
actions.pop('delete_selected', None)
return actions
@admin.register(Video) @admin.register(Video)
......
...@@ -2,7 +2,9 @@ import itertools ...@@ -2,7 +2,9 @@ import itertools
import ddt import ddt
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from django.contrib.admin.sites import AdminSite
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.http import HttpRequest
from django.test import LiveServerTestCase, TestCase from django.test import LiveServerTestCase, TestCase
from django.urls import reverse from django.urls import reverse
from selenium import webdriver from selenium import webdriver
...@@ -15,10 +17,10 @@ from course_discovery.apps.api.tests.mixins import SiteMixin ...@@ -15,10 +17,10 @@ from course_discovery.apps.api.tests.mixins import SiteMixin
from course_discovery.apps.core.models import Partner from course_discovery.apps.core.models import Partner
from course_discovery.apps.core.tests.factories import USER_PASSWORD, UserFactory from course_discovery.apps.core.tests.factories import USER_PASSWORD, UserFactory
from course_discovery.apps.core.tests.helpers import make_image_file from course_discovery.apps.core.tests.helpers import make_image_file
from course_discovery.apps.course_metadata.admin import ProgramEligibilityFilter from course_discovery.apps.course_metadata.admin import PositionAdmin, ProgramEligibilityFilter
from course_discovery.apps.course_metadata.choices import ProgramStatus from course_discovery.apps.course_metadata.choices import ProgramStatus
from course_discovery.apps.course_metadata.forms import ProgramAdminForm from course_discovery.apps.course_metadata.forms import ProgramAdminForm
from course_discovery.apps.course_metadata.models import Program, ProgramType, Seat, SeatType from course_discovery.apps.course_metadata.models import Person, Position, Program, ProgramType, Seat, SeatType
from course_discovery.apps.course_metadata.tests import factories from course_discovery.apps.course_metadata.tests import factories
...@@ -402,3 +404,26 @@ class ProgramEligibilityFilterTests(SiteMixin, TestCase): ...@@ -402,3 +404,26 @@ class ProgramEligibilityFilterTests(SiteMixin, TestCase):
list(program_filter.queryset({}, Program.objects.all())), list(program_filter.queryset({}, Program.objects.all())),
[one_click_purchase_ineligible_program] [one_click_purchase_ineligible_program]
) )
class PersonPositionAdminTest(TestCase):
"""Tests for person position admin."""
def setUp(self):
super(PersonPositionAdminTest, self).setUp()
self.user = UserFactory(is_staff=True, is_superuser=True)
self.person = Person.objects.create()
self.person_position = Position.objects.create(person=self.person, title='foo')
self.person_position_admin = PositionAdmin(self.person_position, AdminSite())
self.request = HttpRequest()
self.request.user = self.user
def test_delete_permission(self):
"""
Tests that users cannot delete entries
"""
self.assertFalse(self.person_position_admin.has_delete_permission(self.request))
def test_delete_action(self):
"""Tests that user can not have delete action"""
self.assertNotIn('delete_selected', self.person_position_admin.get_actions(self.request))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment