Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
19356ffd
Commit
19356ffd
authored
May 15, 2014
by
Piotr Mitros
Committed by
David Baumgold
Sep 23, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Puts course listings in a sane order
parent
83c54d4e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
25 additions
and
9 deletions
+25
-9
common/djangoapps/student/views.py
+18
-8
lms/djangoapps/courseware/models.py
+6
-0
lms/templates/dashboard.html
+1
-1
No files found.
common/djangoapps/student/views.py
View file @
19356ffd
"""
Student Views
"""
import
datetime
import
logging
import
re
import
uuid
import
time
import
json
from
collections
import
defaultdict
from
datetime
import
datetime
from
pytz
import
UTC
from
django.conf
import
settings
...
...
@@ -42,6 +42,7 @@ from edxmako.shortcuts import render_to_response, render_to_string
from
mako.exceptions
import
TopLevelLookupException
from
course_modes.models
import
CourseMode
from
student.models
import
(
Registration
,
UserProfile
,
PendingNameChange
,
PendingEmailChange
,
CourseEnrollment
,
unique_id_for_user
,
...
...
@@ -64,6 +65,7 @@ from collections import namedtuple
from
courseware.courses
import
get_courses
,
sort_by_announcement
from
courseware.access
import
has_access
from
courseware.models
import
course_modified_times
from
django_comment_common.models
import
Role
...
...
@@ -226,7 +228,7 @@ def single_course_reverification_info(user, course, enrollment): # pylint: disa
ReverifyInfo: (course_id, course_name, course_number, date, status)
OR, None: None if there is no re-verification info for this enrollment
"""
window
=
MidcourseReverificationWindow
.
get_window
(
course
.
id
,
datetime
.
datetime
.
now
(
UTC
))
window
=
MidcourseReverificationWindow
.
get_window
(
course
.
id
,
datetime
.
now
(
UTC
))
# If there's no window OR the user is not verified, we don't get reverification info
if
(
not
window
)
or
(
enrollment
.
mode
!=
"verified"
):
...
...
@@ -244,6 +246,8 @@ def get_course_enrollment_pairs(user, course_org_filter, org_filter_out_set):
Get the relevant set of (Course, CourseEnrollment) pairs to be displayed on
a student's dashboard.
"""
pairs
=
[]
for
enrollment
in
CourseEnrollment
.
enrollments_for_user
(
user
):
course
=
modulestore
()
.
get_course
(
enrollment
.
course_id
)
if
course
and
not
isinstance
(
course
,
ErrorDescriptor
):
...
...
@@ -257,12 +261,18 @@ def get_course_enrollment_pairs(user, course_org_filter, org_filter_out_set):
elif
course
.
location
.
org
in
org_filter_out_set
:
continue
yield
(
course
,
enrollment
)
pairs
.
append
((
course
,
enrollment
)
)
else
:
log
.
error
(
"User {0} enrolled in {2} course {1}"
.
format
(
user
.
username
,
enrollment
.
course_id
,
"broken"
if
course
else
"non-existent"
))
## Sort pairs in order of courseware access. If I am actively using a course, it should bubble up to the top.
modified_times_map
=
course_modified_times
(
user
,
[
p
[
0
]
.
scope_ids
.
usage_id
for
p
in
pairs
])
def
key_function
(
x
):
return
modified_times_map
.
get
(
unicode
(
x
[
0
]
.
scope_ids
.
usage_id
),
datetime
.
min
)
pairs
.
sort
(
key
=
key_function
,
reverse
=
True
)
return
pairs
def
_cert_info
(
user
,
course
,
cert_status
):
"""
...
...
@@ -429,7 +439,7 @@ def complete_course_mode_info(course_id, enrollment):
mode_info
[
'show_upsell'
]
=
True
# if there is an expiration date, find out how long from now it is
if
modes
[
'verified'
]
.
expiration_datetime
:
today
=
datetime
.
datetime
.
now
(
UTC
)
.
date
()
today
=
datetime
.
now
(
UTC
)
.
date
()
mode_info
[
'days_for_upsell'
]
=
(
modes
[
'verified'
]
.
expiration_datetime
.
date
()
-
today
)
.
days
return
mode_info
...
...
@@ -1167,7 +1177,7 @@ def disable_account_ajax(request):
context
[
'message'
]
=
_
(
"Unexpected account status"
)
return
JsonResponse
(
context
,
status
=
400
)
user_account
.
changed_by
=
request
.
user
user_account
.
standing_last_changed_at
=
datetime
.
datetime
.
now
(
UTC
)
user_account
.
standing_last_changed_at
=
datetime
.
now
(
UTC
)
user_account
.
save
()
return
JsonResponse
(
context
)
...
...
@@ -1552,7 +1562,7 @@ def create_account(request, post_override=None): # pylint: disable-msg=too-many
if
do_external_auth
:
eamap
.
user
=
new_user
eamap
.
dtsignup
=
datetime
.
datetime
.
now
(
UTC
)
eamap
.
dtsignup
=
datetime
.
now
(
UTC
)
eamap
.
save
()
AUDIT_LOG
.
info
(
"User registered with external_auth
%
s"
,
post_vars
[
'username'
])
AUDIT_LOG
.
info
(
'Updated ExternalAuthMap for
%
s to be
%
s'
,
post_vars
[
'username'
],
eamap
)
...
...
@@ -1980,7 +1990,7 @@ def confirm_email_change(request, key): # pylint: disable=unused-argument
meta
=
u_prof
.
get_meta
()
if
'old_emails'
not
in
meta
:
meta
[
'old_emails'
]
=
[]
meta
[
'old_emails'
]
.
append
([
user
.
email
,
datetime
.
datetime
.
now
(
UTC
)
.
isoformat
()])
meta
[
'old_emails'
]
.
append
([
user
.
email
,
datetime
.
now
(
UTC
)
.
isoformat
()])
u_prof
.
set_meta
(
meta
)
u_prof
.
save
()
# Send it to the old email...
...
...
@@ -2100,7 +2110,7 @@ def accept_name_change_by_id(uid):
meta
=
u_prof
.
get_meta
()
if
'old_names'
not
in
meta
:
meta
[
'old_names'
]
=
[]
meta
[
'old_names'
]
.
append
([
u_prof
.
name
,
pnc
.
rationale
,
datetime
.
datetime
.
now
(
UTC
)
.
isoformat
()])
meta
[
'old_names'
]
.
append
([
u_prof
.
name
,
pnc
.
rationale
,
datetime
.
now
(
UTC
)
.
isoformat
()])
u_prof
.
set_meta
(
meta
)
u_prof
.
name
=
pnc
.
new_name
...
...
lms/djangoapps/courseware/models.py
View file @
19356ffd
...
...
@@ -93,6 +93,12 @@ class StudentModule(models.Model):
return
unicode
(
repr
(
self
))
def
course_modified_times
(
user
,
ids
):
''' Returns the times when a given studentmodule was last modified.
'''
results
=
StudentModule
.
objects
.
filter
(
student
=
user
,
module_state_key__in
=
ids
)
.
values_list
(
'module_state_key'
,
'modified'
)
return
dict
(
results
)
class
StudentModuleHistory
(
models
.
Model
):
"""Keeps a complete history of state changes for a given XModule for a given
Student. Right now, we restrict this to problems so that the table doesn't
...
...
lms/templates/dashboard.html
View file @
19356ffd
...
...
@@ -291,7 +291,7 @@
<section
class=
"my-courses"
id=
"my-courses"
>
<header>
<
h2>
${_("Current Courses")}
</h2
>
<
div
style=
"display:flex"
><h2>
${_("Courses")}
</h2><div
style=
"flex-grow:1"
></div><div
style=
"font-size: 13px; color: #646464;"
>
${_("ordered by recent activity")}
</div></div
>
</header>
% if len(course_enrollment_pairs) > 0:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment