Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
course-discovery
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
course-discovery
Commits
196dc46e
Commit
196dc46e
authored
Aug 05, 2016
by
Bill DeRusha
Committed by
GitHub
Aug 05, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #203 from edx/bderusha/course-detail
Bderusha/course detail
parents
e5a8a824
5eb62a25
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
217 additions
and
34 deletions
+217
-34
course_discovery/apps/publisher/tests/test_wrapper.py
+3
-2
course_discovery/apps/publisher/urls.py
+1
-0
course_discovery/apps/publisher/views.py
+11
-12
course_discovery/apps/publisher/wrappers.py
+12
-0
course_discovery/static/js/publisher/publisher.js
+2
-3
course_discovery/static/sass/publisher/course_detail.scss
+6
-2
course_discovery/templates/publisher/course_run_detail.html
+10
-12
course_discovery/templates/publisher/course_run_detail/_all.html
+164
-0
course_discovery/templates/publisher/course_run_detail/_cat.html
+2
-2
course_discovery/templates/publisher/course_run_detail/_credit_seat.html
+0
-0
course_discovery/templates/publisher/course_run_detail/_drupal.html
+2
-1
course_discovery/templates/publisher/course_run_detail/_seats.html
+0
-0
course_discovery/templates/publisher/course_run_detail/_studio.html
+0
-0
course_discovery/templates/publisher/course_runs_list.html
+4
-0
No files found.
course_discovery/apps/publisher/tests/test_wrapper.py
View file @
196dc46e
# pylint: disable=no-member
import
ddt
from
django.test
import
TestCase
from
unittest
import
mock
from
django.test
import
TestCase
from
course_discovery.apps.course_metadata.tests.factories
import
OrganizationFactory
from
course_discovery.apps.publisher.models
import
Seat
from
course_discovery.apps.publisher.tests
import
factories
from
course_discovery.apps.publisher.wrappers
import
CourseRunWrapper
from
course_discovery.apps.publisher.models
import
Seat
@ddt.ddt
...
...
course_discovery/apps/publisher/urls.py
View file @
196dc46e
...
...
@@ -11,6 +11,7 @@ urlpatterns = [
url
(
r'^course_runs/(?P<pk>\d+)/$'
,
views
.
CourseRunDetailView
.
as_view
(),
name
=
'publisher_course_run_detail'
),
url
(
r'^course_runs/$'
,
views
.
CourseRunListView
.
as_view
(),
name
=
'publisher_course_runs'
),
url
(
r'^course_runs/new$'
,
views
.
CreateCourseRunView
.
as_view
(),
name
=
'publisher_course_runs_new'
),
url
(
r'^course_runs/(?P<pk>\d+)/$'
,
views
.
CourseRunDetailView
.
as_view
(),
name
=
'publisher_course_run_detail'
),
url
(
r'^course_runs/(?P<pk>\d+)/edit/$'
,
views
.
UpdateCourseRunView
.
as_view
(),
name
=
'publisher_course_runs_edit'
),
url
(
r'^seats/new$'
,
views
.
CreateSeatView
.
as_view
(),
name
=
'publisher_seats_new'
),
url
(
r'^seats/(?P<pk>\d+)/edit/$'
,
views
.
UpdateSeatView
.
as_view
(),
name
=
'publisher_seats_edit'
),
...
...
course_discovery/apps/publisher/views.py
View file @
196dc46e
...
...
@@ -10,6 +10,8 @@ from course_discovery.apps.publisher.forms import CourseForm, CourseRunForm, Sea
from
course_discovery.apps.publisher.models
import
Course
,
CourseRun
,
Seat
from
course_discovery.apps.publisher.wrappers
import
CourseRunWrapper
SEATS_HIDDEN_FIELDS
=
[
'price'
,
'currency'
,
'upgrade_deadline'
,
'credit_provider'
,
'credit_hours'
]
class
CourseRunListView
(
ListView
):
""" Create Course View."""
...
...
@@ -21,7 +23,15 @@ class CourseRunListView(ListView):
]
SEATS_HIDDEN_FIELDS
=
[
'price'
,
'currency'
,
'upgrade_deadline'
,
'credit_provider'
,
'credit_hours'
]
class
CourseRunDetailView
(
DetailView
):
""" Course Run Detail View."""
model
=
CourseRun
template_name
=
'publisher/course_run_detail.html'
def
get_context_data
(
self
,
**
kwargs
):
context
=
super
(
CourseRunDetailView
,
self
)
.
get_context_data
(
**
kwargs
)
context
[
'object'
]
=
CourseRunWrapper
(
context
[
'object'
])
return
context
# pylint: disable=attribute-defined-outside-init
...
...
@@ -123,14 +133,3 @@ class UpdateSeatView(UpdateView):
def
get_success_url
(
self
):
return
reverse
(
self
.
success_url
,
kwargs
=
{
'pk'
:
self
.
object
.
id
})
class
CourseRunDetailView
(
DetailView
):
""" Course RunDetail View."""
model
=
CourseRun
template_name
=
'publisher/run_detail/home.html'
def
get_context_data
(
self
,
**
kwargs
):
context
=
super
(
CourseRunDetailView
,
self
)
.
get_context_data
(
**
kwargs
)
context
[
'object'
]
=
CourseRunWrapper
(
context
[
'object'
])
return
context
course_discovery/apps/publisher/wrappers.py
View file @
196dc46e
...
...
@@ -77,6 +77,14 @@ class CourseRunWrapper(BaseWrapper):
return
self
.
wrapped_obj
.
course
.
prerequisites
@property
def
learner_testimonial
(
self
):
return
self
.
wrapped_obj
.
course
.
learner_testimonial
@property
def
syllabus
(
self
):
return
self
.
wrapped_obj
.
course
.
syllabus
@property
def
subjects
(
self
):
return
[
self
.
wrapped_obj
.
course
.
primary_subject
,
...
...
@@ -85,6 +93,10 @@ class CourseRunWrapper(BaseWrapper):
]
@property
def
subject_names
(
self
):
return
', '
.
join
([
subject
.
name
for
subject
in
self
.
subjects
])
@property
def
course_type
(
self
):
seats_types
=
[
seat
.
type
for
seat
in
self
.
wrapped_obj
.
seats
.
all
()]
if
[
Seat
.
AUDIT
]
==
seats_types
:
...
...
course_discovery/static/js/publisher/publisher.js
View file @
196dc46e
$
(
".container a"
).
click
(
function
(
event
)
{
event
.
preventDefault
();
$
(
".container button"
).
click
(
function
(
event
)
{
$
(
this
).
addClass
(
"selected"
);
$
(
this
).
siblings
().
removeClass
(
"selected"
);
var
tab
=
$
(
this
).
attr
(
"href
"
);
var
tab
=
$
(
this
).
data
(
"tab
"
);
$
(
".tab-content"
).
not
(
tab
).
css
(
"display"
,
"none"
);
$
(
tab
).
fadeIn
();
});
course_discovery/static/sass/publisher/course_detail.scss
View file @
196dc46e
...
...
@@ -54,10 +54,14 @@ nav {
.container
{
a
{
display
:
inline-
block
;
button
{
display
:
block
;
padding
:
10px
;
color
:
#0ea6ec
;
@include
float
(
left
)
margin
:
0
5px
;
border
:
none
;
background-color
:
transparent
;
&
.selected
{
border-bottom
:
4px
solid
#0ea6ec
;
...
...
course_discovery/templates/publisher/
run_detail/home
.html
→
course_discovery/templates/publisher/
course_run_detail
.html
View file @
196dc46e
...
...
@@ -10,16 +10,16 @@
<nav
class=
"administration-navbar"
>
<div
class=
"container"
>
<
a
class=
"selected"
href=
"#tab-1"
>
{% trans "All" %}
</a
>
<
a
href=
"#tab-2"
>
{% trans "STUDIO" %}
</a
>
<
a
href=
"#tab-3"
>
{% trans "CAT" %}
</a
>
<
a
href
=
"#tab-4"
>
{% trans "DRUPAL" %}
</a>
<
button
class=
"selected"
data-tab=
"#tab-1"
>
{% trans "All" %}
</button
>
<
button
data-tab=
"#tab-2"
>
{% trans "STUDIO" %}
</button
>
<
button
data-tab=
"#tab-3"
>
{% trans "CAT" %}
</button
>
<
button
data-tab
=
"#tab-4"
>
{% trans "DRUPAL" %}
</a>
</div>
</nav>
<div
id=
"app"
class=
"container"
>
<ol
class=
"breadcrumb"
>
<li><a
href=
"{% url 'publisher:publisher_course_run
_detail' pk=object.wrapped_obj.id
%}"
>
{% trans "Courses" %}
</a></li>
<li><a
href=
"{% url 'publisher:publisher_course_run
s'
%}"
>
{% trans "Courses" %}
</a></li>
<li
class=
"active"
>
{{ object.title }}
</li>
</ol>
<div
class=
"page-header"
>
...
...
@@ -30,18 +30,16 @@
<div
class=
"tab"
>
<div
id=
"tab-1"
class=
"tab-content active"
>
{% include 'publisher/run_detail/_studio.html' %}
{% include 'publisher/run_detail/_cat.html' %}
{% include 'publisher/run_detail/_drupal.html' %}
{% include 'publisher/course_run_detail/_all.html' %}
</div>
<div
id=
"tab-2"
class=
"tab-content
active
"
>
{% include 'publisher/run_detail/_studio.html' %}
<div
id=
"tab-2"
class=
"tab-content"
>
{% include 'publisher/
course_
run_detail/_studio.html' %}
</div>
<div
id=
"tab-3"
class=
"tab-content"
>
{% include 'publisher/run_detail/_cat.html' %}
{% include 'publisher/
course_
run_detail/_cat.html' %}
</div>
<div
id=
"tab-4"
class=
"tab-content"
>
{% include 'publisher/run_detail/_drupal.html' %}
{% include 'publisher/
course_
run_detail/_drupal.html' %}
</div>
</div>
</div>
...
...
course_discovery/templates/publisher/course_run_detail/_all.html
0 → 100644
View file @
196dc46e
{% load i18n %}
<div
class=
"course-information"
>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Title" %}
</div>
<div>
{{ object.title }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Number" %}
</div>
<div>
{{ object.number }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Course ID" %}
</div>
<div>
{{ object.lms_course_id }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Is Re-run?" %}
</div>
<div>
{{ object.is_re_run }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Course Subtitle" %}
</div>
<div>
{{ object.short_description }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Partner Name" %}
</div>
<div>
{{ object.partner }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Subjects" %}
</div>
<div>
{{ object.subject_names }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Part of an Xseries?" %}
</div>
<div>
{{ object.is_xseries }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Xseries Name" %}
</div>
<div>
{{ object.xseries_name }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Part of a Micromasters?" %}
</div>
<div>
{{ object.is_micromasters }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Micromasters Name" %}
</div>
<div>
{{ object.micromasters_name }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Enrollment Type" %}
</div>
<div>
{{ object.course_type }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Price" %}
</div>
<div>
{{ object.verified_seat_price }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Course Start Date" %}
</div>
<div>
{{ object.start }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Course End Date" %}
</div>
<div>
{{ object.end }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Certificate Generation Date Exception Request" %}
</div>
<div>
{{ object.certificate_generation }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Course Length (weeks)" %}
</div>
<div>
{{ object.length }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Pacing Type" %}
</div>
<div>
{{ object.pacing_type }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Estimated Effort" %}
</div>
<div>
{% if object.min_effort and object.max_effort %}
{{ object.min_effort }} {% trans "to" %} {{ object.max_effort }} {% trans "hours per week" %}
{% endif %}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Course Languages" %}
</div>
<div>
{{ object.language.name }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Video Translation Languages" %}
</div>
<div>
{{ object.video_languages }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Course Level" %}
</div>
<div>
{{ object.level_type }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "About This Course" %}
</div>
<div>
{{ object.full_description }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "What You'll Learn" %}
</div>
<div>
{{ object.expected_learnings }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Learner Testimonial" %}
</div>
<div>
{{ object.learner_testimonial }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Syllabus" %}
</div>
<div>
{{ object.syllabus }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Prerequisites" %}
</div>
<div>
{{ object.prerequisites }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Search Engine Optimization Review" %}
</div>
<div>
{{ object.seo_review }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Top 10 Keywords" %}
</div>
<div>
{{ object.keywords }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "edX Username or email address of Course Team Admin(s)" %}
</div>
<div>
{{ object.course_team_admins }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "edX Username or email address of additional course team members (Staff)" %}
</div>
<div>
{{ object.course_team_additional_staff }}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Additional Notes" %}
</div>
<div>
{{ object.notes }}
</div>
</div>
</div>
course_discovery/templates/publisher/run_detail/_cat.html
→
course_discovery/templates/publisher/
course_
run_detail/_cat.html
View file @
196dc46e
...
...
@@ -19,8 +19,8 @@
{% include 'publisher/run_detail/_seats.html' %}
{% include 'publisher/run_detail/_credit_seat.html' %}
{% include 'publisher/
course_
run_detail/_seats.html' %}
{% include 'publisher/
course_
run_detail/_credit_seat.html' %}
{% endblock %}
course_discovery/templates/publisher/run_detail/_credit_seat.html
→
course_discovery/templates/publisher/
course_
run_detail/_credit_seat.html
View file @
196dc46e
File moved
course_discovery/templates/publisher/run_detail/_drupal.html
→
course_discovery/templates/publisher/
course_
run_detail/_drupal.html
View file @
196dc46e
...
...
@@ -58,7 +58,8 @@
<div>
{% if object.min_effort and object.max_effort %}
{{ object.min_effort }} {% trans "to" %} {{ object.max_effort }} {% trans "hours per week" %}
{% endif %}
</div>
{% endif %}
</div>
</div>
<div
class=
"info-item"
>
<div
class=
"heading"
>
{% trans "Languages" %}
</div>
...
...
course_discovery/templates/publisher/run_detail/_seats.html
→
course_discovery/templates/publisher/
course_
run_detail/_seats.html
View file @
196dc46e
File moved
course_discovery/templates/publisher/run_detail/_studio.html
→
course_discovery/templates/publisher/
course_
run_detail/_studio.html
View file @
196dc46e
File moved
course_discovery/templates/publisher/course_runs_list.html
View file @
196dc46e
...
...
@@ -18,8 +18,12 @@
<th>
{% trans "Last Updated" %}
</th>
</tr>
{% for course_run in object_list %}
{% url 'publisher:publisher_course_run_detail' course_run.id as detail_url %}
<tr>
<td>
{{ course_run.title }}
</td>
<td>
<a
href=
{{detail_url}}
>
{{ course_run.title }}
</a>
</td>
<td>
{{ course_run.start }}
</td>
<td>
{{ course_run.partner }}
</td>
<td>
{{ course_run.target_content }}
</td>
...
...
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