Commit 2970f242 by cahrens

Initial admin table view.

parent 72999e84
......@@ -3,6 +3,7 @@ from django.core.exceptions import PermissionDenied
from django.conf import settings
from xmodule.modulestore import Location
from course_creators import views
'''
This code is somewhat duplicative of access.py in the LMS. We will unify the code as a separate story
......@@ -221,3 +222,6 @@ def _grant_instructors_creator_access(caller):
if group.name.startswith(INSTRUCTOR_ROLE_NAME + "_"):
for user in group.user_set.all():
add_user_to_creator_group(caller, user)
views.add_user_with_status_granted(user)
elif group.name.startswith(STAFF_ROLE_NAME + "_"):
views.add_user_with_status_unrequested(user)
"""
django admin page for the course creators table
"""
from course_creators.models import CourseCreator
from django.contrib import admin
class CourseCreatorAdmin(admin.ModelAdmin):
list_display = ('username', 'state', 'state_changed', 'note')
def has_add_permission(self, request):
return False
def has_delete_permission(self, request, obj=None):
return False
def has_change_permission(self, request, obj=None):
return request.user.is_staff
admin.site.register(CourseCreator, CourseCreatorAdmin)
......@@ -8,24 +8,24 @@ from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Adding model 'CourseCreators'
db.create_table('course_creators_coursecreators', (
# Adding model 'CourseCreator'
db.create_table('course_creators_coursecreator', (
('username', self.gf('django.db.models.fields.CharField')(unique=True, max_length=64, primary_key=True)),
('state_changed', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
('state', self.gf('django.db.models.fields.CharField')(default='u', max_length=1)),
('note', self.gf('django.db.models.fields.CharField')(max_length=512, blank=True)),
))
db.send_create_signal('course_creators', ['CourseCreators'])
db.send_create_signal('course_creators', ['CourseCreator'])
def backwards(self, orm):
# Deleting model 'CourseCreators'
db.delete_table('course_creators_coursecreators')
# Deleting model 'CourseCreator'
db.delete_table('course_creators_coursecreator')
models = {
'course_creators.coursecreators': {
'Meta': {'object_name': 'CourseCreators'},
'course_creators.coursecreator': {
'Meta': {'object_name': 'CourseCreator'},
'note': ('django.db.models.fields.CharField', [], {'max_length': '512', 'blank': 'True'}),
'state': ('django.db.models.fields.CharField', [], {'default': "'u'", 'max_length': '1'}),
'state_changed': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
......
......@@ -2,9 +2,14 @@
Table for storing information about whether or not Studio users have course creation privileges.
"""
from django.db import models
from django.db.models.signals import post_init, post_save
from django.dispatch import receiver
from auth.authz import add_user_to_creator_group, remove_user_from_creator_group
import datetime
class CourseCreators(models.Model):
class CourseCreator(models.Model):
"""
Creates the database table model.
"""
......@@ -23,7 +28,30 @@ class CourseCreators(models.Model):
note = models.CharField(max_length=512, blank=True, help_text='Optional notes about this user (for example, '
'why course creation access was denied)')
def __unicode__(self):
s = "%s | %s [%s] | %s" % (self.username, self.state, self.state_changed, self.note)
return s
@receiver(post_init, sender=CourseCreator)
def post_init_callback(sender, **kwargs):
instance = kwargs['instance']
instance.orig_state = instance.state
@receiver(post_save, sender=CourseCreator)
def post_save_callback(sender, **kwargs):
instance = kwargs['instance']
# We only wish to modify the state_changed time if the state has been modified. We don't wish to
# modify it for changes to the notes field.
if instance.state != instance.orig_state:
instance.state_changed = datetime.datetime.now()
if instance.state == 'g':
# add to course group
instance.state = 'g'
else:
# remove from course group
instance.state = instance.state
instance.orig_state = instance.state
instance.save()
from course_creators.models import CourseCreator
def add_user_with_status_unrequested(user):
"""
Adds a user to the course creator table with status 'unrequested'.
"""
_add_user(user, 'u')
def add_user_with_status_granted(user):
"""
Adds a user to the course creator table with status 'granted'.
"""
_add_user(user, 'g')
def _add_user(user, state):
if CourseCreator.objects.filter(username=user.username).count() == 0:
entry = CourseCreator(username=user.username, state=state)
entry.save()
\ No newline at end of file
......@@ -346,6 +346,9 @@ INSTALLED_APPS = (
# comment common
'django_comment_common',
# for course creator table
'django.contrib.admin'
)
################# EDX MARKETING SITE ##################################
......
......@@ -6,8 +6,8 @@ from django.conf.urls import patterns, include, url
from . import one_time_startup
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()
from django.contrib import admin
admin.autodiscover()
urlpatterns = ('', # nopep8
url(r'^$', 'contentstore.views.howitworks', name='homepage'),
......@@ -146,6 +146,10 @@ if settings.MITX_FEATURES.get('ENABLE_SERVICE_STATUS'):
url(r'^status/', include('service_status.urls')),
)
urlpatterns += (
url(r'^admin/', include(admin.site.urls)),
)
urlpatterns = patterns(*urlpatterns)
# Custom error pages
......
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