Refactor common code, fix view a bit
remaining: * support putting multiple names / emails in the big box we now have
This commit is contained in:
@@ -250,11 +250,7 @@ def instructor_dashboard(request, course_id):
|
||||
elif 'List course staff' in action:
|
||||
group = get_staff_group(course)
|
||||
msg += 'Staff group = {0}'.format(group.name)
|
||||
log.debug('staffgrp={0}'.format(group.name))
|
||||
uset = group.user_set.all()
|
||||
datatable = {'header': ['Username', 'Full name']}
|
||||
datatable['data'] = [[x.username, x.profile.name] for x in uset]
|
||||
datatable['title'] = 'List of Staff in course {0}'.format(course_id)
|
||||
datatable = _group_members_table(group, "List of Staff", course_id)
|
||||
track.views.server_track(request, 'list-staff', {}, page='idashboard')
|
||||
|
||||
elif 'List course instructors' in action and request.user.is_staff:
|
||||
@@ -269,17 +265,8 @@ def instructor_dashboard(request, course_id):
|
||||
|
||||
elif action == 'Add course staff':
|
||||
uname = request.POST['staffuser']
|
||||
try:
|
||||
user = User.objects.get(username=uname)
|
||||
except User.DoesNotExist:
|
||||
msg += '<font color="red">Error: unknown username "{0}"</font>'.format(uname)
|
||||
user = None
|
||||
if user is not None:
|
||||
group = get_staff_group(course)
|
||||
msg += '<font color="green">Added {0} to staff group = {1}</font>'.format(user, group.name)
|
||||
log.debug('staffgrp={0}'.format(group.name))
|
||||
user.groups.add(group)
|
||||
track.views.server_track(request, 'add-staff {0}'.format(user), {}, page='idashboard')
|
||||
group = get_staff_group(course)
|
||||
msg += add_user_to_group(request, uname, group, 'staff', 'staff')
|
||||
|
||||
elif action == 'Add instructor' and request.user.is_staff:
|
||||
uname = request.POST['instructor']
|
||||
@@ -297,17 +284,8 @@ def instructor_dashboard(request, course_id):
|
||||
|
||||
elif action == 'Remove course staff':
|
||||
uname = request.POST['staffuser']
|
||||
try:
|
||||
user = User.objects.get(username=uname)
|
||||
except User.DoesNotExist:
|
||||
msg += '<font color="red">Error: unknown username "{0}"</font>'.format(uname)
|
||||
user = None
|
||||
if user is not None:
|
||||
group = get_staff_group(course)
|
||||
msg += '<font color="green">Removed {0} from staff group = {1}</font>'.format(user, group.name)
|
||||
log.debug('staffgrp={0}'.format(group.name))
|
||||
user.groups.remove(group)
|
||||
track.views.server_track(request, 'remove-staff {0}'.format(user), {}, page='idashboard')
|
||||
group = get_staff_group(course)
|
||||
msg += remove_user_from_group(request, uname, group, 'staff', 'staff')
|
||||
|
||||
elif action == 'Remove instructor' and request.user.is_staff:
|
||||
uname = request.POST['instructor']
|
||||
@@ -334,32 +312,13 @@ def instructor_dashboard(request, course_id):
|
||||
|
||||
elif action == 'Add beta testers':
|
||||
uname = request.POST['betausers']
|
||||
try:
|
||||
user = User.objects.get(username=uname)
|
||||
except User.DoesNotExist:
|
||||
msg += '<font color="red">Error: unknown username "{0}"</font>'.format(uname)
|
||||
user = None
|
||||
if user is not None:
|
||||
group = get_beta_group(course)
|
||||
msg += '<font color="green">Added {0} to beta testers group = {1}</font>'.format(user, group.name)
|
||||
log.debug('staffgrp={0}'.format(group.name))
|
||||
user.groups.add(group)
|
||||
track.views.server_track(request, 'add-beta-tester {0}'.format(user), {}, page='idashboard')
|
||||
group = get_beta_group(course)
|
||||
msg += add_user_to_group(request, uname, group, 'beta testers', 'beta-tester')
|
||||
|
||||
elif action == 'Remove beta testers':
|
||||
uname = request.POST['betausers']
|
||||
try:
|
||||
user = User.objects.get(username=uname)
|
||||
except User.DoesNotExist:
|
||||
msg += '<font color="red">Error: unknown username "{0}"</font>'.format(uname)
|
||||
user = None
|
||||
if user is not None:
|
||||
group = get_beta_group(course)
|
||||
msg += '<font color="green">Removed {0} from beta tester group = {1}</font>'.format(user, group.name)
|
||||
log.debug('staffgrp={0}'.format(group.name))
|
||||
user.groups.remove(group)
|
||||
track.views.server_track(request, 'remove-beta-tester {0}'.format(user), {}, page='idashboard')
|
||||
|
||||
group = get_beta_group(course)
|
||||
msg += remove_user_from_group(request, uname, group, 'beta testers', 'beta-tester')
|
||||
|
||||
#----------------------------------------
|
||||
# forum administration
|
||||
@@ -661,6 +620,67 @@ def _group_members_table(group, title, course_id):
|
||||
datatable['title'] = '{0} in course {1}'.format(title, course_id)
|
||||
return datatable
|
||||
|
||||
def add_user_to_group(request, username_or_email, group, group_title, event_name):
|
||||
"""
|
||||
Look up the given user by username (if no '@') or email (otherwise), and add them to group.
|
||||
|
||||
Arguments:
|
||||
request: django request--used for tracking log
|
||||
username_or_email: who to add. Decide if it's an email by presense of an '@'
|
||||
group: django group object
|
||||
group_title: what to call this group in messages to user--e.g. "beta-testers".
|
||||
event_name: what to call this event when logging to tracking logs.
|
||||
|
||||
Returns:
|
||||
html to insert in the message field
|
||||
"""
|
||||
user = None
|
||||
try:
|
||||
if '@' in username_or_email:
|
||||
user = User.objects.get(email=username_or_email)
|
||||
else:
|
||||
user = User.objects.get(username=username_or_email)
|
||||
except User.DoesNotExist:
|
||||
msg = '<font color="red">Error: unknown username "{0}"</font>'.format(uname)
|
||||
user = None
|
||||
|
||||
if user is not None:
|
||||
msg = '<font color="green">Added {0} to {1} group = {2}</font>'.format(user, group_title, group.name)
|
||||
user.groups.add(group)
|
||||
track.views.server_track(request, 'add-{0} {1}'.format(event_name, user), {}, page='idashboard')
|
||||
|
||||
return msg
|
||||
|
||||
def remove_user_from_group(request, username_or_email, group, group_title, event_name):
|
||||
"""
|
||||
Look up the given user by username (if no '@') or email (otherwise), and remove them from group.
|
||||
|
||||
Arguments:
|
||||
request: django request--used for tracking log
|
||||
username_or_email: who to remove. Decide if it's an email by presense of an '@'
|
||||
group: django group object
|
||||
group_title: what to call this group in messages to user--e.g. "beta-testers".
|
||||
event_name: what to call this event when logging to tracking logs.
|
||||
|
||||
Returns:
|
||||
html to insert in the message field
|
||||
"""
|
||||
user = None
|
||||
try:
|
||||
if '@' in username_or_email:
|
||||
user = User.objects.get(email=username_or_email)
|
||||
else:
|
||||
user = User.objects.get(username=username_or_email)
|
||||
except User.DoesNotExist:
|
||||
msg = '<font color="red">Error: unknown username "{0}"</font>'.format(uname)
|
||||
user = None
|
||||
|
||||
if user is not None:
|
||||
msg = '<font color="green">Removed {0} from {1} group = {2}</font>'.format(user, group_title, group.name)
|
||||
user.groups.remove(group)
|
||||
track.views.server_track(request, 'remove-{0} {1}'.format(event_name, user), {}, page='idashboard')
|
||||
|
||||
return msg
|
||||
|
||||
|
||||
def get_student_grade_summary_data(request, course, course_id, get_grades=True, get_raw_scores=False, use_offline=False):
|
||||
|
||||
@@ -36,6 +36,9 @@ table.stat_table td {
|
||||
|
||||
a.selectedmode { background-color: yellow; }
|
||||
|
||||
textarea {
|
||||
height: 200px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
@@ -267,9 +270,11 @@ function goto( mode)
|
||||
<p>
|
||||
Enter usernames or emails for students who should be beta-testers. They will get to see course materials early, as configured via the <tt>days_early_for_beta</tt> option in the course policy.
|
||||
</p>
|
||||
<input type="textarea" name="betausers">
|
||||
<input type="submit" name="action" value="Add beta testers">
|
||||
<p>
|
||||
<textarea cols="50" row="30" name="betausers"></textarea>
|
||||
<input type="submit" name="action" value="Remove beta testers">
|
||||
<input type="submit" name="action" value="Add beta testers">
|
||||
</p>
|
||||
<hr width="40%" style="align:left">
|
||||
%endif
|
||||
%endif
|
||||
|
||||
Reference in New Issue
Block a user