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
5f024f8e
Commit
5f024f8e
authored
Sep 25, 2017
by
Clinton Blackburn
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Exposed upgraded deadline on course run form
LEARNER-2621
parent
066d6216
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
37 additions
and
17 deletions
+37
-17
course_discovery/apps/publisher/forms.py
+17
-13
course_discovery/apps/publisher/tests/test_forms.py
+18
-2
course_discovery/apps/publisher/views.py
+2
-2
No files found.
course_discovery/apps/publisher/forms.py
View file @
5f024f8e
import
datetime
import
html
import
html
from
dal
import
autocomplete
from
dal
import
autocomplete
...
@@ -396,14 +397,16 @@ class SeatForm(BaseForm):
...
@@ -396,14 +397,16 @@ class SeatForm(BaseForm):
]
]
type
=
forms
.
ChoiceField
(
choices
=
TYPE_CHOICES
,
required
=
False
,
label
=
_
(
'Enrollment Track'
))
type
=
forms
.
ChoiceField
(
choices
=
TYPE_CHOICES
,
required
=
False
,
label
=
_
(
'Enrollment Track'
))
price
=
forms
.
DecimalField
(
max_digits
=
6
,
decimal_places
=
2
,
required
=
False
,
initial
=
0.00
)
credit_price
=
forms
.
DecimalField
(
max_digits
=
6
,
decimal_places
=
2
,
required
=
False
,
initial
=
0.00
)
credit_price
=
forms
.
DecimalField
(
max_digits
=
6
,
decimal_places
=
2
,
required
=
False
,
initial
=
0.00
)
class
Meta
:
class
Meta
:
fields
=
(
'price'
,
'type'
,
'credit_price'
)
fields
=
(
'price'
,
'type'
,
'credit_price'
,
'course_run'
,
'upgrade_deadline'
,
)
model
=
Seat
model
=
Seat
widgets
=
{
'course_run'
:
forms
.
HiddenInput
(),
}
def
save
(
self
,
commit
=
True
,
course_run
=
None
,
changed_by
=
None
):
# pylint: disable=arguments-differ
def
save
(
self
,
commit
=
True
):
# When seat is save make sure its prices and others fields updated accordingly.
# When seat is save make sure its prices and others fields updated accordingly.
seat
=
super
(
SeatForm
,
self
)
.
save
(
commit
=
False
)
seat
=
super
(
SeatForm
,
self
)
.
save
(
commit
=
False
)
if
seat
.
type
in
[
Seat
.
HONOR
,
Seat
.
AUDIT
]:
if
seat
.
type
in
[
Seat
.
HONOR
,
Seat
.
AUDIT
]:
...
@@ -416,21 +419,16 @@ class SeatForm(BaseForm):
...
@@ -416,21 +419,16 @@ class SeatForm(BaseForm):
seat
.
upgrade_deadline
=
None
seat
.
upgrade_deadline
=
None
self
.
reset_credit_to_default
(
seat
)
self
.
reset_credit_to_default
(
seat
)
if
course_run
:
seat
.
course_run
=
course_run
if
changed_by
:
seat
.
changed_by
=
changed_by
if
commit
:
if
commit
:
seat
.
save
()
seat
.
save
()
return
seat
return
seat
def
clean
(
self
):
def
clean
(
self
):
price
=
self
.
cleaned_data
.
get
(
'price'
)
cleaned_data
=
super
()
.
clean
()
credit_price
=
self
.
cleaned_data
.
get
(
'credit_price'
)
price
=
cleaned_data
.
get
(
'price'
)
seat_type
=
self
.
cleaned_data
.
get
(
'type'
)
credit_price
=
cleaned_data
.
get
(
'credit_price'
)
seat_type
=
cleaned_data
.
get
(
'type'
)
if
seat_type
and
seat_type
!=
Seat
.
AUDIT
and
not
price
:
if
seat_type
and
seat_type
!=
Seat
.
AUDIT
and
not
price
:
self
.
add_error
(
'price'
,
_
(
'Please specify a price.'
))
self
.
add_error
(
'price'
,
_
(
'Please specify a price.'
))
...
@@ -438,7 +436,13 @@ class SeatForm(BaseForm):
...
@@ -438,7 +436,13 @@ class SeatForm(BaseForm):
if
seat_type
==
Seat
.
CREDIT
and
not
credit_price
:
if
seat_type
==
Seat
.
CREDIT
and
not
credit_price
:
self
.
add_error
(
'credit_price'
,
_
(
'Please specify a price for credit.'
))
self
.
add_error
(
'credit_price'
,
_
(
'Please specify a price for credit.'
))
return
self
.
cleaned_data
if
not
cleaned_data
.
get
(
'upgrade_deadline'
):
course_run
=
cleaned_data
.
get
(
'course_run'
)
if
course_run
:
cleaned_data
[
'upgrade_deadline'
]
=
course_run
.
end
-
datetime
.
timedelta
(
days
=
10
)
return
cleaned_data
def
reset_credit_to_default
(
self
,
seat
):
def
reset_credit_to_default
(
self
,
seat
):
seat
.
credit_provider
=
''
seat
.
credit_provider
=
''
...
...
course_discovery/apps/publisher/tests/test_forms.py
View file @
5f024f8e
...
@@ -8,8 +8,9 @@ from course_discovery.apps.core.models import User
...
@@ -8,8 +8,9 @@ from course_discovery.apps.core.models import User
from
course_discovery.apps.core.tests.factories
import
UserFactory
from
course_discovery.apps.core.tests.factories
import
UserFactory
from
course_discovery.apps.course_metadata.models
import
Person
from
course_discovery.apps.course_metadata.models
import
Person
from
course_discovery.apps.course_metadata.tests.factories
import
OrganizationFactory
,
PersonFactory
from
course_discovery.apps.course_metadata.tests.factories
import
OrganizationFactory
,
PersonFactory
from
course_discovery.apps.publisher.forms
import
CourseForm
,
CourseRunForm
,
PublisherUserCreationForm
from
course_discovery.apps.publisher.forms
import
CourseForm
,
CourseRunForm
,
PublisherUserCreationForm
,
SeatForm
from
course_discovery.apps.publisher.tests.factories
import
CourseFactory
,
OrganizationExtensionFactory
from
course_discovery.apps.publisher.models
import
Seat
from
course_discovery.apps.publisher.tests.factories
import
CourseFactory
,
OrganizationExtensionFactory
,
SeatFactory
class
UserModelChoiceFieldTests
(
TestCase
):
class
UserModelChoiceFieldTests
(
TestCase
):
...
@@ -278,3 +279,18 @@ class PublisherCustomCourseFormTests(TestCase):
...
@@ -278,3 +279,18 @@ class PublisherCustomCourseFormTests(TestCase):
course_form
.
save
()
course_form
.
save
()
course
.
refresh_from_db
()
course
.
refresh_from_db
()
assert
course
.
title
==
'áçã'
assert
course
.
title
==
'áçã'
class
SeatFormTests
(
TestCase
):
def
test_upgrade_deadline
(
self
):
seat
=
SeatFactory
()
data
=
{
'price'
:
100
,
'type'
:
Seat
.
VERIFIED
,
'course_run'
:
seat
.
course_run
.
pk
,
'upgrade_deadline'
:
None
,
}
form
=
SeatForm
(
instance
=
seat
,
data
=
data
)
assert
form
.
is_valid
()
assert
form
.
cleaned_data
[
'upgrade_deadline'
]
==
seat
.
course_run
.
end
-
timedelta
(
days
=
10
)
course_discovery/apps/publisher/views.py
View file @
5f024f8e
...
@@ -730,7 +730,7 @@ class CourseRunEditView(mixins.LoginRequiredMixin, mixins.PublisherPermissionMix
...
@@ -730,7 +730,7 @@ class CourseRunEditView(mixins.LoginRequiredMixin, mixins.PublisherPermissionMix
run_form
=
self
.
run_form
(
run_form
=
self
.
run_form
(
request
.
POST
,
instance
=
course_run
,
is_project_coordinator
=
context
.
get
(
'is_project_coordinator'
)
request
.
POST
,
instance
=
course_run
,
is_project_coordinator
=
context
.
get
(
'is_project_coordinator'
)
)
)
seat_form
=
self
.
seat_form
(
request
.
POST
,
instance
=
course_run
.
seats
.
first
())
seat_form
=
self
.
seat_form
(
request
.
POST
,
instance
=
course_run
.
seats
.
first
()
,
initial
=
{
'changed_by'
:
user
,}
)
if
run_form
.
is_valid
()
and
seat_form
.
is_valid
():
if
run_form
.
is_valid
()
and
seat_form
.
is_valid
():
try
:
try
:
with
transaction
.
atomic
():
with
transaction
.
atomic
():
...
@@ -741,7 +741,7 @@ class CourseRunEditView(mixins.LoginRequiredMixin, mixins.PublisherPermissionMix
...
@@ -741,7 +741,7 @@ class CourseRunEditView(mixins.LoginRequiredMixin, mixins.PublisherPermissionMix
# If price-type comes with request then save the seat object.
# If price-type comes with request then save the seat object.
if
request
.
POST
.
get
(
'type'
):
if
request
.
POST
.
get
(
'type'
):
seat_form
.
save
(
changed_by
=
user
,
course_run
=
course_run
)
seat_form
.
save
()
# in case of any updating move the course-run state to draft except draft and published state.
# in case of any updating move the course-run state to draft except draft and published state.
immutable_states
=
[
CourseRunStateChoices
.
Draft
,
CourseRunStateChoices
.
Published
]
immutable_states
=
[
CourseRunStateChoices
.
Draft
,
CourseRunStateChoices
.
Published
]
...
...
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