diff --git a/.pylintrc b/.pylintrc index 54e2f5c8a9..ce2f2e3b87 100644 --- a/.pylintrc +++ b/.pylintrc @@ -33,7 +33,7 @@ load-plugins= # can either give multiple identifier separated by comma (,) or put this option # multiple time (only on the command line, not in the configuration file where # it should appear only once). -#disable= +disable=E1102,W0142 [REPORTS] @@ -82,7 +82,7 @@ zope=no # List of members which are set dynamically and missed by pylint inference # system, and so shouldn't trigger E0201 when accessed. Python regular # expressions are accepted. -generated-members=REQUEST,acl_users,aq_parent +generated-members=REQUEST,acl_users,aq_parent,objects,DoesNotExist,can_read,can_write,get_url,size [BASIC] diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index 1644822d5f..6e2cf5b791 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -264,14 +264,17 @@ def create_account(request, post_override=None): for a in ['username', 'email', 'password', 'name']: if a not in post_vars: js['value'] = "Error (401 {field}). E-mail us.".format(field=a) + js['field'] = a return HttpResponse(json.dumps(js)) if post_vars.get('honor_code', 'false') != u'true': js['value'] = "To enroll, you must follow the honor code.".format(field=a) + js['field'] = 'honor_code' return HttpResponse(json.dumps(js)) if post_vars.get('terms_of_service', 'false') != u'true': js['value'] = "You must accept the terms of service.".format(field=a) + js['field'] = 'terms_of_service' return HttpResponse(json.dumps(js)) # Confirm appropriate fields are there. @@ -288,18 +291,21 @@ def create_account(request, post_override=None): 'terms_of_service': 'Accepting Terms of Service is required.', 'honor_code': 'Agreeing to the Honor Code is required.'} js['value'] = error_str[a] + js['field'] = a return HttpResponse(json.dumps(js)) try: validate_email(post_vars['email']) except ValidationError: js['value'] = "Valid e-mail is required.".format(field=a) + js['field'] = 'email' return HttpResponse(json.dumps(js)) try: validate_slug(post_vars['username']) except ValidationError: js['value'] = "Username should only consist of A-Z and 0-9.".format(field=a) + js['field'] = 'username' return HttpResponse(json.dumps(js)) u = User(username=post_vars['username'], @@ -315,10 +321,12 @@ def create_account(request, post_override=None): # Figure out the cause of the integrity error if len(User.objects.filter(username=post_vars['username'])) > 0: js['value'] = "An account with this username already exists." + js['field'] = 'username' return HttpResponse(json.dumps(js)) if len(User.objects.filter(email=post_vars['email'])) > 0: js['value'] = "An account with this e-mail already exists." + js['field'] = 'email' return HttpResponse(json.dumps(js)) raise diff --git a/common/lib/xmodule/xmodule/modulestore/xml.py b/common/lib/xmodule/xmodule/modulestore/xml.py index b8e86b97f1..3981009cef 100644 --- a/common/lib/xmodule/xmodule/modulestore/xml.py +++ b/common/lib/xmodule/xmodule/modulestore/xml.py @@ -53,8 +53,9 @@ class XMLModuleStore(ModuleStore): class_ = getattr(import_module(module_path), class_name) self.default_class = class_ - log.debug('XMLModuleStore: eager=%s, data_dir = %s' % (eager, self.data_dir)) - log.debug('default_class = %s' % self.default_class) + # TODO (cpennington): We need a better way of selecting specific sets of debug messages to enable. These were drowning out important messages + #log.debug('XMLModuleStore: eager=%s, data_dir = %s' % (eager, self.data_dir)) + #log.debug('default_class = %s' % self.default_class) for course_dir in os.listdir(self.data_dir): if course_dirs is not None and course_dir not in course_dirs: diff --git a/lms/envs/common.py b/lms/envs/common.py index 4933871069..3e5ffec1c3 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -430,6 +430,24 @@ PIPELINE_JS = { } } +# Compile all coffee files in course data directories if they are out of date. +# TODO: Remove this once we move data into Mongo. This is only temporary while +# course data directories are still in use. +if os.path.isdir(DATA_DIR): + for course_dir in os.listdir(DATA_DIR): + js_dir = DATA_DIR / course_dir / "js" + if not os.path.isdir(js_dir): + continue + for filename in os.listdir(js_dir): + if filename.endswith('coffee'): + new_filename = os.path.splitext(filename)[0] + ".js" + if os.path.exists(js_dir / new_filename): + coffee_timestamp = os.stat(js_dir / filename).st_mtime + js_timestamp = os.stat(js_dir / new_filename).st_mtime + if coffee_timestamp <= js_timestamp: + continue + os.system("coffee -c %s" % (js_dir / filename)) + PIPELINE_COMPILERS = [ 'pipeline.compilers.sass.SASSCompiler', 'pipeline.compilers.coffee.CoffeeScriptCompiler', diff --git a/lms/envs/logsettings.py b/lms/envs/logsettings.py index 916cd77748..3683314d02 100644 --- a/lms/envs/logsettings.py +++ b/lms/envs/logsettings.py @@ -3,19 +3,19 @@ import os.path import platform import sys -def get_logger_config(log_dir, - logging_env="no_env", +def get_logger_config(log_dir, + logging_env="no_env", tracking_filename=None, syslog_addr=None, debug=False): """Return the appropriate logging config dictionary. You should assign the - result of this to the LOGGING var in your settings. The reason it's done + result of this to the LOGGING var in your settings. The reason it's done this way instead of registering directly is because I didn't want to worry - about resetting the logging state if this is called multiple times when + about resetting the logging state if this is called multiple times when settings are extended.""" # If we're given an explicit place to put tracking logs, we do that (say for - # debugging). However, logging is not safe for multiple processes hitting + # debugging). However, logging is not safe for multiple processes hitting # the same file. So if it's left blank, we dynamically create the filename # based on the PID of this worker process. if tracking_filename: @@ -33,7 +33,7 @@ def get_logger_config(log_dir, return { 'version': 1, - 'disable_existing_loggers': True, + 'disable_existing_loggers': False, 'formatters' : { 'standard' : { 'format' : '%(asctime)s %(levelname)s %(process)d [%(name)s] %(filename)s:%(lineno)d - %(message)s', diff --git a/lms/templates/signup_modal.html b/lms/templates/signup_modal.html index 26b248d0ee..aef90ab0f2 100644 --- a/lms/templates/signup_modal.html +++ b/lms/templates/signup_modal.html @@ -19,19 +19,19 @@