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
e4c76e5d
Commit
e4c76e5d
authored
Jun 28, 2012
by
Bridger Maxwell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Changed course settings to be a json file. Moved it to its own file.
parent
b80729cd
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
95 additions
and
50 deletions
+95
-50
lms/djangoapps/courseware/course_settings.py
+94
-0
lms/djangoapps/courseware/grades.py
+1
-50
No files found.
lms/djangoapps/courseware/course_settings.py
0 → 100644
View file @
e4c76e5d
"""
Course settings module. All settings in the global_settings are
first applied, and then any settings in the settings.DATA_DIR/course_settings.json
are applied. A setting must be in ALL_CAPS.
Settings are used by calling
from courseware.course_settings import course_settings
Note that courseware.course_settings.course_settings is not a module -- it's an object. So
importing individual settings is not possible:
from courseware.course_settings.course_settings import GRADER # This won't work.
"""
import
json
import
logging
from
django.conf
import
settings
from
xmodule
import
graders
log
=
logging
.
getLogger
(
"mitx.courseware"
)
global_settings_json
=
"""
{
"GRADER" : [
{
"type" : "Homework",
"min_count" : 12,
"drop_count" : 2,
"short_label" : "HW",
"weight" : 0.15
},
{
"type" : "Lab",
"min_count" : 12,
"drop_count" : 2,
"category" : "Labs",
"weight" : 0.15
},
{
"type" : "Midterm",
"name" : "Midterm Exam",
"short_label" : "Midterm",
"weight" : 0.3
},
{
"type" : "Final",
"name" : "Final Exam",
"short_label" : "Final",
"weight" : 0.4
}
],
"GRADE_CUTOFFS" : {
"A" : 0.87,
"B" : 0.7,
"C" : 0.6
}
}
"""
class
Settings
(
object
):
def
__init__
(
self
):
#Load the global settings as a dictionary
global_settings
=
json
.
loads
(
global_settings_json
)
#Load the course settings as a dictionary
course_settings
=
{}
try
:
with
open
(
settings
.
DATA_DIR
+
"/course_settings.json"
)
as
course_settings_file
:
course_settings_string
=
course_settings_file
.
read
()
course_settings
=
json
.
loads
(
course_settings_string
)
except
IOError
:
log
.
warning
(
"Unable to load course settings file from "
+
str
(
settings
.
DATA_DIR
)
+
"/course_settings.json"
)
#First, set the properties from the global settings on ourselves
for
setting
in
global_settings
:
setting_value
=
global_settings
[
setting
]
setattr
(
self
,
setting
,
setting_value
)
#Now, set the properties from the course settings on ourselves, possibly overriding global values
for
setting
in
course_settings
:
setting_value
=
course_settings
[
setting
]
setattr
(
self
,
setting
,
setting_value
)
# Here is where we should parse any configurations, so that we can fail early
self
.
GRADER
=
graders
.
grader_from_conf
(
self
.
GRADER
)
course_settings
=
Settings
()
lms/djangoapps/courseware/grades.py
View file @
e4c76e5d
"""
Course settings module. The settings are based of django.conf. All settings in
courseware.global_course_settings are first applied, and then any settings
in the settings.DATA_DIR/course_settings.py are applied. A setting must be
in ALL_CAPS.
Settings are used by calling
from courseware import course_settings
Note that courseware.course_settings is not a module -- it's an object. So
importing individual settings is not possible:
from courseware.course_settings import GRADER # This won't work.
"""
from
lxml
import
etree
import
random
import
imp
...
...
@@ -25,6 +8,7 @@ import types
from
django.conf
import
settings
from
courseware
import
global_course_settings
from
courseware.course_settings
import
course_settings
from
xmodule
import
graders
from
xmodule.graders
import
Score
from
models
import
StudentModule
...
...
@@ -33,39 +17,6 @@ import xmodule
_log
=
logging
.
getLogger
(
"mitx.courseware"
)
class
Settings
(
object
):
def
__init__
(
self
):
# update this dict from global settings (but only for ALL_CAPS settings)
for
setting
in
dir
(
global_course_settings
):
if
setting
==
setting
.
upper
():
setattr
(
self
,
setting
,
getattr
(
global_course_settings
,
setting
))
data_dir
=
settings
.
DATA_DIR
fp
=
None
try
:
fp
,
pathname
,
description
=
imp
.
find_module
(
"course_settings"
,
[
data_dir
])
mod
=
imp
.
load_module
(
"course_settings"
,
fp
,
pathname
,
description
)
except
Exception
as
e
:
_log
.
exception
(
"Unable to import course settings file from "
+
data_dir
+
". Error: "
+
str
(
e
))
mod
=
types
.
ModuleType
(
'course_settings'
)
finally
:
if
fp
:
fp
.
close
()
for
setting
in
dir
(
mod
):
if
setting
==
setting
.
upper
():
setting_value
=
getattr
(
mod
,
setting
)
setattr
(
self
,
setting
,
setting_value
)
# Here is where we should parse any configurations, so that we can fail early
self
.
GRADER
=
graders
.
grader_from_conf
(
self
.
GRADER
)
course_settings
=
Settings
()
def
grade_sheet
(
student
,
coursename
=
None
):
"""
...
...
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