From 5681f94a96346a27a87d0e3f0172c3401d0b730e Mon Sep 17 00:00:00 2001 From: Brian Talbot Date: Wed, 24 Apr 2013 14:55:04 -0400 Subject: [PATCH 01/94] studio - commented in the static HTML boilerplate for the course overview field - needs wiring to CodeMirror with a setVal() method --- cms/templates/settings.html | 55 ++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/cms/templates/settings.html b/cms/templates/settings.html index 3923c0f905..73ef1066db 100644 --- a/cms/templates/settings.html +++ b/cms/templates/settings.html @@ -179,7 +179,60 @@ from contentstore import utils
  • - Introductions, prerequisites, FAQs that are used on your course summary page + Introductions, prerequisites, FAQs that are used on your course summary page (formatted in HTML) + +
  • From 4d2ebdce8faa00a00c3ac1f2baab0606ff121367 Mon Sep 17 00:00:00 2001 From: cahrens Date: Thu, 25 Apr 2013 11:44:52 -0400 Subject: [PATCH 02/94] Upgrade version of xblocks to get Field display_name property. --- local-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/local-requirements.txt b/local-requirements.txt index 177897f53d..6d2a6270b7 100644 --- a/local-requirements.txt +++ b/local-requirements.txt @@ -6,4 +6,4 @@ # XBlock: # Might change frequently, so put it in local-requirements.txt, # but conceptually is an external package, so it is in a separate repo. --e git+https://github.com/edx/XBlock.git@96d8f5f4#egg=XBlock +-e git+https://github.com/edx/XBlock.git@2e0770ff#egg=XBlock From 05c5a9401a1a5ba5209aaff2adbb606175078fe7 Mon Sep 17 00:00:00 2001 From: "Mark L. Chang" Date: Thu, 25 Apr 2013 13:44:14 -0400 Subject: [PATCH 03/94] changed class to course --- cms/templates/settings.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cms/templates/settings.html b/cms/templates/settings.html index 73ef1066db..a4355c98c5 100644 --- a/cms/templates/settings.html +++ b/cms/templates/settings.html @@ -192,7 +192,7 @@ from contentstore import utils

    Prerequisites

    -

    Add information about class prerequisites here.

    +

    Add information about course prerequisites here.

    From 55266f6e96b14bfe07dc79408c8289a554b394cb Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Fri, 26 Apr 2013 13:39:22 -0400 Subject: [PATCH 04/94] add a overview.yaml template and also clone that template into a newly created course --- cms/djangoapps/contentstore/views.py | 6 +++ cms/templates/settings.html | 53 ------------------ .../xmodule/templates/about/overview.yaml | 54 +++++++++++++++++++ 3 files changed, 60 insertions(+), 53 deletions(-) create mode 100644 common/lib/xmodule/xmodule/templates/about/overview.yaml diff --git a/cms/djangoapps/contentstore/views.py b/cms/djangoapps/contentstore/views.py index 603010f5b4..bc74b028a8 100644 --- a/cms/djangoapps/contentstore/views.py +++ b/cms/djangoapps/contentstore/views.py @@ -1498,6 +1498,12 @@ def create_new_course(request): new_course = modulestore('direct').clone_item(template, dest_location) + # clone a default 'about' module as well + + about_template_location = Location(['i4x', 'edx', 'templates', 'about', 'overview']) + dest_about_location = dest_location._replace(category='about', name='overview') + modulestore('direct').clone_item(about_template_location, dest_about_location) + if display_name is not None: new_course.display_name = display_name diff --git a/cms/templates/settings.html b/cms/templates/settings.html index a4355c98c5..0a647c632e 100644 --- a/cms/templates/settings.html +++ b/cms/templates/settings.html @@ -180,59 +180,6 @@ from contentstore import utils Introductions, prerequisites, FAQs that are used on your course summary page (formatted in HTML) - -
  • diff --git a/common/lib/xmodule/xmodule/templates/about/overview.yaml b/common/lib/xmodule/xmodule/templates/about/overview.yaml new file mode 100644 index 0000000000..0f6aec0af8 --- /dev/null +++ b/common/lib/xmodule/xmodule/templates/about/overview.yaml @@ -0,0 +1,54 @@ +--- +metadata: + display_name: overview + +data: | +
    +

    About This Course

    +

    Include your long course description here. The long course description should contain 150-400 words.

    + +

    This is paragraph 2 of the long course description. Add more paragraphs as needed. Make sure to enclose them in paragraph tags.

    +
    + +
    +

    Prerequisites

    +

    Add information about course prerequisites here.

    +
    + +
    +

    Course Staff

    +
    +
    + +
    + +

    Staff member name

    +

    Biography of instructor/staff member

    +
    + +
    +
    + +
    + +

    Staff member name

    +

    Biography of instructor/staff member

    +
    +
    + +
    +
    +

    Frequently Asked Questions

    +
    +

    Do I need to buy a textbook?

    +

    No, a free online version of Chemistry: Principles, Patterns, and Applications, First Edition by Bruce Averill and Patricia Eldredge will be available, though you can purchase a printed version (published by FlatWorld Knowledge) if you’d like.

    +
    + +
    +

    Question #2

    +

    Your answer would be displayed here.

    +
    +
    +
    +
    +children: [] \ No newline at end of file From c28647be2d2b12fa674b1ba76da787a041d91acd Mon Sep 17 00:00:00 2001 From: Brian Talbot Date: Mon, 29 Apr 2013 14:47:57 -0400 Subject: [PATCH 05/94] lms - cleared document flow for .teacher elements within a course's about view to coincide with Studio's default HTML for the course overview settings field --- lms/static/sass/multicourse/_course_about.scss | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lms/static/sass/multicourse/_course_about.scss b/lms/static/sass/multicourse/_course_about.scss index d23917fe27..0982577f42 100644 --- a/lms/static/sass/multicourse/_course_about.scss +++ b/lms/static/sass/multicourse/_course_about.scss @@ -272,7 +272,9 @@ } .course-staff { + .teacher { + @include clearfix; margin-bottom: 40px; h3 { @@ -312,7 +314,7 @@ } } } - + .faq { @include clearfix; From 4e251a3b192ef1e85d36fc8d433fe816cd9ebef9 Mon Sep 17 00:00:00 2001 From: Brian Talbot Date: Mon, 29 Apr 2013 15:38:55 -0400 Subject: [PATCH 06/94] adding in placeholder images for a course and its faculty --- common/static/images/pl-course.png | Bin 0 -> 51729 bytes common/static/images/pl-faculty.png | Bin 0 -> 10798 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 common/static/images/pl-course.png create mode 100644 common/static/images/pl-faculty.png diff --git a/common/static/images/pl-course.png b/common/static/images/pl-course.png new file mode 100644 index 0000000000000000000000000000000000000000..75477967f2aa5f2da41ad970ef87dfdaf3101ead GIT binary patch literal 51729 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

    DMMcBb!NK-ovf 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 literal 0 HcmV?d00001 From 680e932b8b7366e3efd91335e986b70db6f91a74 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Mon, 29 Apr 2013 15:42:58 -0400 Subject: [PATCH 07/94] use default staff images that is in /common/static/... --- common/lib/xmodule/xmodule/templates/about/overview.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/lib/xmodule/xmodule/templates/about/overview.yaml b/common/lib/xmodule/xmodule/templates/about/overview.yaml index 0f6aec0af8..638a61835a 100644 --- a/common/lib/xmodule/xmodule/templates/about/overview.yaml +++ b/common/lib/xmodule/xmodule/templates/about/overview.yaml @@ -19,7 +19,7 @@ data: |

    Course Staff

    - +

    Staff member name

    @@ -28,7 +28,7 @@ data: |
    - +

    Staff member name

    From a861c8b3104e0cb04f6081552ea9e616bdae52be Mon Sep 17 00:00:00 2001 From: Brian Talbot Date: Mon, 29 Apr 2013 16:03:00 -0400 Subject: [PATCH 08/94] revised placeholder course and faculty images - more opacity to reinforce placeholderness --- common/static/images/pl-course.png | Bin 51729 -> 40938 bytes common/static/images/pl-faculty.png | Bin 10798 -> 9137 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/common/static/images/pl-course.png b/common/static/images/pl-course.png index 75477967f2aa5f2da41ad970ef87dfdaf3101ead..1a3da9e6317c1921b814883c27f5611ddfe95434 100644 GIT binary patch literal 40938 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 ia{7*G@PHk9edm8;%5CX>0-lKg00000` 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

    DMMcBb!NK-ovf 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 literal 10798 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 From 8705ff8805e12f6d178d0033870bae31d228c8fe Mon Sep 17 00:00:00 2001 From: cahrens Date: Mon, 29 Apr 2013 16:41:07 -0400 Subject: [PATCH 09/94] Remove system_metadata_fields. --- .../contentstore/module_info_model.py | 6 +-- cms/djangoapps/contentstore/views.py | 6 +-- .../models/settings/course_metadata.py | 15 +++---- cms/templates/widgets/metadata-edit.html | 20 ++++++++-- common/lib/xmodule/xmodule/capa_module.py | 34 +++++++--------- .../lib/xmodule/xmodule/discussion_module.py | 11 +++--- common/lib/xmodule/xmodule/html_module.py | 10 ----- common/lib/xmodule/xmodule/mako_module.py | 39 ++++++++++++++----- common/lib/xmodule/xmodule/x_module.py | 14 +++---- common/lib/xmodule/xmodule/xml_module.py | 6 ++- local-requirements.txt | 2 +- 11 files changed, 90 insertions(+), 73 deletions(-) diff --git a/cms/djangoapps/contentstore/module_info_model.py b/cms/djangoapps/contentstore/module_info_model.py index 91f722a699..f7d1bbd8fe 100644 --- a/cms/djangoapps/contentstore/module_info_model.py +++ b/cms/djangoapps/contentstore/module_info_model.py @@ -75,11 +75,7 @@ def set_module_info(store, location, post_data): # IMPORTANT NOTE: if the client passed pack 'null' (None) for a piece of metadata that means 'remove it' for metadata_key, value in posted_metadata.items(): - # let's strip out any metadata fields from the postback which have been identified as system metadata - # and therefore should not be user-editable, so we should accept them back from the client - if metadata_key in module.system_metadata_fields: - del posted_metadata[metadata_key] - elif posted_metadata[metadata_key] is None: + if posted_metadata[metadata_key] is None: # remove both from passed in collection as well as the collection read in from the modulestore if metadata_key in module._model_data: del module._model_data[metadata_key] diff --git a/cms/djangoapps/contentstore/views.py b/cms/djangoapps/contentstore/views.py index 603010f5b4..6ce17d04aa 100644 --- a/cms/djangoapps/contentstore/views.py +++ b/cms/djangoapps/contentstore/views.py @@ -687,11 +687,7 @@ def save_item(request): # IMPORTANT NOTE: if the client passed pack 'null' (None) for a piece of metadata that means 'remove it' for metadata_key, value in posted_metadata.items(): - # let's strip out any metadata fields from the postback which have been identified as system metadata - # and therefore should not be user-editable, so we should accept them back from the client - if metadata_key in existing_item.system_metadata_fields: - del posted_metadata[metadata_key] - elif posted_metadata[metadata_key] is None: + if posted_metadata[metadata_key] is None: # remove both from passed in collection as well as the collection read in from the modulestore if metadata_key in existing_item._model_data: del existing_item._model_data[metadata_key] diff --git a/cms/djangoapps/models/settings/course_metadata.py b/cms/djangoapps/models/settings/course_metadata.py index 4429e35692..708e79f0a3 100644 --- a/cms/djangoapps/models/settings/course_metadata.py +++ b/cms/djangoapps/models/settings/course_metadata.py @@ -14,13 +14,14 @@ class CourseMetadata(object): The objects have no predefined attrs but instead are obj encodings of the editable metadata. ''' - FILTERED_LIST = XModuleDescriptor.system_metadata_fields + ['start', - 'end', - 'enrollment_start', - 'enrollment_end', - 'tabs', - 'graceperiod', - 'checklists'] + FILTERED_LIST = ['xml_attributes', + 'start', + 'end', + 'enrollment_start', + 'enrollment_end', + 'tabs', + 'graceperiod', + 'checklists'] @classmethod def fetch(cls, course_location): diff --git a/cms/templates/widgets/metadata-edit.html b/cms/templates/widgets/metadata-edit.html index 51fe400f88..b351b5c344 100644 --- a/cms/templates/widgets/metadata-edit.html +++ b/cms/templates/widgets/metadata-edit.html @@ -7,10 +7,24 @@ % for field_name, field_value in editable_metadata_fields.items():

  • % if field_name == 'source_code': - Edit High Level Source + % if field_value['is_default'] is False: + Edit High Level Source + % endif % else: - - + + + % if False: + + + + + % if field_value['field'].values: + + % for value in field_value['field'].values: + + % endfor + % endif + % endif % endif
  • % endfor diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index 4143345196..bc5014d75b 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -13,7 +13,7 @@ from capa.responsetypes import StudentInputError,\ ResponseError, LoncapaProblemError from capa.util import convert_files_to_filenames from .progress import Progress -from xmodule.x_module import XModule +from xmodule.x_module import XModule, XModuleFields from xmodule.raw_module import RawDescriptor from xmodule.exceptions import NotFoundError, ProcessingError from xblock.core import Scope, String, Boolean, Object @@ -62,20 +62,26 @@ class ComplexEncoder(json.JSONEncoder): class CapaFields(object): attempts = StringyInteger(help="Number of attempts taken by the student on this problem", default=0, scope=Scope.user_state) - max_attempts = StringyInteger(help="Maximum number of attempts that a student is allowed", scope=Scope.settings) - due = Date(help="Date that this problem is due by", scope=Scope.settings) - graceperiod = Timedelta(help="Amount of time after the due date that submissions will be accepted", scope=Scope.settings) - showanswer = String(help="When to show the problem answer to the student", scope=Scope.settings, default="closed") - force_save_button = Boolean(help="Whether to force the save button to appear on the page", scope=Scope.settings, default=False) - rerandomize = Randomization(help="When to rerandomize the problem", default="always", scope=Scope.settings) + max_attempts = StringyInteger(display_name="Maximum Allowed Attempts", + help="Maximum number of attempts that a student is allowed", scope=Scope.settings) + due = Date(help="Date that this problem is due by", scope=XModuleFields.nonEditableSettingsScope) + graceperiod = Timedelta(help="Amount of time after the due date that submissions will be accepted", + scope=XModuleFields.nonEditableSettingsScope) + showanswer = String(display_name="Show Answer", + help="When to show the problem answer to the student", scope=Scope.settings, default="closed", + values=["answered", "always", "attempted", "closed", "never"]) + force_save_button = Boolean(help="Whether to force the save button to appear on the page", + scope=XModuleFields.nonEditableSettingsScope, default=False) + rerandomize = Randomization(display_name="Rerandomize", help="When to rerandomize the problem", + default="always", scope=Scope.settings) data = String(help="XML data for the problem", scope=Scope.content) correct_map = Object(help="Dictionary with the correctness of current student answers", scope=Scope.user_state, default={}) input_state = Object(help="Dictionary for maintaining the state of inputtypes", scope=Scope.user_state) student_answers = Object(help="Dictionary with the current student responses", scope=Scope.user_state) done = Boolean(help="Whether the student has answered the problem", scope=Scope.user_state) seed = StringyInteger(help="Random seed for this student", scope=Scope.user_state) - weight = StringyFloat(help="How much to weight this problem by", scope=Scope.settings) - markdown = String(help="Markdown source of this module", scope=Scope.settings) + weight = StringyFloat(display_name="Problem Weight", help="How much to weight this problem by", scope=Scope.settings) + markdown = String(help="Markdown source of this module", scope=XModuleFields.nonEditableSettingsScope) source_code = String(help="Source code for LaTeX and Word problems. This feature is not well-supported.", scope=Scope.settings) @@ -882,16 +888,6 @@ class CapaDescriptor(CapaFields, RawDescriptor): 'enable_markdown': self.markdown is not None}) return _context - @property - def editable_metadata_fields(self): - """Remove metadata from the editable fields since it has its own editor""" - subset = super(CapaDescriptor, self).editable_metadata_fields - if 'markdown' in subset: - del subset['markdown'] - if 'empty' in subset: - del subset['empty'] - return subset - # VS[compat] # TODO (cpennington): Delete this method once all fall 2012 course are being # edited in the cms diff --git a/common/lib/xmodule/xmodule/discussion_module.py b/common/lib/xmodule/xmodule/discussion_module.py index 8968e221b2..9c2681ef2d 100644 --- a/common/lib/xmodule/xmodule/discussion_module.py +++ b/common/lib/xmodule/xmodule/discussion_module.py @@ -1,16 +1,17 @@ from pkg_resources import resource_string -from xmodule.x_module import XModule +from xmodule.x_module import XModule, XModuleFields from xmodule.raw_module import RawDescriptor from xmodule.editing_module import MetadataOnlyEditingDescriptor from xblock.core import String, Scope class DiscussionFields(object): - discussion_id = String(scope=Scope.settings) - discussion_category = String(scope=Scope.settings) - discussion_target = String(scope=Scope.settings) - sort_key = String(scope=Scope.settings) + discussion_id = String(scope=XModuleFields.nonEditableSettingsScope) + discussion_category = String(display_name="Category Name", scope=Scope.settings) + discussion_target = String(display_name="Subcategory Name", scope=Scope.settings) + # We may choose to enable this in the future, but while Kevin is investigating.... + sort_key = String(scope=XModuleFields.nonEditableSettingsScope) class DiscussionModule(DiscussionFields, XModule): diff --git a/common/lib/xmodule/xmodule/html_module.py b/common/lib/xmodule/xmodule/html_module.py index d901fc5fbe..0c147ecf75 100644 --- a/common/lib/xmodule/xmodule/html_module.py +++ b/common/lib/xmodule/xmodule/html_module.py @@ -166,16 +166,6 @@ class HtmlDescriptor(HtmlFields, XmlDescriptor, EditingDescriptor): elt.set("filename", relname) return elt - @property - def editable_metadata_fields(self): - """Remove any metadata from the editable fields which have their own editor or shouldn't be edited by user.""" - subset = super(HtmlDescriptor, self).editable_metadata_fields - - if 'empty' in subset: - del subset['empty'] - - return subset - class AboutDescriptor(HtmlDescriptor): """ diff --git a/common/lib/xmodule/xmodule/mako_module.py b/common/lib/xmodule/xmodule/mako_module.py index 84db6ad779..e01a03e309 100644 --- a/common/lib/xmodule/xmodule/mako_module.py +++ b/common/lib/xmodule/xmodule/mako_module.py @@ -1,5 +1,6 @@ -from .x_module import XModuleDescriptor, DescriptorSystem -from .modulestore.inheritance import own_metadata +from .x_module import XModuleDescriptor, DescriptorSystem, NonEditableSettingsScope +from xblock.core import Scope +from xblock.core import XBlock class MakoDescriptorSystem(DescriptorSystem): @@ -34,20 +35,40 @@ class MakoModuleDescriptor(XModuleDescriptor): """ return { 'module': self, - 'editable_metadata_fields': self.editable_metadata_fields, + 'editable_metadata_fields': self.editable_metadata_fields } def get_html(self): return self.system.render_template( self.mako_template, self.get_context()) - # cdodge: encapsulate a means to expose "editable" metadata fields (i.e. not internal system metadata) @property def editable_metadata_fields(self): - fields = {} - for field, value in own_metadata(self).items(): - if field in self.system_metadata_fields: + inherited_metadata = getattr(self, '_inherited_metadata', {}) + metadata = {} + for field in self.fields: + + if field.scope != Scope.settings or isinstance(field.scope, NonEditableSettingsScope): continue - fields[field] = value - return fields + # We are not allowing editing of xblock tag and name fields at this time (for any component). + if field == XBlock.tags or field == XBlock.name: + continue + + inherited = False + default = False + value = getattr(self, field.name) + if field.name in self._model_data: + default = False + if field.name in inherited_metadata and self._model_data.get(field.name) == inherited_metadata.get( + field.name): + inherited = True + else: + default = True + + metadata[field.name] = {'field' : field, + 'value': value, + 'is_inherited': inherited, + 'is_default': default } + + return metadata diff --git a/common/lib/xmodule/xmodule/x_module.py b/common/lib/xmodule/xmodule/x_module.py index 1fd0b8e138..4a16548c6f 100644 --- a/common/lib/xmodule/xmodule/x_module.py +++ b/common/lib/xmodule/xmodule/x_module.py @@ -78,12 +78,18 @@ class HTMLSnippet(object): .format(self.__class__)) +class NonEditableSettingsScope(Scope): + pass + + class XModuleFields(object): display_name = String( + display_name="Display Name", help="Display name for this module", scope=Scope.settings, - default=None, + default=None ) + nonEditableSettingsScope = NonEditableSettingsScope(user=Scope.settings.user, block=Scope.settings.block) class XModule(XModuleFields, HTMLSnippet, XBlock): @@ -334,12 +340,6 @@ class XModuleDescriptor(XModuleFields, HTMLSnippet, ResourceTemplates, XBlock): # (like a practice problem). has_score = False - # cdodge: this is a list of metadata names which are 'system' metadata - # and should not be edited by an end-user - - system_metadata_fields = ['data_dir', 'published_date', 'published_by', 'is_draft', - 'discussion_id', 'xml_attributes'] - # A list of descriptor attributes that must be equal for the descriptors to # be equal equality_attributes = ('_model_data', 'location') diff --git a/common/lib/xmodule/xmodule/xml_module.py b/common/lib/xmodule/xmodule/xml_module.py index f9de929c05..bfbf12635a 100644 --- a/common/lib/xmodule/xmodule/xml_module.py +++ b/common/lib/xmodule/xmodule/xml_module.py @@ -6,10 +6,11 @@ import sys from collections import namedtuple from lxml import etree -from xblock.core import Object, Scope +from xblock.core import Object from xmodule.x_module import (XModuleDescriptor, policy_key) from xmodule.modulestore import Location from xmodule.modulestore.inheritance import own_metadata +from xmodule.x_module import XModuleFields log = logging.getLogger(__name__) @@ -84,7 +85,8 @@ class XmlDescriptor(XModuleDescriptor): Mixin class for standardized parsing of from xml """ - xml_attributes = Object(help="Map of unhandled xml attributes, used only for storage between import and export", default={}, scope=Scope.settings) + xml_attributes = Object(help="Map of unhandled xml attributes, used only for storage between import and export", + default={}, scope=XModuleFields.nonEditableSettingsScope) # Extension to append to filename paths filename_extension = 'xml' diff --git a/local-requirements.txt b/local-requirements.txt index 6d2a6270b7..5d04fe8f0b 100644 --- a/local-requirements.txt +++ b/local-requirements.txt @@ -6,4 +6,4 @@ # XBlock: # Might change frequently, so put it in local-requirements.txt, # but conceptually is an external package, so it is in a separate repo. --e git+https://github.com/edx/XBlock.git@2e0770ff#egg=XBlock +-e git+https://github.com/edx/XBlock.git@49181a1b#egg=XBlock From 33aada6d2204bb1a95c5462d867e604dd9a7b90b Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Mon, 29 Apr 2013 16:43:32 -0400 Subject: [PATCH 10/94] fix broken test. Since we're pre-populating the course overview when creating a course, the clone_course fails because it asserts that the destination course that it clones into is empty. Need to check that the course is basically empty (e.g. a course module and a overview module) --- .../xmodule/xmodule/modulestore/store_utilities.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/common/lib/xmodule/xmodule/modulestore/store_utilities.py b/common/lib/xmodule/xmodule/modulestore/store_utilities.py index e90613d0da..6beffcb71d 100644 --- a/common/lib/xmodule/xmodule/modulestore/store_utilities.py +++ b/common/lib/xmodule/xmodule/modulestore/store_utilities.py @@ -13,10 +13,19 @@ def clone_course(modulestore, contentstore, source_location, dest_location, dele if not modulestore.has_item(dest_location): raise Exception("An empty course at {0} must have already been created. Aborting...".format(dest_location)) - # verify that the dest_location really is an empty course, which means only one + # verify that the dest_location really is an empty course, which means only one with an optional 'overview' dest_modules = modulestore.get_items([dest_location.tag, dest_location.org, dest_location.course, None, None, None]) - if len(dest_modules) != 1: + basically_empty = True + for module in dest_modules: + if module.location.category == 'course' or (module.location.category == 'about' + and module.location.name == 'overview'): + continue + + basically_empty = False + break + + if not basically_empty: raise Exception("Course at destination {0} is not an empty course. You can only clone into an empty course. Aborting...".format(dest_location)) # check to see if the source course is actually there From 886205dec35d96c2a3719b5b802bec62ecb02f7b Mon Sep 17 00:00:00 2001 From: Brian Talbot Date: Mon, 29 Apr 2013 17:23:14 -0400 Subject: [PATCH 11/94] revised placeholder course overview HTML value --- .../lib/xmodule/xmodule/templates/about/overview.yaml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/common/lib/xmodule/xmodule/templates/about/overview.yaml b/common/lib/xmodule/xmodule/templates/about/overview.yaml index 638a61835a..0031ebffaf 100644 --- a/common/lib/xmodule/xmodule/templates/about/overview.yaml +++ b/common/lib/xmodule/xmodule/templates/about/overview.yaml @@ -22,8 +22,8 @@ data: | -

    Staff member name

    -

    Biography of instructor/staff member

    +

    Staff Member #1

    +

    Biography of instructor/staff member #1

    @@ -31,8 +31,8 @@ data: | -

    Staff member name

    -

    Biography of instructor/staff member

    +

    Staff Member #2

    +

    Biography of instructor/staff member #2

    @@ -49,6 +49,5 @@ data: |

    Your answer would be displayed here.

    -
    -children: [] \ No newline at end of file +children: [] From 573116073ebfee835c582ba10bcbb5c6566ef975 Mon Sep 17 00:00:00 2001 From: Sarina Canelake Date: Tue, 30 Apr 2013 11:16:14 -0400 Subject: [PATCH 12/94] Add error message when factorial given non-integral value --- common/lib/capa/capa/responsetypes.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/common/lib/capa/capa/responsetypes.py b/common/lib/capa/capa/responsetypes.py index 5b1b46d858..3301731929 100644 --- a/common/lib/capa/capa/responsetypes.py +++ b/common/lib/capa/capa/responsetypes.py @@ -1851,6 +1851,13 @@ class FormulaResponse(LoncapaResponse): 'formularesponse: undefined variable in given=%s' % given) raise StudentInputError( "Invalid input: " + uv.message + " not permitted in answer") + except ValueError as ve: + # This is thrown when fact() or factorial() is used in a formularesponse answer + # that tests on negative and/or non-integer inputs + log.debug( + 'formularesponse: factorial function used in response that tests negative and/or non-integer inputs. given={0}'.format(given)) + raise StudentInputError( + "factorial function not permitted in answer for this problem. Provided answer was: {0}".format(given)) except Exception as err: # traceback.print_exc() log.debug('formularesponse: error %s in formula' % err) From a9a234f0181997cae1ca82b076767172d87a6050 Mon Sep 17 00:00:00 2001 From: cahrens Date: Tue, 30 Apr 2013 11:19:20 -0400 Subject: [PATCH 13/94] Change xblock version. --- local-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/local-requirements.txt b/local-requirements.txt index 5d04fe8f0b..0ce7de0e73 100644 --- a/local-requirements.txt +++ b/local-requirements.txt @@ -6,4 +6,4 @@ # XBlock: # Might change frequently, so put it in local-requirements.txt, # but conceptually is an external package, so it is in a separate repo. --e git+https://github.com/edx/XBlock.git@49181a1b#egg=XBlock +-e git+https://github.com/edx/XBlock.git@5ce6f70a#egg=XBlock From 95a224fceaf71c9e5a6b8b88636f11dc8ea5bddb Mon Sep 17 00:00:00 2001 From: Sarina Canelake Date: Tue, 30 Apr 2013 11:21:20 -0400 Subject: [PATCH 14/94] Fix pep8 violations --- common/lib/capa/capa/responsetypes.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/common/lib/capa/capa/responsetypes.py b/common/lib/capa/capa/responsetypes.py index 3301731929..49f6ee1bee 100644 --- a/common/lib/capa/capa/responsetypes.py +++ b/common/lib/capa/capa/responsetypes.py @@ -1147,9 +1147,9 @@ def sympy_check2(): messages = [] for input_dict in input_list: correct.append('correct' - if input_dict['ok'] else 'incorrect') + if input_dict['ok'] else 'incorrect') msg = (self.clean_message_html(input_dict['msg']) - if 'msg' in input_dict else None) + if 'msg' in input_dict else None) messages.append(msg) # Otherwise, we do not recognize the dictionary @@ -1174,7 +1174,7 @@ def sympy_check2(): for k in range(len(idset)): npoints = (self.maxpoints[idset[k]] - if correct[k] == 'correct' else 0) + if correct[k] == 'correct' else 0) correct_map.set(idset[k], correct[k], msg=messages[k], npoints=npoints) return correct_map @@ -1990,7 +1990,6 @@ class ImageResponse(LoncapaResponse): self.ielements = self.inputfields self.answer_ids = [ie.get('id') for ie in self.ielements] - def get_score(self, student_answers): correct_map = CorrectMap() expectedset = self.get_mapped_answers() @@ -2059,7 +2058,7 @@ class ImageResponse(LoncapaResponse): rectangles (dict) - a map of inputs to the defined rectangle for that input regions (dict) - a map of inputs to the defined region for that input ''' - answers = ( + answers = ( dict([(ie.get('id'), ie.get( 'rectangle')) for ie in self.ielements]), dict([(ie.get('id'), ie.get('regions')) for ie in self.ielements])) @@ -2081,8 +2080,6 @@ class ImageResponse(LoncapaResponse): answers[ie_id] = (ie.get('rectangle'), ie.get('regions')) return answers - - #----------------------------------------------------------------------------- From 63371135e50b9b9b7bf65db1f561bfd61a40ef18 Mon Sep 17 00:00:00 2001 From: cahrens Date: Tue, 30 Apr 2013 11:24:45 -0400 Subject: [PATCH 15/94] Change xblock version. --- local-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/local-requirements.txt b/local-requirements.txt index 177897f53d..0ce7de0e73 100644 --- a/local-requirements.txt +++ b/local-requirements.txt @@ -6,4 +6,4 @@ # XBlock: # Might change frequently, so put it in local-requirements.txt, # but conceptually is an external package, so it is in a separate repo. --e git+https://github.com/edx/XBlock.git@96d8f5f4#egg=XBlock +-e git+https://github.com/edx/XBlock.git@5ce6f70a#egg=XBlock From dfd369b9e992672e0df351aae870c356dfdcc7cf Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Tue, 30 Apr 2013 14:09:17 -0400 Subject: [PATCH 16/94] Make ordering of js bundles during jasmine tests consistant --- cms/envs/common.py | 8 ++++---- cms/envs/jasmine.py | 2 +- lms/envs/common.py | 21 ++++++++++++++++----- lms/envs/jasmine.py | 4 ++-- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/cms/envs/common.py b/cms/envs/common.py index 680d19ca34..8effc773e0 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -206,6 +206,8 @@ PIPELINE_CSS = { }, } +# test_order: Determines the position of this chunk of javascript on +# the jasmine test page PIPELINE_JS = { 'main': { 'source_filenames': sorted( @@ -213,6 +215,7 @@ PIPELINE_JS = { rooted_glob(PROJECT_ROOT / 'static/', 'coffee/src/**/*.js') ) + ['js/hesitate.js', 'js/base.js'], 'output_filename': 'js/cms-application.js', + 'test_order': 0 }, 'module-js': { 'source_filenames': ( @@ -220,11 +223,8 @@ PIPELINE_JS = { rooted_glob(COMMON_ROOT / 'static/', 'xmodule/modules/js/*.js') ), 'output_filename': 'js/cms-modules.js', + 'test_order': 1 }, - 'spec': { - 'source_filenames': sorted(rooted_glob(PROJECT_ROOT / 'static/', 'coffee/spec/**/*.js')), - 'output_filename': 'js/cms-spec.js' - } } PIPELINE_CSS_COMPRESSOR = None diff --git a/cms/envs/jasmine.py b/cms/envs/jasmine.py index ac28f8fc9a..70b5b217ef 100644 --- a/cms/envs/jasmine.py +++ b/cms/envs/jasmine.py @@ -20,7 +20,7 @@ PIPELINE_JS['js-test-source'] = { 'source_filenames': sum([ pipeline_group['source_filenames'] for group_name, pipeline_group - in PIPELINE_JS.items() + in sorted(PIPELINE_JS.items(), key=lambda item: item[1].get('test_order', 1e100)) if group_name != 'spec' ], []), 'output_filename': 'js/cms-test-source.js' diff --git a/lms/envs/common.py b/lms/envs/common.py index 1fe6978ac2..32a213f06e 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -440,6 +440,9 @@ PIPELINE_CSS = { }, } + +# test_order: Determines the position of this chunk of javascript on +# the jasmine test page PIPELINE_JS = { 'application': { @@ -455,31 +458,39 @@ PIPELINE_JS = { 'js/sticky_filter.js', 'js/query-params.js', ], - 'output_filename': 'js/lms-application.js' + 'output_filename': 'js/lms-application.js', + + 'test_order': 1, }, 'courseware': { 'source_filenames': courseware_js, - 'output_filename': 'js/lms-courseware.js' + 'output_filename': 'js/lms-courseware.js', + 'test_order': 2, }, 'main_vendor': { 'source_filenames': main_vendor_js, 'output_filename': 'js/lms-main_vendor.js', + 'test_order': 0, }, 'module-js': { 'source_filenames': rooted_glob(COMMON_ROOT / 'static', 'xmodule/modules/js/*.js'), 'output_filename': 'js/lms-modules.js', + 'test_order': 3, }, 'discussion': { 'source_filenames': discussion_js, - 'output_filename': 'js/discussion.js' + 'output_filename': 'js/discussion.js', + 'test_order': 4, }, 'staff_grading': { 'source_filenames': staff_grading_js, - 'output_filename': 'js/staff_grading.js' + 'output_filename': 'js/staff_grading.js', + 'test_order': 5, }, 'open_ended': { 'source_filenames': open_ended_js, - 'output_filename': 'js/open_ended.js' + 'output_filename': 'js/open_ended.js', + 'test_order': 6, } } diff --git a/lms/envs/jasmine.py b/lms/envs/jasmine.py index 8551d80504..f3f20e7fbc 100644 --- a/lms/envs/jasmine.py +++ b/lms/envs/jasmine.py @@ -20,14 +20,14 @@ PIPELINE_JS['js-test-source'] = { 'source_filenames': sum([ pipeline_group['source_filenames'] for group_name, pipeline_group - in PIPELINE_JS.items() + in sorted(PIPELINE_JS.items(), key=lambda item: item[1].get('test_order', 1e100)) if group_name != 'spec' ], []), 'output_filename': 'js/lms-test-source.js' } PIPELINE_JS['spec'] = { - 'source_filenames': sorted(rooted_glob(PROJECT_ROOT / 'static/', 'coffee/spec/**/*.coffee')), + 'source_filenames': sorted(rooted_glob(PROJECT_ROOT / 'static/', 'coffee/spec/**/*.js')), 'output_filename': 'js/lms-spec.js' } From 771937b3da02ea29dee63a43701cee5412ce0b0f Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Tue, 30 Apr 2013 14:09:42 -0400 Subject: [PATCH 17/94] Remove duplicate libraries used while jasmine testing the LMS (as they are also defined in vendor) --- lms/static/coffee/files.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/lms/static/coffee/files.json b/lms/static/coffee/files.json index 0efe488dd9..d9d7087efe 100644 --- a/lms/static/coffee/files.json +++ b/lms/static/coffee/files.json @@ -1,8 +1,5 @@ { "js_files": [ - "/static/js/vendor/RequireJS.js", - "/static/js/vendor/jquery.min.js", - "/static/js/vendor/jquery-ui.min.js", "/static/js/vendor/jquery.leanModal.min.js", "/static/js/vendor/flot/jquery.flot.js" ] From 76599863e6b73990368a2f5c0c9aba43678e6331 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Tue, 30 Apr 2013 14:09:58 -0400 Subject: [PATCH 18/94] Compile all coffee and sass before running jasmine tests --- rakefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rakefile b/rakefile index 2b9cb9fd57..459ecca3f3 100644 --- a/rakefile +++ b/rakefile @@ -301,6 +301,7 @@ end desc "Open jasmine tests for #{system} in your default browser" task "browse_jasmine_#{system}" do + compile_assets() django_for_jasmine(system, true) do |jasmine_url| Launchy.open(jasmine_url) puts "Press ENTER to terminate".red @@ -310,6 +311,7 @@ end desc "Use phantomjs to run jasmine tests for #{system} from the console" task "phantomjs_jasmine_#{system}" do + compile_assets() phantomjs = ENV['PHANTOMJS_PATH'] || 'phantomjs' django_for_jasmine(system, false) do |jasmine_url| sh("#{phantomjs} common/test/phantom-jasmine/lib/run_jasmine_test.coffee #{jasmine_url}") From aa4e29d2f1ac51c402957644c9c93c5ac4158c78 Mon Sep 17 00:00:00 2001 From: Jay Zoldak Date: Tue, 30 Apr 2013 15:21:23 -0400 Subject: [PATCH 19/94] Add leanModal vendor src to files.json for cms jasmine tests. Also .gitignore compiled js from coffee specs --- cms/static/coffee/files.json | 3 ++- common/static/coffee/spec/.gitignore | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 common/static/coffee/spec/.gitignore diff --git a/cms/static/coffee/files.json b/cms/static/coffee/files.json index e7a66b5bc0..c2e1a8acf6 100644 --- a/cms/static/coffee/files.json +++ b/cms/static/coffee/files.json @@ -7,6 +7,7 @@ "js/vendor/jquery.cookie.js", "js/vendor/json2.js", "js/vendor/underscore-min.js", - "js/vendor/backbone-min.js" + "js/vendor/backbone-min.js", + "js/vendor/jquery.leanModal.min.js" ] } diff --git a/common/static/coffee/spec/.gitignore b/common/static/coffee/spec/.gitignore new file mode 100644 index 0000000000..a6c7c2852d --- /dev/null +++ b/common/static/coffee/spec/.gitignore @@ -0,0 +1 @@ +*.js From 091ca9c3f06766a0709bb02201c49b8035afe260 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Tue, 30 Apr 2013 15:55:30 -0400 Subject: [PATCH 20/94] Add a private-requirements.txt for personal changes to how things are installed. Good for installing libs as working dirs. --- .gitignore | 1 + github-requirements.txt | 5 +++++ local-requirements.txt | 5 ----- rakefile | 3 +++ 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 87a0778a6f..d01baf055a 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ :2e# .AppleDouble database.sqlite +private-requirements.txt courseware/static/js/mathjax/* flushdb.sh build diff --git a/github-requirements.txt b/github-requirements.txt index 468d55ce65..0d7b75b89b 100644 --- a/github-requirements.txt +++ b/github-requirements.txt @@ -1,5 +1,10 @@ # Python libraries to install directly from github + +# Third-party: -e git://github.com/MITx/django-staticfiles.git@6d2504e5c8#egg=django-staticfiles -e git://github.com/MITx/django-pipeline.git#egg=django-pipeline -e git://github.com/MITx/django-wiki.git@e2e84558#egg=django-wiki -e git://github.com/dementrock/pystache_custom.git@776973740bdaad83a3b029f96e415a7d1e8bec2f#egg=pystache_custom-dev + +# Our libraries: +-e git+https://github.com/edx/XBlock.git@5ce6f70a#egg=XBlock diff --git a/local-requirements.txt b/local-requirements.txt index 0ce7de0e73..201467d11e 100644 --- a/local-requirements.txt +++ b/local-requirements.txt @@ -2,8 +2,3 @@ -e common/lib/capa -e common/lib/xmodule -e . - -# XBlock: -# Might change frequently, so put it in local-requirements.txt, -# but conceptually is an external package, so it is in a separate repo. --e git+https://github.com/edx/XBlock.git@5ce6f70a#egg=XBlock diff --git a/rakefile b/rakefile index 2b9cb9fd57..27bb00bcbc 100644 --- a/rakefile +++ b/rakefile @@ -174,6 +174,9 @@ end desc "Install all python prerequisites for the lms and cms" task :install_python_prereqs do sh('pip install -r requirements.txt') + if File.file?("private-requirements.txt") + sh('pip install -r private-requirements.txt') + end end task :predjango do From 5b82ffd2add1e6d645a6239eb380a888844c5d75 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Tue, 30 Apr 2013 15:56:21 -0400 Subject: [PATCH 21/94] A little documentation. --- rakefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rakefile b/rakefile index 27bb00bcbc..798e1c28bf 100644 --- a/rakefile +++ b/rakefile @@ -174,6 +174,8 @@ end desc "Install all python prerequisites for the lms and cms" task :install_python_prereqs do sh('pip install -r requirements.txt') + # Check for private-requirements.txt: used to install our libs as working dirs, + # or personal-use tools. if File.file?("private-requirements.txt") sh('pip install -r private-requirements.txt') end From 94e41319ee5d50b9ee9b985ac51a4ea895994ddb Mon Sep 17 00:00:00 2001 From: cahrens Date: Wed, 1 May 2013 09:09:33 -0400 Subject: [PATCH 22/94] Unit test, remove display_name for now so there is no visible change. --- common/lib/xmodule/xmodule/capa_module.py | 21 +++--- .../lib/xmodule/xmodule/discussion_module.py | 11 +-- common/lib/xmodule/xmodule/fields.py | 9 ++- common/lib/xmodule/xmodule/mako_module.py | 3 +- .../xmodule/xmodule/tests/test_mako_module.py | 73 +++++++++++++++++++ common/lib/xmodule/xmodule/x_module.py | 6 -- common/lib/xmodule/xmodule/xml_module.py | 4 +- 7 files changed, 100 insertions(+), 27 deletions(-) create mode 100644 common/lib/xmodule/xmodule/tests/test_mako_module.py diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index bc5014d75b..015bce4e85 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -17,7 +17,7 @@ from xmodule.x_module import XModule, XModuleFields from xmodule.raw_module import RawDescriptor from xmodule.exceptions import NotFoundError, ProcessingError from xblock.core import Scope, String, Boolean, Object -from .fields import Timedelta, Date, StringyInteger, StringyFloat +from .fields import Timedelta, Date, StringyInteger, StringyFloat, NON_EDITABLE_SETTINGS_SCOPE from xmodule.util.date_utils import time_to_datetime log = logging.getLogger("mitx.courseware") @@ -62,26 +62,23 @@ class ComplexEncoder(json.JSONEncoder): class CapaFields(object): attempts = StringyInteger(help="Number of attempts taken by the student on this problem", default=0, scope=Scope.user_state) - max_attempts = StringyInteger(display_name="Maximum Allowed Attempts", - help="Maximum number of attempts that a student is allowed", scope=Scope.settings) - due = Date(help="Date that this problem is due by", scope=XModuleFields.nonEditableSettingsScope) + max_attempts = StringyInteger(help="Maximum number of attempts that a student is allowed", scope=Scope.settings) + due = Date(help="Date that this problem is due by", scope=NON_EDITABLE_SETTINGS_SCOPE) graceperiod = Timedelta(help="Amount of time after the due date that submissions will be accepted", - scope=XModuleFields.nonEditableSettingsScope) - showanswer = String(display_name="Show Answer", - help="When to show the problem answer to the student", scope=Scope.settings, default="closed", + scope=NON_EDITABLE_SETTINGS_SCOPE) + showanswer = String(help="When to show the problem answer to the student", scope=Scope.settings, default="closed", values=["answered", "always", "attempted", "closed", "never"]) force_save_button = Boolean(help="Whether to force the save button to appear on the page", - scope=XModuleFields.nonEditableSettingsScope, default=False) - rerandomize = Randomization(display_name="Rerandomize", help="When to rerandomize the problem", - default="always", scope=Scope.settings) + scope=NON_EDITABLE_SETTINGS_SCOPE, default=False) + rerandomize = Randomization(help="When to rerandomize the problem", default="always", scope=Scope.settings) data = String(help="XML data for the problem", scope=Scope.content) correct_map = Object(help="Dictionary with the correctness of current student answers", scope=Scope.user_state, default={}) input_state = Object(help="Dictionary for maintaining the state of inputtypes", scope=Scope.user_state) student_answers = Object(help="Dictionary with the current student responses", scope=Scope.user_state) done = Boolean(help="Whether the student has answered the problem", scope=Scope.user_state) seed = StringyInteger(help="Random seed for this student", scope=Scope.user_state) - weight = StringyFloat(display_name="Problem Weight", help="How much to weight this problem by", scope=Scope.settings) - markdown = String(help="Markdown source of this module", scope=XModuleFields.nonEditableSettingsScope) + weight = StringyFloat(help="How much to weight this problem by", scope=Scope.settings) + markdown = String(help="Markdown source of this module", scope=NON_EDITABLE_SETTINGS_SCOPE) source_code = String(help="Source code for LaTeX and Word problems. This feature is not well-supported.", scope=Scope.settings) diff --git a/common/lib/xmodule/xmodule/discussion_module.py b/common/lib/xmodule/xmodule/discussion_module.py index 9c2681ef2d..b4409f5216 100644 --- a/common/lib/xmodule/xmodule/discussion_module.py +++ b/common/lib/xmodule/xmodule/discussion_module.py @@ -1,17 +1,18 @@ from pkg_resources import resource_string -from xmodule.x_module import XModule, XModuleFields +from .fields import NON_EDITABLE_SETTINGS_SCOPE +from xmodule.x_module import XModule from xmodule.raw_module import RawDescriptor from xmodule.editing_module import MetadataOnlyEditingDescriptor from xblock.core import String, Scope class DiscussionFields(object): - discussion_id = String(scope=XModuleFields.nonEditableSettingsScope) - discussion_category = String(display_name="Category Name", scope=Scope.settings) - discussion_target = String(display_name="Subcategory Name", scope=Scope.settings) + discussion_id = String(scope=NON_EDITABLE_SETTINGS_SCOPE) + discussion_category = String(scope=Scope.settings) + discussion_target = String(scope=Scope.settings) # We may choose to enable this in the future, but while Kevin is investigating.... - sort_key = String(scope=XModuleFields.nonEditableSettingsScope) + sort_key = String(scope=NON_EDITABLE_SETTINGS_SCOPE) class DiscussionModule(DiscussionFields, XModule): diff --git a/common/lib/xmodule/xmodule/fields.py b/common/lib/xmodule/xmodule/fields.py index 3d56b7941e..b79accb2b3 100644 --- a/common/lib/xmodule/xmodule/fields.py +++ b/common/lib/xmodule/xmodule/fields.py @@ -7,11 +7,18 @@ from xblock.core import ModelType import datetime import dateutil.parser -from xblock.core import Integer, Float, Boolean +from xblock.core import Integer, Float, Boolean, Scope log = logging.getLogger(__name__) +class NonEditableSettingsScope(Scope): + pass + +# Same scope as Settings.scope, but not intended to be edited by users (in Studio). +NON_EDITABLE_SETTINGS_SCOPE = NonEditableSettingsScope(user=Scope.settings.user, block=Scope.settings.block) + + class Date(ModelType): ''' Date fields know how to parse and produce json (iso) compatible formats. diff --git a/common/lib/xmodule/xmodule/mako_module.py b/common/lib/xmodule/xmodule/mako_module.py index e01a03e309..02db0c602f 100644 --- a/common/lib/xmodule/xmodule/mako_module.py +++ b/common/lib/xmodule/xmodule/mako_module.py @@ -1,4 +1,5 @@ -from .x_module import XModuleDescriptor, DescriptorSystem, NonEditableSettingsScope +from .x_module import XModuleDescriptor, DescriptorSystem +from .fields import NonEditableSettingsScope from xblock.core import Scope from xblock.core import XBlock diff --git a/common/lib/xmodule/xmodule/tests/test_mako_module.py b/common/lib/xmodule/xmodule/tests/test_mako_module.py new file mode 100644 index 0000000000..7686e2a69e --- /dev/null +++ b/common/lib/xmodule/xmodule/tests/test_mako_module.py @@ -0,0 +1,73 @@ +from xmodule.x_module import XModuleFields +from xblock.core import Scope, String, Object +from xmodule.fields import Date, StringyInteger, NON_EDITABLE_SETTINGS_SCOPE +from xmodule.mako_module import MakoModuleDescriptor +import unittest +from . import test_system +from mock import Mock + + +class TestFields(object): + # Will be returned by editable_metadata_fields because Scope.settings. + max_attempts = StringyInteger(scope=Scope.settings) + # Will not be returned by editable_metadata_fields because declared as non-editable Scope.settings. + due = Date(scope=NON_EDITABLE_SETTINGS_SCOPE) + # Will not be returned by editable_metadata_fields because is not Scope.settings. + student_answers = Object(scope=Scope.user_state) + # Will be returned, and can override the inherited value from XModule. + display_name = String(scope=Scope.settings) + + +class EditableMetadataFieldsTest(unittest.TestCase): + + def test_display_name_field(self): + editable_fields = self.get_mako_editable_fields({}) + # Tests that the xblock fields (currently tags and name) get filtered out. + self.assertEqual(1, len(editable_fields), "Expected only 1 editable field for mako descriptor.") + self.assert_display_name_default(editable_fields) + + def test_override_default(self): + # Tests that is_default is correct when a value overrides the default. + editable_fields = self.get_mako_editable_fields({'display_name': 'foo'}) + display_name = editable_fields['display_name'] + self.assertFalse(display_name['is_default']) + self.assertEqual('foo', display_name['value']) + + def test_additional_field(self): + editable_fields = self.get_module_editable_fields({'max_attempts' : '7'}) + self.assertEqual(2, len(editable_fields)) + self.assert_field_values(editable_fields, 'max_attempts', TestFields.max_attempts, False, False, 7) + self.assert_display_name_default(editable_fields) + + editable_fields = self.get_module_editable_fields({}) + self.assert_field_values(editable_fields, 'max_attempts', TestFields.max_attempts, True, False, None) + + def test_inherited_field(self): + editable_fields = self.get_module_editable_fields({'display_name' : 'inherited'}) + self.assert_field_values(editable_fields, 'display_name', XModuleFields.display_name, False, True, 'inherited') + + # Start of helper methods + def get_mako_editable_fields(self, model_data): + system = test_system() + system.render_template = Mock(return_value="
    Test Template HTML
    ") + return MakoModuleDescriptor(system=system, location=None, model_data=model_data).editable_metadata_fields + + def get_module_editable_fields(self, model_data): + class TestModuleDescriptor(TestFields, MakoModuleDescriptor): + pass + + system = test_system() + system.render_template = Mock(return_value="
    Test Template HTML
    ") + descriptor = TestModuleDescriptor(system=system, location=None, model_data=model_data) + descriptor._inherited_metadata = {'display_name' : 'inherited'} + return descriptor.editable_metadata_fields + + def assert_display_name_default(self, editable_fields): + self.assert_field_values(editable_fields, 'display_name', XModuleFields.display_name, True, False, None) + + def assert_field_values(self, editable_fields, name, field, is_default, is_inherited, value): + test_field = editable_fields[name] + self.assertEqual(field, test_field['field']) + self.assertEqual(is_default, test_field['is_default']) + self.assertEqual(is_inherited, test_field['is_inherited']) + self.assertEqual(value, test_field['value']) diff --git a/common/lib/xmodule/xmodule/x_module.py b/common/lib/xmodule/xmodule/x_module.py index 4a16548c6f..04ffcc6092 100644 --- a/common/lib/xmodule/xmodule/x_module.py +++ b/common/lib/xmodule/xmodule/x_module.py @@ -78,18 +78,12 @@ class HTMLSnippet(object): .format(self.__class__)) -class NonEditableSettingsScope(Scope): - pass - - class XModuleFields(object): display_name = String( - display_name="Display Name", help="Display name for this module", scope=Scope.settings, default=None ) - nonEditableSettingsScope = NonEditableSettingsScope(user=Scope.settings.user, block=Scope.settings.block) class XModule(XModuleFields, HTMLSnippet, XBlock): diff --git a/common/lib/xmodule/xmodule/xml_module.py b/common/lib/xmodule/xmodule/xml_module.py index bfbf12635a..a34b0e5078 100644 --- a/common/lib/xmodule/xmodule/xml_module.py +++ b/common/lib/xmodule/xmodule/xml_module.py @@ -10,7 +10,7 @@ from xblock.core import Object from xmodule.x_module import (XModuleDescriptor, policy_key) from xmodule.modulestore import Location from xmodule.modulestore.inheritance import own_metadata -from xmodule.x_module import XModuleFields +from .fields import NON_EDITABLE_SETTINGS_SCOPE log = logging.getLogger(__name__) @@ -86,7 +86,7 @@ class XmlDescriptor(XModuleDescriptor): """ xml_attributes = Object(help="Map of unhandled xml attributes, used only for storage between import and export", - default={}, scope=XModuleFields.nonEditableSettingsScope) + default={}, scope=NON_EDITABLE_SETTINGS_SCOPE) # Extension to append to filename paths filename_extension = 'xml' From 1c8cef32ef6fb63d29830fe3f0ba63e4ee6114ba Mon Sep 17 00:00:00 2001 From: cahrens Date: Wed, 1 May 2013 09:30:20 -0400 Subject: [PATCH 23/94] Remove unused import. --- common/lib/xmodule/xmodule/capa_module.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index 015bce4e85..d4db445ea8 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -13,7 +13,7 @@ from capa.responsetypes import StudentInputError,\ ResponseError, LoncapaProblemError from capa.util import convert_files_to_filenames from .progress import Progress -from xmodule.x_module import XModule, XModuleFields +from xmodule.x_module import XModule from xmodule.raw_module import RawDescriptor from xmodule.exceptions import NotFoundError, ProcessingError from xblock.core import Scope, String, Boolean, Object From 13fe9c11cb93c46b57f07376569586adbb62eb32 Mon Sep 17 00:00:00 2001 From: cahrens Date: Wed, 1 May 2013 09:33:35 -0400 Subject: [PATCH 24/94] Merged with master. --- .gitignore | 1 + .../contentstore/tests/test_contentstore.py | 13 +- cms/djangoapps/contentstore/views.py | 25 ++- cms/templates/base.html | 2 +- cms/templates/settings.html | 2 +- common/lib/capa/capa/calc.py | 27 ++-- .../lib/capa/capa/tests/test_responsetypes.py | 108 +++++++++++-- .../lib/xmodule/xmodule/modulestore/draft.py | 14 +- .../lib/xmodule/xmodule/modulestore/mongo.py | 3 +- .../xmodule/modulestore/store_utilities.py | 13 +- .../xmodule/templates/about/overview.yaml | 53 +++++++ .../templates/problem/latex_problem.yaml | 2 +- common/static/images/firecode.jpg | Bin 0 -> 67337 bytes common/static/images/high_pass_filter.png | Bin 0 -> 48150 bytes common/static/images/mit_dome.jpg | Bin 0 -> 37935 bytes common/static/images/pl-course.png | Bin 0 -> 40938 bytes common/static/images/pl-faculty.png | Bin 0 -> 9137 bytes common/static/images/simple_graph.png | Bin 0 -> 15107 bytes common/static/images/voltage_divider.png | Bin 0 -> 27331 bytes conf/locale/config | 2 +- conf/locale/en/LC_MESSAGES/messages.po | 1 + github-requirements.txt | 5 + i18n/dummy.py | 6 +- i18n/execute.py | 86 +++++++++++ i18n/extract.py | 145 ++++++++++++++++++ i18n/generate.py | 64 ++++++++ i18n/make_dummy.py | 49 +++--- i18n/tests/__init__.py | 4 + i18n/tests/test_converter.py | 42 +++++ i18n/tests/test_dummy.py | 50 ++++++ i18n/tests/test_extract.py | 85 ++++++++++ i18n/tests/test_generate.py | 61 ++++++++ i18n/update.py | 110 ------------- .../sass/multicourse/_course_about.scss | 4 +- lms/templates/static_templates/contact.html | 3 + local-requirements.txt | 5 - rakefile | 35 +++++ requirements.txt | 5 +- 38 files changed, 825 insertions(+), 200 deletions(-) create mode 100644 common/lib/xmodule/xmodule/templates/about/overview.yaml create mode 100644 common/static/images/firecode.jpg create mode 100644 common/static/images/high_pass_filter.png create mode 100644 common/static/images/mit_dome.jpg create mode 100644 common/static/images/pl-course.png create mode 100644 common/static/images/pl-faculty.png create mode 100644 common/static/images/simple_graph.png create mode 100644 common/static/images/voltage_divider.png create mode 100644 conf/locale/en/LC_MESSAGES/messages.po create mode 100644 i18n/execute.py create mode 100755 i18n/extract.py create mode 100755 i18n/generate.py create mode 100644 i18n/tests/__init__.py create mode 100644 i18n/tests/test_converter.py create mode 100644 i18n/tests/test_dummy.py create mode 100644 i18n/tests/test_extract.py create mode 100644 i18n/tests/test_generate.py delete mode 100755 i18n/update.py diff --git a/.gitignore b/.gitignore index 87a0778a6f..d01baf055a 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ :2e# .AppleDouble database.sqlite +private-requirements.txt courseware/static/js/mathjax/* flushdb.sh build diff --git a/cms/djangoapps/contentstore/tests/test_contentstore.py b/cms/djangoapps/contentstore/tests/test_contentstore.py index ed95d81d67..07b7032e60 100644 --- a/cms/djangoapps/contentstore/tests/test_contentstore.py +++ b/cms/djangoapps/contentstore/tests/test_contentstore.py @@ -264,13 +264,13 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase): def test_delete(self): import_from_xml(modulestore(), 'common/test/data/', ['full']) - module_store = modulestore('direct') + direct_store = modulestore('direct') - sequential = module_store.get_item(Location(['i4x', 'edX', 'full', 'sequential', 'Administrivia_and_Circuit_Elements', None])) + sequential = direct_store.get_item(Location(['i4x', 'edX', 'full', 'sequential', 'Administrivia_and_Circuit_Elements', None])) - chapter = module_store.get_item(Location(['i4x', 'edX', 'full', 'chapter', 'Week_1', None])) + chapter = direct_store.get_item(Location(['i4x', 'edX', 'full', 'chapter', 'Week_1', None])) - # make sure the parent no longer points to the child object which was deleted + # make sure the parent points to the child object which is to be deleted self.assertTrue(sequential.location.url() in chapter.children) self.client.post( @@ -281,18 +281,19 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase): found = False try: - module_store.get_item(Location(['i4x', 'edX', 'full', 'sequential', 'Administrivia_and_Circuit_Elements', None])) + direct_store.get_item(Location(['i4x', 'edX', 'full', 'sequential', 'Administrivia_and_Circuit_Elements', None])) found = True except ItemNotFoundError: pass self.assertFalse(found) - chapter = module_store.get_item(Location(['i4x', 'edX', 'full', 'chapter', 'Week_1', None])) + chapter = direct_store.get_item(Location(['i4x', 'edX', 'full', 'chapter', 'Week_1', None])) # make sure the parent no longer points to the child object which was deleted self.assertFalse(sequential.location.url() in chapter.children) + def test_about_overrides(self): ''' This test case verifies that a course can use specialized override for about data, e.g. /about/Fall_2012/effort.html diff --git a/cms/djangoapps/contentstore/views.py b/cms/djangoapps/contentstore/views.py index 6ce17d04aa..824d2119f1 100644 --- a/cms/djangoapps/contentstore/views.py +++ b/cms/djangoapps/contentstore/views.py @@ -615,25 +615,14 @@ def delete_item(request): delete_children = request.POST.get('delete_children', False) delete_all_versions = request.POST.get('delete_all_versions', False) - item = modulestore().get_item(item_location) + store = modulestore() - store = get_modulestore(item_loc) - - # @TODO: this probably leaves draft items dangling. My preferance would be for the semantic to be - # if item.location.revision=None, then delete both draft and published version - # if caller wants to only delete the draft than the caller should put item.location.revision='draft' + item = store.get_item(item_location) if delete_children: - _xmodule_recurse(item, lambda i: store.delete_item(i.location)) + _xmodule_recurse(item, lambda i: store.delete_item(i.location, delete_all_versions)) else: - store.delete_item(item.location) - - # cdodge: this is a bit of a hack until I can talk with Cale about the - # semantics of delete_item whereby the store is draft aware. Right now calling - # delete_item on a vertical tries to delete the draft version leaving the - # requested delete to never occur - if item.location.revision is None and item.location.category == 'vertical' and delete_all_versions: - modulestore('direct').delete_item(item.location) + store.delete_item(item.location, delete_all_versions) # cdodge: we need to remove our parent's pointer to us so that it is no longer dangling if delete_all_versions: @@ -1494,6 +1483,12 @@ def create_new_course(request): new_course = modulestore('direct').clone_item(template, dest_location) + # clone a default 'about' module as well + + about_template_location = Location(['i4x', 'edx', 'templates', 'about', 'overview']) + dest_about_location = dest_location._replace(category='about', name='overview') + modulestore('direct').clone_item(about_template_location, dest_about_location) + if display_name is not None: new_course.display_name = display_name diff --git a/cms/templates/base.html b/cms/templates/base.html index 65e08b3cc5..3f286c2582 100644 --- a/cms/templates/base.html +++ b/cms/templates/base.html @@ -30,7 +30,7 @@ <%include file="courseware_vendor_js.html"/> - + diff --git a/cms/templates/settings.html b/cms/templates/settings.html index 3923c0f905..0a647c632e 100644 --- a/cms/templates/settings.html +++ b/cms/templates/settings.html @@ -179,7 +179,7 @@ from contentstore import utils
  • - Introductions, prerequisites, FAQs that are used on your course summary page + Introductions, prerequisites, FAQs that are used on your course summary page (formatted in HTML)
  • diff --git a/common/lib/capa/capa/calc.py b/common/lib/capa/capa/calc.py index c3fe6b656b..bb1fb97153 100644 --- a/common/lib/capa/capa/calc.py +++ b/common/lib/capa/capa/calc.py @@ -24,7 +24,9 @@ default_functions = {'sin': numpy.sin, 'arccos': numpy.arccos, 'arcsin': numpy.arcsin, 'arctan': numpy.arctan, - 'abs': numpy.abs + 'abs': numpy.abs, + 'fact': math.factorial, + 'factorial': math.factorial } default_variables = {'j': numpy.complex(0, 1), 'e': numpy.e, @@ -112,18 +114,18 @@ def evaluator(variables, functions, string, cs=False): return float('nan') ops = {"^": operator.pow, - "*": operator.mul, - "/": operator.truediv, - "+": operator.add, - "-": operator.sub, - } + "*": operator.mul, + "/": operator.truediv, + "+": operator.add, + "-": operator.sub, + } # We eliminated extreme ones, since they're rarely used, and potentially # confusing. They may also conflict with variables if we ever allow e.g. # 5R instead of 5*R suffixes = {'%': 0.01, 'k': 1e3, 'M': 1e6, 'G': 1e9, - 'T': 1e12, # 'P':1e15,'E':1e18,'Z':1e21,'Y':1e24, - 'c': 1e-2, 'm': 1e-3, 'u': 1e-6, - 'n': 1e-9, 'p': 1e-12} # ,'f':1e-15,'a':1e-18,'z':1e-21,'y':1e-24} + 'T': 1e12, # 'P':1e15,'E':1e18,'Z':1e21,'Y':1e24, + 'c': 1e-2, 'm': 1e-3, 'u': 1e-6, + 'n': 1e-9, 'p': 1e-12} # ,'f':1e-15,'a':1e-18,'z':1e-21,'y':1e-24} def super_float(text): ''' Like float, but with si extensions. 1k goes to 1000''' @@ -246,4 +248,9 @@ if __name__ == '__main__': print evaluator({}, {}, "5+1*j") print evaluator({}, {}, "j||1") print evaluator({}, {}, "e^(j*pi)") - print evaluator({}, {}, "5+7 QWSEKO") + print evaluator({}, {}, "fact(5)") + print evaluator({}, {}, "factorial(5)") + try: + print evaluator({}, {}, "5+7 QWSEKO") + except UndefinedVariable: + print "Successfully caught undefined variable" diff --git a/common/lib/capa/capa/tests/test_responsetypes.py b/common/lib/capa/capa/tests/test_responsetypes.py index bf64d3cc69..7a43fff4c9 100644 --- a/common/lib/capa/capa/tests/test_responsetypes.py +++ b/common/lib/capa/capa/tests/test_responsetypes.py @@ -7,6 +7,7 @@ from datetime import datetime import json from nose.plugins.skip import SkipTest import os +import random import unittest import textwrap @@ -14,7 +15,7 @@ from . import test_system import capa.capa_problem as lcp from capa.responsetypes import LoncapaProblemError, \ - StudentInputError, ResponseError + StudentInputError, ResponseError from capa.correctmap import CorrectMap from capa.util import convert_files_to_filenames from capa.xqueue_interface import dateformat @@ -33,10 +34,13 @@ class ResponseTest(unittest.TestCase): xml = self.xml_factory.build_xml(**kwargs) return lcp.LoncapaProblem(xml, '1', system=test_system) - def assert_grade(self, problem, submission, expected_correctness): + def assert_grade(self, problem, submission, expected_correctness, msg=None): input_dict = {'1_2_1': submission} correct_map = problem.grade_answers(input_dict) - self.assertEquals(correct_map.get_correctness('1_2_1'), expected_correctness) + if msg is None: + self.assertEquals(correct_map.get_correctness('1_2_1'), expected_correctness) + else: + self.assertEquals(correct_map.get_correctness('1_2_1'), expected_correctness, msg) def assert_answer_format(self, problem): answers = problem.get_question_answers() @@ -357,6 +361,83 @@ class FormulaResponseTest(ResponseTest): self.assert_grade(problem, '2*x', 'correct') self.assert_grade(problem, '3*x', 'incorrect') + def test_parallel_resistors(self): + """Test parallel resistors""" + sample_dict = {'R1': (10, 10), 'R2': (2, 2), 'R3': (5, 5), 'R4': (1, 1)} + + # Test problem + problem = self.build_problem(sample_dict=sample_dict, + num_samples=10, + tolerance=0.01, + answer="R1||R2") + # Expect answer to be marked correct + input_formula = "R1||R2" + self.assert_grade(problem, input_formula, "correct") + + # Expect random number to be marked incorrect + input_formula = "13" + self.assert_grade(problem, input_formula, "incorrect") + + # Expect incorrect answer marked incorrect + input_formula = "R3||R4" + self.assert_grade(problem, input_formula, "incorrect") + + def test_default_variables(self): + """Test the default variables provided in common/lib/capa/capa/calc.py""" + # which are: j (complex number), e, pi, k, c, T, q + + # Sample x in the range [-10,10] + sample_dict = {'x': (-10, 10)} + default_variables = [('j', 2, 3), ('e', 2, 3), ('pi', 2, 3), ('c', 2, 3), ('T', 2, 3), + ('k', 2 * 10 ** 23, 3 * 10 ** 23), # note k = scipy.constants.k = 1.3806488e-23 + ('q', 2 * 10 ** 19, 3 * 10 ** 19)] # note k = scipy.constants.e = 1.602176565e-19 + for (var, cscalar, iscalar) in default_variables: + # The expected solution is numerically equivalent to cscalar*var + correct = '{0}*x*{1}'.format(cscalar, var) + incorrect = '{0}*x*{1}'.format(iscalar, var) + problem = self.build_problem(sample_dict=sample_dict, + num_samples=10, + tolerance=0.01, + answer=correct) + + # Expect that the inputs are graded correctly + self.assert_grade(problem, correct, 'correct', + msg="Failed on variable {0}; the given, correct answer was {1} but graded 'incorrect'".format(var, correct)) + self.assert_grade(problem, incorrect, 'incorrect', + msg="Failed on variable {0}; the given, incorrect answer was {1} but graded 'correct'".format(var, incorrect)) + + def test_default_functions(self): + """Test the default functions provided in common/lib/capa/capa/calc.py""" + # which are: sin, cos, tan, sqrt, log10, log2, ln, + # arccos, arcsin, arctan, abs, + # fact, factorial + + w = random.randint(3, 10) + sample_dict = {'x': (-10, 10), # Sample x in the range [-10,10] + 'y': (1, 10), # Sample y in the range [1,10] - logs, arccos need positive inputs + 'z': (-1, 1), # Sample z in the range [1,10] - for arcsin, arctan + 'w': (w, w)} # Sample w is a random, positive integer - factorial needs a positive, integer input, + # and the way formularesponse is defined, we can only specify a float range + + default_functions = [('sin', 2, 3, 'x'), ('cos', 2, 3, 'x'), ('tan', 2, 3, 'x'), ('sqrt', 2, 3, 'y'), ('log10', 2, 3, 'y'), + ('log2', 2, 3, 'y'), ('ln', 2, 3, 'y'), ('arccos', 2, 3, 'z'), ('arcsin', 2, 3, 'z'), ('arctan', 2, 3, 'x'), + ('abs', 2, 3, 'x'), ('fact', 2, 3, 'w'), ('factorial', 2, 3, 'w')] + for (func, cscalar, iscalar, var) in default_functions: + print 'func is: {0}'.format(func) + # The expected solution is numerically equivalent to cscalar*func(var) + correct = '{0}*{1}({2})'.format(cscalar, func, var) + incorrect = '{0}*{1}({2})'.format(iscalar, func, var) + problem = self.build_problem(sample_dict=sample_dict, + num_samples=10, + tolerance=0.01, + answer=correct) + + # Expect that the inputs are graded correctly + self.assert_grade(problem, correct, 'correct', + msg="Failed on function {0}; the given, correct answer was {1} but graded 'incorrect'".format(func, correct)) + self.assert_grade(problem, incorrect, 'incorrect', + msg="Failed on function {0}; the given, incorrect answer was {1} but graded 'correct'".format(func, incorrect)) + class StringResponseTest(ResponseTest): from response_xml_factory import StringResponseXMLFactory @@ -904,14 +985,13 @@ class CustomResponseTest(ResponseTest): with self.assertRaises(ResponseError): problem.grade_answers({'1_2_1': '42'}) - def test_module_imports_inline(self): ''' Check that the correct modules are available to custom response scripts ''' - for module_name in ['random', 'numpy', 'math', 'scipy', + for module_name in ['random', 'numpy', 'math', 'scipy', 'calc', 'eia', 'chemcalc', 'chemtools', 'miller', 'draganddrop']: @@ -921,26 +1001,25 @@ class CustomResponseTest(ResponseTest): script = textwrap.dedent(''' correct[0] = 'correct' assert('%s' in globals())''' % module_name) - + # Create the problem problem = self.build_problem(answer=script) - # Expect that we can grade an answer without + # Expect that we can grade an answer without # getting an exception try: problem.grade_answers({'1_2_1': '42'}) except ResponseError: - self.fail("Could not use name '%s' in custom response" - % module_name) - + self.fail("Could not use name '{0}s' in custom response".format(module_name)) + def test_module_imports_function(self): ''' Check that the correct modules are available to custom response scripts ''' - for module_name in ['random', 'numpy', 'math', 'scipy', + for module_name in ['random', 'numpy', 'math', 'scipy', 'calc', 'eia', 'chemcalc', 'chemtools', 'miller', 'draganddrop']: @@ -951,18 +1030,17 @@ class CustomResponseTest(ResponseTest): def check_func(expect, answer_given): assert('%s' in globals()) return True''' % module_name) - + # Create the problem problem = self.build_problem(script=script, cfn="check_func") - # Expect that we can grade an answer without + # Expect that we can grade an answer without # getting an exception try: problem.grade_answers({'1_2_1': '42'}) except ResponseError: - self.fail("Could not use name '%s' in custom response" - % module_name) + self.fail("Could not use name '{0}s' in custom response".format(module_name)) class SchematicResponseTest(ResponseTest): diff --git a/common/lib/xmodule/xmodule/modulestore/draft.py b/common/lib/xmodule/xmodule/modulestore/draft.py index 43eb050129..c3f1b23688 100644 --- a/common/lib/xmodule/xmodule/modulestore/draft.py +++ b/common/lib/xmodule/xmodule/modulestore/draft.py @@ -13,6 +13,12 @@ def as_draft(location): """ return Location(location)._replace(revision=DRAFT) +def as_published(location): + """ + Returns the Location that is the published version for `location` + """ + return Location(location)._replace(revision=None) + def wrap_draft(item): """ @@ -159,13 +165,17 @@ class DraftModuleStore(ModuleStoreBase): return super(DraftModuleStore, self).update_metadata(draft_loc, metadata) - def delete_item(self, location): + def delete_item(self, location, delete_all_versions=False): """ Delete an item from this modulestore location: Something that can be passed to Location """ - return super(DraftModuleStore, self).delete_item(as_draft(location)) + super(DraftModuleStore, self).delete_item(as_draft(location)) + if delete_all_versions: + super(DraftModuleStore, self).delete_item(as_published(location)) + + return def get_parent_locations(self, location, course_id): '''Find all locations that are the parents of this location. Needed diff --git a/common/lib/xmodule/xmodule/modulestore/mongo.py b/common/lib/xmodule/xmodule/modulestore/mongo.py index 28ea1f2659..c8256422f8 100644 --- a/common/lib/xmodule/xmodule/modulestore/mongo.py +++ b/common/lib/xmodule/xmodule/modulestore/mongo.py @@ -694,11 +694,12 @@ class MongoModuleStore(ModuleStoreBase): self.refresh_cached_metadata_inheritance_tree(loc) self.fire_updated_modulestore_signal(get_course_id_no_run(Location(location)), Location(location)) - def delete_item(self, location): + def delete_item(self, location, delete_all_versions=False): """ Delete an item from this modulestore location: Something that can be passed to Location + delete_all_versions: is here because the DraftMongoModuleStore needs it and we need to keep the interface the same. It is unused. """ # VS[compat] cdodge: This is a hack because static_tabs also have references from the course module, so # if we add one then we need to also add it to the policy information (i.e. metadata) diff --git a/common/lib/xmodule/xmodule/modulestore/store_utilities.py b/common/lib/xmodule/xmodule/modulestore/store_utilities.py index e90613d0da..6beffcb71d 100644 --- a/common/lib/xmodule/xmodule/modulestore/store_utilities.py +++ b/common/lib/xmodule/xmodule/modulestore/store_utilities.py @@ -13,10 +13,19 @@ def clone_course(modulestore, contentstore, source_location, dest_location, dele if not modulestore.has_item(dest_location): raise Exception("An empty course at {0} must have already been created. Aborting...".format(dest_location)) - # verify that the dest_location really is an empty course, which means only one + # verify that the dest_location really is an empty course, which means only one with an optional 'overview' dest_modules = modulestore.get_items([dest_location.tag, dest_location.org, dest_location.course, None, None, None]) - if len(dest_modules) != 1: + basically_empty = True + for module in dest_modules: + if module.location.category == 'course' or (module.location.category == 'about' + and module.location.name == 'overview'): + continue + + basically_empty = False + break + + if not basically_empty: raise Exception("Course at destination {0} is not an empty course. You can only clone into an empty course. Aborting...".format(dest_location)) # check to see if the source course is actually there diff --git a/common/lib/xmodule/xmodule/templates/about/overview.yaml b/common/lib/xmodule/xmodule/templates/about/overview.yaml new file mode 100644 index 0000000000..0031ebffaf --- /dev/null +++ b/common/lib/xmodule/xmodule/templates/about/overview.yaml @@ -0,0 +1,53 @@ +--- +metadata: + display_name: overview + +data: | +
    +

    About This Course

    +

    Include your long course description here. The long course description should contain 150-400 words.

    + +

    This is paragraph 2 of the long course description. Add more paragraphs as needed. Make sure to enclose them in paragraph tags.

    +
    + +
    +

    Prerequisites

    +

    Add information about course prerequisites here.

    +
    + +
    +

    Course Staff

    +
    +
    + +
    + +

    Staff Member #1

    +

    Biography of instructor/staff member #1

    +
    + +
    +
    + +
    + +

    Staff Member #2

    +

    Biography of instructor/staff member #2

    +
    +
    + +
    +
    +

    Frequently Asked Questions

    +
    +

    Do I need to buy a textbook?

    +

    No, a free online version of Chemistry: Principles, Patterns, and Applications, First Edition by Bruce Averill and Patricia Eldredge will be available, though you can purchase a printed version (published by FlatWorld Knowledge) if you’d like.

    +
    + +
    +

    Question #2

    +

    Your answer would be displayed here.

    +
    +
    +
    +children: [] diff --git a/common/lib/xmodule/xmodule/templates/problem/latex_problem.yaml b/common/lib/xmodule/xmodule/templates/problem/latex_problem.yaml index 303e439439..82d7e8c1ae 100644 --- a/common/lib/xmodule/xmodule/templates/problem/latex_problem.yaml +++ b/common/lib/xmodule/xmodule/templates/problem/latex_problem.yaml @@ -188,7 +188,7 @@ data: |

    Include image by using the edXxml macro:

    - +

    Example show/hide explanation

    diff --git a/common/static/images/firecode.jpg b/common/static/images/firecode.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a20206559b523058767940eb9b7c5773367b0686 GIT binary patch literal 67337 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ⅅ62g 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 gZ|@p0^HAS-&;to{T(O8@`> literal 0 HcmV?d00001 diff --git a/common/static/images/pl-course.png b/common/static/images/pl-course.png new file mode 100644 index 0000000000000000000000000000000000000000..1a3da9e6317c1921b814883c27f5611ddfe95434 GIT binary patch literal 40938 zcmV)0K+eC3P)*mX?-{jg6I+m6Vi}nVFfKoSdSfqMx6i zn3$N7l9H&XsF9J8rKP2di;JkjqokyytE;P^prEFvrmCu{tgNi5sj0KGv$wamt*x!Hva+wQ zuei9lwzjsty}h-ywam=SU~{;lsnjySux*yu84`z`41(jE#)v=jXq_ztYmu z-rnBk=H|)C$-=_I!NI|gkdNi%<@%FD~k&CSin z$H&gj&fwtS#l^+M#Kh|A>d(*5)z#J4*Vo_Q-{|P*k&=;)kB+afuj1n3la!N}n3s~1 zlH=p!p`xLtr>2#bm7}Di@bK`{)6?DE-J6`7+1c5eo0{$I?bOuNuCK0&i;A?hw3(Wj z+}zyh>FKAar<|Rf(9zJ^+S<3cx2mhE?(XiNpr4(dov^X6n3K1l$Df_k&yHA^Pr)isj8`@rKHx@*6Zu*jgF1DxwxL6o~^E}>g(#Irls}u z^}xZv>FVjq%gXWb@!sFwtE{WMy}Xu}maMI;y1TmP=;z_$;l#znmY0|E^76U5xsH#I z=;`R?=H=hu-^|U-@9*#I?Cih5zs=6g($muH?d-_O$i>FR^z`(?!@}Cz+S}aQva_<_ z;o#5E(BtIe$;!#Lx3=cz=C!u9jgF4+@$kpU$J5l)%goEYzP--R&e_`8?e6Wnyt~1| z!knF*k&=?y+uO0Sv6PjS(9zMqz`(}G#_#a&zQ4Ze>+8P1zuev2uCK4d#KX9`xt*S# zv$V9x$;r>q&ytgqtgWrYCH(G^=%mP)^=o82Wxd zIf(uJv)``~6?V>T+oqJ_Pno`iFQFt!q9{r@w`GvTxV--6k$Utrr7|J#dRnHiQNj<_ z4?@@w*0YnuX3PW;coFy-@n%Y&pag^qOxv{STv3ux(>6GXV0(%u$2tE9P9vePGLPh- z?Q|!@q4%NF)Ie3O(R7@b+Ob5#%8|48Ov$oZ)$29< zrYfYShj7iIYX-Xh*>=0CY3)M{u9y%aGsX->)t`5?dMeWdp@hV$bS&$0JY<*t-oL8@ zI~1pc8G%~UL8_8UCU6$ZLp~h!tqEWNR9lapy}?yMn<91_{+wira#46?9JoLvvnXmi z%_L1Df$S@AW+vy^`pHbuR0%%}`!)&Qm#0&JYi5vbnuM_uMK+O%kSP|TYM7;B!Kfct`WK@GG5wZ(aeVM(zycG8M|(7z@?Il8%Oz-@$j8e zssA?^to#m~rH=Y+RsYJNY$ara7Y790l8fSq@3Ua;6{Ey1J^EII+XAnfDHIal`BY)8 zWm#&NAoxJ9nv`+DJ-g^BK?<5fKqcH{l9Z;32?upUN&p#1*h3=DZZ3Ry^6l_s;g2R@ zhzLV#w^7J3jDR~O^4#J<*~TE?Za=Gw)6B4kA=Lo;6C_a5!y%t5oJ)`w-#E>&yWB?8 zm-S9Fb+M zaGF%MLn=wQ28as3mGsMIVuG?ygIue}5BF=CodHIg z-J8(03E?g!spb%O|Gjc^t3lVW!k&wPfvPYI8bx!?@KaV0)mLzl&W(IzCG>RuA*O706>mwi7Wh;NL&Gev%U^Xrzf?btXbfe#fY*s5-=p>4ByjQs4VLMmpj^63fI( zs0X_6K}CxcyiLUDsg_V5>6x&I4*tWxvy%>j_kR;=LmsSL{HyYDzrK_H64S{ z#1@kYz3K1^00d~M>nDD4(q@XC(-X3J|NkB;S}mq&OamV3PPHDSxat4nlQ5w;uF6vf zZ`wI`lTx6}gA|>jI0^GvbUw=1pA>BC)}yQAuqKEE868Rwqu-F3wS0YJ zxNzsj4HDw=2V8u}uD*KwwD_q+n2-VHWfPko3Sp+YpF2u$ci~kEDN+~cSML79Q@ZJb z70%8Kx#xmkd&}kWr%vCvd{m*+eLYJ+>7%QwCleKrns%-!K>2BtCavLeVKh`_rb)nE z(X@us?Rf(l0tO3X&%Mu_=)bG6#Xqpn$bOclJT9#I;={2|)JmffU zf;GtuyDh%hz!LVVN|BvJ3dk^wG?l38jVFG=C;1>WbMWb7ZEUD-u+jRxDVJ8sVG0VTs%?jQRs<*rl@z|y6vqcs{$kccC9Vb2vIc)j5Fx~(2@bL{O$ zpIfa+0d9~D`N>}HG~)8srsr?Ja+>9Pg44tizkcbfPrXG7DUV2IcF3OOdYagY?2ktN zL{)0BOOqsyRkik6&9MlN&`*<}pIAN8Ok;D-9l)Cr*;vxd)JVQyxWIi>T=rUy)~?3S zRy!I4M06JHgQz{7x+~=xXRtjdnqJj32UMqZZ|Sebo-U?oId%FKrS@9VT7UHH(ZkOt zz?}&|(HWej>RQ{V`Btmtdp_FOL%_=?k3Di5me*CdCPl7S(BOgn9{--~PN8sa`T)Mw zdZv_N|3B{Ex_iUaP2`>prMc)#3Af7QjmzT}b(16?m|(y+M<>=-hk;}B#3a-BdzXVZ zY0~jVt&yRq%#AR})2r<^aF-$q++}k8?CQEzRq|VfZbp`f9r5l^GmSKA$1X{@zqMHY zaiytg?RLkqG{*A4)fSqj#3EU#6=g~slTvLs@cfq5={QxYjFwOTt+E;NCn%g93v_UF zy^7Aj(X2o92@Oo(F6R+$!b`H&sHR50-|zPP8W%dy-sw+Y`QH02E@SKy$1HUkZ4J>M zG9&lF`6trEpw8>Hx_vcY;q;$9bvy`ljA4`Da|~dCc7sRzW{Vr=KVO*iHJW6Rm|fN4 z=-%r3tA?XtLPVG!SiRBhHDZ=e;v=pUS}kxyb;(UQt;Yso^=hNTDEwv;>C)=iS0!fT z+-2lWkh|emsU#(u>bjiwio<1Z)M+@5WpzK@touWs?8 zquZdZcejq7K6$&<^S$x7Jcj+~sf{BXk4{~=a!a#WIOCpNaNPhv8nV`}^c%X?>1cID z0wD7#Q!aj(F07s3NQoN17Auqz)v9V$c*qVJg8P2**@T-|Ez7c=7u>`Ct@X2Ilh!bb zw_C-fV)^ZgrUnL+Bn*#~xZZAbtd=)&bcFyfXkon2qO?V2%1?)e}`Q^#A{ zSQ=Yxpig;%U*$8Ui1}pq-(`o3cAef^=$89tk zn#~pNCN}3{QtXB#Py$sol}@E%zY``@R{j$WM$4vFt${l+j4ZjUStD=MS4lKhR1~FD z(wd)zA*FhV(b60|S_etvYNyg^Bf9sj4?92AxC_|X>+45WXh@6;AqecimI8?MtnajX z_)u6sZE89aOt`qsAuWTY>3m2arr^#LFc7nr4MENX0va8LN<{AvF2+S+;~`?t z&5(=V&8ql5_YUDqe5O1NDRRIvbp;=>nV~2_5UYf!TAk+^VB9k`B_q(aMyFyqO}K?A ziEs`?m-HaUDHaXQRBP+)cKeVPOPC8Z4CS?2wQ04!V>wlE%_6}R|FqMnV$vsCdF($N z|8l9M+PNW!W6e)<|2g9jkmV% z5E%Xx9?WA;qz=nvJ;r^;IuQXy$M5wW9RwHN>0k=maT=P_gi}tz?K>Lm0poi)%Isf& z+@pPu2c7}tg8KzZLcFLaa65`&9$*Y?IVFf+do2nW39WK%oYV+Z2wh{Cw?lAu2^W53`Rsk`h<) z2P&7a!dwUJ0nL=j;bFU@P(bjGdq$zu6h7+lZ&I=Ew9|A<9-69301tnuTqsOhP7|!X z@z-Lm?yWYo2^II!xROP=3tOjFbI19SYCnuFj@ z5^i!NOK3j7ad}N|H*gerq0(-Dw95b=%AMOm5GW{vVBW*zhr$Qf&U44pycpol?sqtpwDn54SR5{nfxFsP4JCj-f>QJ~SR6K{8Pa^_ zooj9d$XUk2p(rs0_t2%PUPEuK*Yvt>gbyoF!E0vF6i-W4a9A)*JGoFgw0C99*TW}A z@R+Ovxm@S&G~n4(^~;h6A)U6)!kea|Hq3fJ79ta`Ld zDlh>uY)O*QUGCRB^Acvho7)N_STTt3KsMH!c&;4!T%p(~V?X8oO~QpDMWq-v?KhIS zre(6U_C}xtZzwP7GBt?_TtHx)sY39o%)H{XTUmk_xhp+O(;*H$|3qEvLwX=^g- zb{bk0q-ol>@sW=?Re-k=2X6>BQzx>5maR7X{ff~7gx_s`PC>=0-qya1p`1S$4k?cW zcAFj~ROQ|>m3a&;THn;gpC>(o8BPB@1wP82j z(H(DjFc^DY3zyADP*rRVk5WDF8BcVEdw#_;+FYrTjIhlUcY^-kNVQj|E8i1Re(euhS8BAx}2s-g{tpDO#1${YD@0W1f9 zFn123j4{k8i9|5YY#+)Uo!e-6d05;mE_##R1fFe^k}3D9NVe={j@ZqdJUX)qQ1?;g zN}$x4No0vBD##ly7d;4o?ZnQxi>uFT6Jl!uqMQwek9@FFGlDNj{Kap`3@cL9f+VTs zU>t|)zQ6j^iK`*g+s|vDs<^0*ip(We2QT#@wnNaqZ#A{H)&?U2?hU=WH9TLo5^(~i zor`XNaQ1`80!mU*l|k+bV+jN56u9$}&AA)Jv7&i{)7Qqp-S>^dQ|$Y>x?PWP>9ZJIwb`;A=)s71Q>BvPMDJjaOJ zh*FktMAM%8{@uU4(^l*=zQr^pa&Rz1nf>)Tl?Jr*37`2uzzIA0S;uP7djRpyYcbtQtSu8=> z5i2|i%m)K+M`OB*?p^wZZm@Lx!I2YZTQ!D#jS?Yw-Ffz!=K{Dr8E;*^*mzM-vBD$O zG$o1XWVk#i_XY5QYxKkSPDs>~rvFa+6!nRMIS}qit z$P~yw$lboW{{HceFd+gemD4me7*QOj>7bB1D#xG9B>G{jvcT?p|J?6;$DjKC>V%UT z2SN5Q4SAF~<~jFF88vFQyw7_-UmENTKVqtk?n9P!VzZUIM~+--2gC;B#j^83g8H0H zBI;khw7Jlb>nVoLM1O&CSTn2NlIovNUD9S zTU8v-FYK(WEG?(V{a}N4-hcJ=_jOl`1b2ctTSi#b0!P?v&ben_<`UDj7%s5jzdeEK zN9EpANA9lKi7Eo8YQa;{Zz6cq^xKRZI-2%)xHTMZ|8S%*W>QgLG9UoF_1KXQHrg?v zNn%P+0X>jCE~LD$R(yNVCX7)#;*SUH2Rz~WV!2$v+P_zLvfz&&1@6Zh=4(|C7WxPu z-OmVLlkvdsv>Pl8<*ng()a_$d8&ZX>kv3W^dn3YaG8fuQ`qt{|k+(QiO%Ud)7;x7k zYJ2{IkkW)_kAsw^ z!w-%eIr4vgP9YI+mox1*cCdC3<@Ld2QdZ5Xf!Q3pX;I+Lo$>_Ak5~z7{dQ}7>&S`6 zj#X(;A7gRsJKZjl>BHaf%g7rJ2M!O(f>-GEMdro<@I9?nJX&_(_;c#w3tf8dxj%iZ z!Br+gG9FT5n1Xv0@pp8qZ^5fuVZm?s5TOq4#6WK!_<2i4?LYhVORrikK?9~HaF->? zW^D%pG35Rrbb(zofT@KEUQX8<{SWJp-7R2=5xIx@z*9op-LyYIgduy-+tHa1KUG}z z-}Yit4SCkN(R7TzefP-k-cnl%c_P7*KZ<-sw7X|L7f<7dD4^P$ObX?JLJ4vg?dHh6 z=>x$^1uPd_wYPqD^|5;~Rf1Np^+n67KxpZ75KpJlw^~0gFBCg&i447w1?7u|1M2i! z)&9cP4&%|Bd)~b29A97k{_k_9h(rbE#bi=XC{CTiu!=Ql+yP^n594~TolM>P0rt*m zarMgIJ4U(51$Qh8GeQ*6RG)E=9x!E3gzk3ALJLDtSK+KmmtJ#iz9LP6DPU(Z5hYe%A&9{X9IHL=py0Pu(0eSQX!=U?z{zR_)cy49@=pF4i!Da|!WUainQ zFLm7z1Ib(ne)l6Qs*Pxbt=N<*iQpblJ@)?+xG%KZ5>3G1MRbWTB)-e+#l4`Mvq_;Z zr;5!LOi2ea9NuUE^*Tt`AzEy$0{0b(Go=Z!N)rQk$OE8RHopsO{4}ph@Q^tgwrza7 z+H|^Fwbf-92j}MspBZ<)xVrwQKk0GhS;WpwI7fqJ+)JePIjmScE}2xqBcU9BL^5+g*)+#) zijVvd=+9#zY3PdG`o#=fK_RgR#SmR8{M>YQxcRe&jS{ZblrWzDHFZq&eUqMxC0bGRmVf zH1B7cbsSf(te?HR5;8eTxTx-OBKo$mg+OoX0als<*j7@4G_Oq0XzjK3Bzas~`Q*}- zO*b1TK!OT=ItIHrg#C;U69>${Rc~0GtB+nea-T(v=GYSmOKjnZ=Jg|+W@nGkMYA&p z*?~ehwHR<0W3MD#`oA7K@;Y@DQ_Od9XeN6#>m$WoP^QQUru>L2W9AEUYK9sI3f6A| z`0T&@D<}SBB~WFh1JMkaNXG$H`Y3ceENiv|C?+PeV5psZ9=u;YsC#`y5T)}*Du5$h z{pxdndRDO+a2I)4YDOHnhc45bj;_Wks75J~pWu&&Igf+5b2#nRBbP3HqHr3PfDCd+ zF0iR29||wzJt6x7$yq)*jpNDh9bY|bxwbh?!_z+?rg%zeHUv*4W>MMR5xY&@GbG}= z5dwF76y(_YXGe}aw&qd;4`?b+M*u$yg_vGvXmUAp(WP#-ELpUR8_ZRzIMc7TH3Zv) zK@xw^Ca)hqe(N?-h+@HfYT!+N3{m`dAd1iB7|Jtg`dg_1x2WKa$6qfm4i^@R)p~h2 z^qEQ{(Co~?2<*c8Q>*`7F_9wClglB+PLX@$a#e$IyQ#sEtIZlAb>_w)h##m>xEr!| z>5(gUu+dQ>rY=o0&NiV?=c9HsM?H5_D6wBszqG#knUgk`_*AK?D1>B9mdRf9`TL|$ zE_ONN94>Tx`$Aj_UNsQ}Z8VleD zzqoX*P4_)Ob%Hc2&KN* zb3&4qN(Z42Q4~Q|?q9m}z7|GIVbV0`im4v=kVx6s9EHakn%VcX%QJch$Q6)+6_i8E!12fvK(Th%gojg$c7Zj~%~q z@2J-Z;3Q`|aH-{u)v)SMym5JPvFum$m~}^3E*<$6tQTwCjndA4TU=OtcL38V?`=em zg#YRCa>wZnhQ*zQ;Xf_It-ysvXdL;sTVV9Xx*wNH7;L0^>)oSw&JQ}oO>k`Dt|?2* zfJ{DwFf2jtrMTbw`c82HX7D|jBYd&tPgrCjo=}MA!*{OSeUt4=|NhFoC}O&*FoGV9 zpd$AWHrUi^hOFqFR?qKCdvDr12yIZ@T5>{4_*CEQ;f-&#(4D@dxCf>0LxC*hSnxA- zuShu#oQ<9ytAT+NLL5mo&-Y0r`swo$K|*T&(#e&T%cnL6lhzlT)o-`k-JRlaI38nq z00zXA;+nia@mn}Ib)=}&>L;8Ujnmu3h2fwu!33?3+{^DSE-o=+T)7)kNv%Tk^E|}tdIa1P7u?k1()RY| zunY;Y-p-=$w@4z|H1M%>_tmnwob~XlEzesd+!XIQWikQDpybexst!#4-X3)uu}pb5 zM;`JVp36m@n#>;rDSgQwz>Npn>RAmuz)bT-1i98-xOQymL*IM%Q^QRugrhO*)7To% zOH3umz3EK~n#gry@GrI$MiZGV0RI7w0X&0OfQ(kNtt#KJquD{Cp6?^yiDQ_q-=)+{ ztEWycZGLL_?ijN(1@JWGa(Q`isJhrjg((s#&@8{axqbV_jcfnr>b0vUPhMTQ_D^mf zU7U1O8T*USv$%vlf#(p(3eImZmC`YRJ5S(VE*F=!ibY5CdH&R$jipJIMO+^)Lo-;t1f&%o9CBZ$ zuF3>=$3w4B1}6-Zp2VAeK>tv3K!VyOg|~gM?1|?DBw_@q>PMG=%FgiJvWI^t;{dv| z1GCj|wimv{Z@xzv?|9+3I?F4aSg}((Qs*L$!p6TsmhH;yDq@X5(6Eg2}i(lw$P+eX+)?od9u*8{PDYx>RKquF6X-&X%4CiS(!JDa2V8^!kzeGiU?BypoC=PqjyhgPufOid^)sqhe$i%b9Z{ARISWr7zX zFj>9XofO9Sl>KYWXQJT07%(5*mKx4?_L{*R) zpSgy-F;d0qBh1%ovB3xxZ7}b+Am}Ll62-hsTljccMth$FKb)C?sW&M=y$}ZAkN^mj z?H!$wU8fk;v<59bU@)^*kUa`b53{x{Z2RtwutwCD)R^GhLDssxAk`cT5^pW5qlSn9 znbZB62dWu&uK%wEA0ou@qNWr3s7{z9E5)PWX*R(N0QUjB2IJ+ezuH(riemfS9s3b# z@0)M=;V?;~2!m`~PSMeP7duR?J{TQ=GoQe411flfyfq!S$>j>of1c|Cg8C9CO0@=_ z?LBNifiUpUoL;`4L}FBUd8U3L5NQzIVa9ILpt`Opc#Lczf4IH4g5?OeTh~jWU0=;jEo^fDBx;_fc;&x z_(J*jFGJiy_wE#-&--;yG~*7}Ow%MH)HcQOh}4Er6_ae;I;|~^y-WqLB9HB*7VcNR zB)=6I3bR&IY<2V-IJX!K4jtzExbqr}erT6C@5YI>|8~siyh#?gLsVPi06z1_d-4+x zrWzt2Lgu44?*HqPOXI?@t6T9iF&Mi9(mQ>p-*2c&T-PhDFFt{mc>wbRxfi_F^Weg( zZIf-iXJ9F3ys-_QrZ~ho(emQL*SniHuB_i*L+(g=3R^&(L(hLs5TBWH3fzf_g*_q% z%|#5)0-v$8LH2pM#++@9e;-_iMTlr$mw%sM&gh zsZ}UMTUEnmIu-W*OO!EkZv6hxQ~k{yU8l+>_Tb5Ev~lz(dUym6zTNU}JoV-yOOt5I z-4=+mFVReNYVRPD^2Z6bSBcf-6sULL)p4{@Ij8<4n0uj>g#4Fk>iegnGT2w6^&2;C z{pz^ag8ch_@R22&UVL6lGv+!VIF)maH0rK-UmY| zw&Gf#$~kwZRo4`gyzxBr0eo4pBT*5vcSD|i+h_0AuOB)4JN4Squ%<`)7WN&ch6UUK z{N}W!i=xIeJZ8GHPF%3V%5Arw11kh>(co5=kI>!qq+oFMiI>g__4 z|9|CvVIB-8wxR^pQLp^ge+4~1hYomHY7;*fR1v*v8-(&bqTurzFHrYz$oC}u_p{Hr ztH`||Zsq8F3x=0KCRq?`X?3gf(;8FMM$7jW6}0yQxX)!zxp)5j(a&71vf@y!C5@sX z48C&m_Qub*k3tL&iKY|adURgeW6GNH;x|weD%OW|{UUL^2R!NDg%P?cN(B5HS-5=7V zf_o1Ve&fq)65Zc@CPRGng5_jYt{m{g!E;^_<}Os!Wkr=K6{QAJUWQPx>^ll!IuzNn zesocQK=u#yH$bWS!Ij$!7V9l33NP*`@ozC+8lJnpvU2jq?T!EV^!EAljyrs!Bam^tDT+>QI&i_5LF`Db5j?p?on zdF}R{jnmr=3(~^dH;-3EG14~Y`$XDjOl{76=HF9BRoj$FK9GdmE93mDJa|nTERVO( zZ9p^$VI&I=|8h5jGpa9fR1OL2hH0uc#}x~7C_E?(H2^EbGynDapRFCRcLjp_N~I9E z!p{gDXzbGqV!4}{EdNo@umfi2)<-;Od;O0fc?9p=T^e*W1Gwjv=H1+PfuH`PDsE%$ zp=CIWOyZ|KMP;&^TwPhYcJ0O;Nb~;PQ>Ra97CcJBtqn=I8N{9g{$oUKH>_RU>5O}1 z0QcP9lM?s5!PxUBpAU3@SXjRO$kibje4ozCst<>s{RhXXz2{F9OAUPlR$Bq?hYtWx zwH|nx^T)4jSfTsCtyQd+#v~##tU2Tdv7>U=8Ff9h_d@Y+FKEP831EL5DacRyeXa34 z_D5rDfJX4zBXmI+LLVS3f@a*4-r{hxZ!~%m;aiH%w?`Hx(P0&$ve!_y2;E+|SrF;w9RFl2*U(IELE)p;uTw z{m8K`uTaYzY$pCNi6~p)LemvXrX&SU7h})6aU*?$j)%Si`|71QG%38s$)Ta zBtK9gRW{3g3&q_jc6g4ZISn`O>1r&8;lDa|@z}ACFJ3%$ z@g9UVAA735P#(tltSReFqT|2($!GrJGuw%2>MZj!ySXPeHy+2rvse_CSfxK2L#AhW zP&QHxYMMSc9W@KyAL`ws;_>zOUw=Kuwdfx1B@Vtcux(cFI}hc4m?%vP)iO$gdxn1P zYqxHF^|GzEr(^bP5IrE8nTHBVZPD+IJWJxHT|(|C`=h0uMbGbcG`;q@T3t^mcby}^ z{qA*QKjY~M-LE_vL`vMQ6siPEM1Ou2xD%J2yLj>Aiyxo6c<$WIn>VkYD+X4%+@MqL zLbQ71&42mw%de0EsWW>|QlEz|PdKRyFDOpi4K=IZDl9K9LVmMps@A|C`91wB9Q4Z! z{`J?7?&pr)T>&vlm~J@-a~Gb5;s5pP_l?rjS0%i)x_)c@iq1z87jh4B@X-VQopV!% zVpyRbg>|VE0e2a>>qSUkc|N)tUDMiWHI9})SUqv%?k1(xo-yOTuP=&5_~vC|=rK@r z%m4f3ny!+Pa{uDTAAfxA-Z}ULox2lgeFsZePvqPw$awY5U;D$CSK~!VP3ODKgFKq> zYD|&42$@Rsi`|~@L1`RHwgo$F`vt$>Hu#*z!3Iw^U;XN&ridrPL$n;voR%xO*L@FW z)Sp@|FDhnSb(*!9hI4y=$b?nDxPI%(l_lOG!oSbDRHT$KY(Bus`qRMuq2Q^Q!9@53 zX5>$uU0+}SUO=0AJ^;U{5&`~!6wRD`Ub>8ofRQ9?mYDVpdrLdR0XATX8C={Q^?u{h zS>XP)s$KJS`w4o$yJH0<3cyRQnMPq_W#zB$eAI5!lJ^#x`Azr$H}mhn;9sbz)s>rD zI2oI5PB#AKx4!jjFK@S`7`V?%9uatRH_@3@LwlEr3EV^IlZVOUxI8QumWM4{dQVjY zGn{kh_;G;j%~w~CUwOS|8I%hN0Hs99{*7TuFbDNedq*XLri_U8Zmt~UYCFFHznf8^adyL#fWVmB-u3THWc}lHnQR)2OxCq#9u7IwA{>@4`(EirF>&GS-EKjuFjiqIXZzR0(1PAJIb(rS6J;FVVb|IU4dk@G@V$r-aIA+Gn9)H@HH% zAb+5^5bn!O06QlwwL}TZtZf{Hfpstt{frawKje1Ko;Z8rPwo>|sRYcZ>+}N0E zee^?9$>JG7oqo1ftw74xahkdFA3wG^e4^C!TmX z^u&!Ul4$K}wb}O;ezRXnGVZOl(?@qiC+R=%L?zH4ojS4#_I}N#jutpNjdm;lzbRoz z4YGFm224pW!}N6J`pxZnwH=zrgf7D1ieco@Xampx;fe$ergDPqKm_E$ccDw&F0#vZLI!J%TfNMw*tfJ>XD#w}>7DVu1;u&|;Ik*#l9ijDv{0AJA zDi^=?vtPUWmjhQ8rFv>pVBaWvW9UHmI`$rA0S$>t%tMVA7k7%q9f;wxuC@xd!@L!h zKSY$DA?I(Mc=gKhc9;kP=-rvFP^JQLH4y)Y=Fpy9gt^>Iq3$%W(>%fc`Dp?qDop?+u1lyH_pa|cdaIAV%K(!7PaBRDb@vAq)6>N`6aN6 z)N5cL;syw^2HJ-fC<+wLLxA+D-}%jIcNuJbBoU%kTyefRzjOJ`_nn!{hM3s~4(^~E zi?c#9Go8-+6C4xsCwM)M><5o+A+Ks_p;52d?Pe(>+#3$~Tt#sw3(s3DmW##WV1Ekk z>fuj*^3O+mdlwGEHL=)y^1=u+9jJBMR_vUE}z`+nEh; zM8IVX=r{C@?Td&rUlogjify|#XhLsv@-nQch%>}1{pHco z@ekEnu-JR@I_k*1?;ZJh^=CLO$IHobesFx@#>taEI61j-{rZLDPI&y(H*df5=Op1M(=i9c*0z6;jTc>X^)R}b*#yknh{&GnNc{L~Sdepq0ba zR6IZ0erEg9w(NT}aIbe7s>B*@&JQ(fP`pR8Ku{1f?zlJc;RgxEAN_L{o8;1`*%L# zQe0Da+|%{-Tff3;7>rvWw6b2}Idb@Hu>y{t(_(MG+jRw*2K{mVXp2f+)mm_prcW#t zFxllrQdALGilVY2rgnX6>)YGYfNw<}>BA_AK}ix2*+}BDX4`N4h_jS;C4q}F+yPmV zR4i4%-fRMTRkhOb`4+Wr7gByjXt`RuQIn$35{WoXQiNO6+E{|5C2XsU2uGv{Y{I96=U=aQPOoO^6RJqWQAsc5F=lQw4{t2h0cN$v4MNB zs#*i=Y~7Fb?foKwb&r>&C!7vPb!slH&x>_X3g=lJ)rIvsb^n60zv-rdVbsJOKvN>>`%#wMStC32rCDrlrM zXR;hKN!Va_xkQ}z=H7gMpbJIgn9?jhP$bP!^H2^Li5*7^bFtco%l^{y1|!el1!zt~ zBH~CYW;jm1nQ%ZuOdydEtJ|a*lbVk7Jzme7TI~DjX}y$t2VxDz&ifwn2%i z>^i5wiHj&Ma>P136o~@3!?pLP8?mB(`Cs&ddC zMg?FhNOYJ{H4m50J4`X45$t*UnuP@`r?bT%G$V8_i2KVdQiG7s3RiMa)pF8nkWMHS zpY>Z;;Oxx?!yRVgXBDT&bH*;wp z_iTlYO$(Ef{*Oy_=$=`E;Ot2&m0uO?m%%d|5RDF1~dm&-ZGVZgL62VhA!;MJ=d z&5(vRPD%9E5td+3yp8%TJ}@E3z2z6nFMv0SQ_7cx)@V81{NCoWU`i+%5VJ9)AGnKB z1c%Pm+R$dekQEUhZ5!a5G&90L?NIYKjoKzf?eR{bWkKo0symc}Tr`L7swDW#_L53w zz&}Y;tEx#pO}L|W2=dv-vvBt$0+DK6v+7bZ$NSg6(t)*LEK894y;AI+!(+n>Mv8Oj z&hedG=U)bp;btgMNk7aDHYn@s8|`4pOt|=PdZ-GFO6+_7C;H;80f>GMJi%9VIH*tvk^GSA|BY+1GB;)twE$IDfW?pYG`+Z%% zwN6$T)9JuB;~#hX`&0D88|HienWjUd$dcyX&f&PlU$WH=Aa)qI@>-_Lp6UfP+buB*$k&-p_?;pagu#>hx6-fP3ogOs(ze8bHR; z*bSprqo^S#QS$jD|Mc35N+A$U`IeSm%m8-$M-_k%;3a5?GDTW=#8tCDf0QI5CrbI zNLgn39<_>na{mn4DAr7MMVEvyDVD=@5wz#@T2yRP?j`jwVn;(Q=gtVVDZ-s!-$)3A zdoB_Tp|B_^Di!yN*}#WJZqb2vbP#>mUJYVLlZc8rLM2)4bRqupCVCsM0=|_(MJNHTI;Oa*Smmyp|B(_yQq3ATdsq!6cv6ODyTyoM|3GKsJ5uP(n?>MVVeT%K z{gaugqd85-xK-SBBY}+fA4vNNLlSaQ)o4%(k!ZwlAeB=9yvl|o+Zw6tNUHKyVbtI4 z7TmU>vD(en7(4AMaMyr4#;1uQCPB&ws8yPMK{%&ntOwK^2ot|86T{QT**%^FvLL%{ zXZjKQe9~;VA&7h`i*h0e++~$|6w5H+*A&L76G_~}mqv97Oe5XO%J^N z#XxV@L_v6td-ib=*C^p5ehGl8Mq^TOtyxVXT;XN1Mta&eL7{(5hR}so=TtVW;vSD0 zG_8mdbAukQp_ri|HW zW;;i?rynpx9%=ab>Qe?hk1kk<#8Nz_feRco`igOn^Yb&;P4f( ziZF}d3cj+wwyHCx`=a24-Eq%MhoRWQLmL%Oi4U#P7vwu`w3vz|Eq&(A``xjgFfAEL zp9^1Jj6UxF*U{eQ)N9q1j@?#)J73As z-81AyRSZGG9wUcO#gh&xT}n(rxH1XhOYE%CV9XR<3ugo|nuac|dWHtt67OKhqv{FR=48YF7C-if&YC0PQstQ!o7@pUd04Z8qgg4l>&I7qJ@7T=(aPDP)GZh*yYO? zE}ehrrLP}i`TedYi>6~B0#LQZF@@1zMMN>m>b1B!?)|)_SM?b4_n2=C)JGV0Q%MzEUYAS%16Tm_JazyKGU5ja9_pf|ABsGIl$fh zb@~EU5xSF(smNl*qOo6^jxF)TD(*l>V!rNsJmKyq_M3^x-sq+fr7-jG+77z;j$8lo z3owto7X`yzoJ_nc7hihn=|w?L{2ycI_v6NO-EqIQC<-)vYB4h;=NE@#4tL1qnlqdq zB!|1?ESHv|U#$}VSXgag194+DsHMVAZ0n^?RoUG(b`x7@07nqiBr=S?sFk1mnCH9* zeJEO>sG+~3-|v|rxuadfzM3ILtsp|5d*UCOv z)PLNLCzCy{vg)SoTXmeQKO{pmKxf+RH9JwWrZc`=_q7otI)4x%Zong|De32#>9AxC z70p1l(7U-W*sJ7EihV^7NsW&3;nowA!(w+K!xioa@K*m5xL3h9(!79P9qof>_ncN) zUul!F(;V|~d{Ln1n?mO7_MuGG=FeAnMfx{A7fGI%z%L#+{#5B2tr|m&nsTVqlBU0tYl#t!Oin{&P6x|* z;S0n4$?k4Se5a00v6+)4u)(9`u8MEG!J&0S2i&vy|NQL_{#CeF6-~ba9I8(|qUX=% zBemfRf{ix4GZ}|NLoK;e?SHML`y1}cg%@7^_SGL>J@XgeyR^S+)~!8L19b!!0G?fI z-@!WoUsGiL(%t2rF6GZxRTGQy*{jmTy!lcYrM$C(z5?zn`7SxC?3G3snvD%2pu0}s zn)l=BQn+LAbv{VQwPM44vvaGfPwEd9X@`NK>DH0>C6+I}{DT$u4Y014SEzG4!_@DC z%%++t1+ZLP)miF}B2E1E0#@=0PN#m7yL#@W@1FUGtIz%QPhLI$>w($mlDpP;gC;_~ z^X|L4=mcG(eFHj?v)J#Fy9g?$1LHX9lgvx*7$9747#(nL$w_!thC?d`1EOw)v?yWT zxEAF7(R}`RE(7QXl|Ck5^p#tN>(@(ZT65nL?(AQU2kQTf~nix&M%CPUjuYp zzHW)v&m5WPEH?)A8C)`n=}_JuKVETv+z{>+!fZ&%M@}9WosDs#PB&srf401+_r%Iy zac|l%FEG3C++dPp+EB1)cE0n}iG7|wx>;B>xN;eNnD6tweCR9whI^T)Mw9gIWSiW< zb_2CKO1)mePVO(B`O~YffBU6p&+hdHeM`~5@7A$)i^ZV$Qp1_yIg=BdeE>B&#=vP+yFkWd!}nzuz0zthjbWCiu;PYLg$V2u1l=#?g-u> zny%h*!(BLXXc;USp?-6tYrOUpo5vD6xtEG#3hs_O#LBwnUNP;i^Io;%ep24I7QcM` z%*(G_yu1g;O=c+ivu>k)P1&{~@V4V5agwlCX~?Fa_gph<@9kKauWI%1FRA9Q3G@=R z2>zEse$8Et>TyEuhw`kbs_g>7v=|^UN$I0;EN3omHL996>cQNhw5+^*;b4D% zKFGax2JY!}HUap6-rppQU0N72B9$yk?%Qw_lDg>ziKa(xmKM%u;a(kToO}7rd~Hrr z!9y5Es-kYHWv|jQodLiH?zKYT$@5S>tWDi1|-1V&ucij!);v@HQ@TT20QxW(yt8g!iaM_FjtO8vScE+kb$5xw9=9}V95o6Ds zKtIl1Jv{VrF=rYd3-lG_s?Q5F>@(ke_FzHhhSzs&zw`X)4Fyj%xp$qS8IH?wj}u@e zgZ=YEwsckAsB)J#oDp2HR|WZ|d@H#-nw4siR+HQywBV{I6EH`xdYVZUxHbbg?Z}-i zFaG%#P%*!A@&j<+?Thw=u!hrGY8zAbPAkf zJdQWa5Zp&2D)akB*B9`-_31cpL;NvIpu_x$oS77Q-Pn=Gz_&(g>=}guv)fg$s+OZv zGrZv?t_|?Y%8^Z z`x73HhKARh+Z|K-j7(2*CsEDG#VsS)8St_+Fk2n?zP|B{nR~y@XW%~7pXNc>6<7iX z^-|XhWL&5Cs}v~Kk0flLgGv9jhVo9s-sZv@GVl^O9OJQQ8&oj3a77Vwrpmp!g1!OX zT2m)?o-T7Hy57^(mJ9BTYpW(xydHo$m@{gzdkaZSp@AH{T^O}(*7Uf5NaWtmuaR)I zK%{&L(;f*yj7MgU7(?!d$T4s~3&yd@C(;!?L!sAuEAHL)6lR%;i&0Be(IdA6tc*hpm3Qd~e{w)o1@n(S!p^L{ zoat(B|3$^FYqrLHllh?|<2GcH?1Qm2+1vM8;7*|Ii|~Z3^QAIYKOy&8;=T7PRF>Ar zeY@m7edq(~ORP}i#vQF2&jS2sPUv?Gm^Aef7i@tJ_2(H4 z)o+!5XVXxa?np1o_|GES;skdB7da>RN_B_wR;g&(A7SbcS>sXeD@*uZK-~tL(B(D- zH=$GV$5y)c$OS@GsAHU_X~_Thb`}@8Z{drK8p8HbQeSbWf)V4LaX!jBQcApS%NZ=a zzX?-h@14g1*!?A^1C#RTTLT*Qa%vlrmZnFO>5=25Zo;M(fF8r_g1~baQGK-rG07PzPC8FrjCDeI14pW!e+fRyG=`6gqSIsvy1W?~8V-eHA%pJ)pa!F&UUHWn&=W>iZ{{q#u?vZx+lJd8c%JE8*xUKm2ZOy2koda*@cDAlUO@fK zJzQ+`hI@MCKJ=V~%aBwO9w%WaHhdK6;;5mXVd<3g2sWl{LYghD6C%!aI(NG7IwqL2 zOLgicy3+eqDejem2tAY8WU`ekxt}aR=);JA0{e09J!^n03>5pdlv-yWJ8W<#b`8+k zDVv?)gCL-t4DRjvF*m`JdZt<7&KHiN1v(AM7`@c%ZIiCel6#ubnxTS+yyKeRx)pWe zbT6No$pvIs{Sm$J^Chjv!GbrGOg?WDIkfa=kh$!k!<+s zqkFU^e~Kv?>Ar%Q%^c?h_p+Z~&o(Sc#7@0&SMe$CwG(w-oA|;qVJGSd_X^_EOX86_ z#=664%202fA;SWvf61NL>l&l|oK$8D!el^wC%DDNDhZZ=8x`$Yv->^8iGK=Yjb?8B<^!mUx}Q(n4k=)M0RMWYV3%VOiiFb<1;Nx)jO}k|Loi ziXiatXgbx%>3`0{PFO;(w0UQ<)dWq)hK2dj-R_WNTd*jEQh> z^bV5;fQ}*SDjZTsx4=ksBXp-}qT`e{HmE#wg*j$ZPS8#uVF}&W8h6wq>9j^*@e76XaJx;xTT*!M*bv;>FVN4!5A42FKKA5r4iN(_1rls+i4Rm@N z%-JzS4p?}?J;lZHhBULFic?8TwJh=7jllhWh!EURE4k0`STU3Z36{}qHCc$f%DtK; zQqwxX4&}~#kW;vCOPggnX-!LKHS$*PRPfc$Cz6g-BPzZHr{2tGwruIUJ}Gv}6GzgV z@sf@)Ice(ZW#3o015UAK)_W&nzXR$b2R;PH?^;Tdvjh$e8u+xqy*MtAg8!@yxh7vP z&Z7~iTal*rHr$U*fPdV!kx}+TLtlJD)3AngFCwnsAT^e?6Moju zz+@&-poid+<#T7-?Bl-;mEd0UCDvB7hY`r@D7SdUFbe3bsx{1*qd^Vf1bCNqbsJTs zo&L?z5mF|rAfDMrZfdH3yuBR^r?=XSJm9-$6Z~}IfV(rrJl%HP;@H>Q+*{BfLPt7h zJOXzLJVu1)rDJG?PI!0};HTssQ#FY7hrd(dzOG&l>=-TOX~p6gS~yVlB=;?wQL;F` z7qc?I*0kaqv??PFP}IYj?_FeX#ep*$8Y%u0$rjnY*b+JSiwz-GT7(+8wx%A zNa{@cMJe9jr}p65O7=V>F&j??JLY(RPr}_xJv!TGvuOfX75%!>K$q6ZiZ0g6BE%vJtp)VrduRT@opNVTgbBD-kD;u*c3-SO_WGv0+dhtzw)q+4 zQyCds<@R?CM64N)i^5NG9^T`8OrTsC=>TxNFzQDBk@VH z(@c}~Fl?SVprqf`3azTLZA$0eN`DWby@e!8*-!!&U^2Kl!aB`7^yA#O?oh!Y*~;ZC zzZKKR4D4b|8DL!vvYv!a`-gMey0riKg%5TPFs@uVSfHUCtQj2(*+cP&f=EAulEnv6 z3o}{{iZr>9xjVU*aF$sbsMSzf7#3n?pL+eg{rE9^`0lz;u3Ft!@$_&aut`3{n#xvjJR;1PjAgnQ0k{WFGK%963jRK%-GFd+ z8U4WNN0->C+qEVi12!FEKZU1+BXO>a5~y~k%R?TKyzo~fN?a=vcs6Rry@!~PZ02E} zQg?-SO-_>QYPEv!bqu`r%ExK&qv*y=U5e^Iv$HxTnyzNz9~@|*w9*0uGvai(Yfg8~a|v7Q-{GedGX z5=R_T3OPItDT)+zSc$UeLQyRzQIb`68(B!8W~0QCZLGXT;{zNdMx6u;w*hPgy9x}W zNW3-{MGEA?H$?yksj&r$y(kLgszBOofxYeXyx%Z#kbXLlvLzm#dB694-s6`J+KuZ} zAp9dNMtY^Myb0X3e6sb`cuyprb*b0+OSq3cWjgcpPiGtcbPf(3bry+hs-D!Z% zw%y?TS#EV2QI`Tw+{?89@@Lm%}&lmc? zifhc^@-EiaB*P!It#0 zE2_NdvK%-2HpU3_xBD-Y#Z=dr&m~2|7d;MKAt)M6s z)B*cDGjq!;r|zz;ubo;)dS~F{U7P7{X_^hx{2ZSq?zv$K+Tv-QMfd8$&E1`wy9-OD zP8VgLlg3OI`L2<@6P&05DWT0C}c+|hF0Bh>eR3mYD zG)QLCEtAjLZBOz*X9frzg*%6#)g99J^EJ@)8gO?=XaG<^AcC4GnnU7lA%epJ*PloP z4&bG252arj3t`+CWYc`T5Pv42t5e~g2V*4UVQ`*+AKk>&5mUc;}zxe zWr{o%4j6QJ$T|TR*X6v6MYX+`vO_sBPr6V8r*%I%ID&NYFm7OF=sasN6K2dfm%x#@ z#9cATl!Wn>SAeH84=v`t%oa^i}GJ{(j33MzCQSTi}N~`(3SIWZoN$01IQ!j$LJJe^W@bH zDJ7x%TCtq#lkMi)3kyL0%iYD%lAYF*Hd-BMbb`)2jN&8cnd<^MQwZ-<$LA!_OMymM zcWUa9Tpl_`!f3D!NQ9x zbEu(}BC$(V0lsA&+Af$r5{c0ANRqhd#|)%3)zD)omjZksIA~xT(#bTR1gKM50N@=- z`vA{R=u%H$>=JQbtV78ermj<>-KNx|fznU*ppA{tg{n_ktS0?WPa7Kn_JPX4=Iy1y z3Sgf@iNrD}%-}A@=yxh ze`j}Lu{0BambF0{aWD^Xf6T5<$g#@KD(C?_GpO?=)d71xKV&`)SSyVaC z&rB^ZlhfLj-ekKA{SFAAN9?*NTO^k#;pFbXmbl|Tuxytpngje}XiHT=75$ZPlNdH6 zI%+#)bpRr5uBliE($7B(g6y}r8*(xoLlD<^1qiD{3)P~9dSP>$^1d;J!p=(QCUp;v zTkW78hQR^cx9%soZqvjj{%U>}8@WZsRj-&u>?p2$-rpKvfxdvqJm7c}{AJm_K(q!H#I!E@&p_7Oyri!-O+hhLq{a9HH`#y zsnqb)%H;!*@LDJl!JtOPT6fqrg1f2ejfmHQCgLlk`EzR$nt{DF)wn&Lq7*A=7kOGA z%FH#WcIC2aausFwxHUYRh&ynnQ`for@%CripY?xSD>v>NhGjleY}WbgTuo$BU_#t8 zrp+F?d2H!vO4DWTYXQEXCkJd=y?YnJ4ayGH@({4&jDn@DrPEu34$OKL6M1B|*F*;x zA@M-eKAIFiDrMLplwS$%J2w}8;)Ll8tVrDFRQ8eJQ~c%hYduD4i97XUQ*xD}+DlXH z%9p_sz!+Ku_~Yt62C3rEB@PkmG;}+OE^DuXV@Vw6BMHhmBC&Nu*eUNdY8<;(cF)(z zqUp1?ToG&=tUcj_#Nr%eS`7R%o@e4kw`MwR{?6d4rj<<5ku6udsM zbQgy7E+n3#d|+dt?+2#<`qt@xSzC#ZByBX0q9kqxfxDgguXXw$*4V0Mc&ku*Y{oLZJVp-x;L2Cs;7y!oJ z24Kf}y6kpy>Aa3j{<=yx;v3`wHpgihPOo=ANJGH2s_QbTq1 zf+ik35cI)s)=qD&eU3>E`H@WH0mm-^jm|u6Yl-t8~25tLw!-95N19&^cb^v=vTcwE2CIsB#LH+cC*n= z!9A}{(tE&i$}I{M5eDuE$+XV5+oU*ZqdSy;2?xOC2}AK7A@EgbohIw}hBmf%>`_;&XAKv}?pZ352H@?r%~hbjx_aE|=E~SA9J-5qx+AX+FNnfr zn>nh}nbMn0E2C>xdurwzoWEQH?7$rp(&z5oTgEwhfPF^hk3s%Vo!-L7$*m>rDSaOE zWjHj8`Fn~f65k+(ExP=Zeobm+f3dIw+;5&SX^z3=%}p>7E)!XkGNsf}wMSrx)oCnaQZRVsyV7suFzee*?vzP>8LHn3ieo^&#t>1PRtu1q@6c#~!gEp$V+W+qG7_u_jp9J!N$Mc*_>i`n zYVBGRzZP*EY|ePbNE6yvlUJ+kqLtGs3~|TwNu(lV@pxJ}#874mdo!D>SRZdMCNi}^ zFX)o`3Cnl5rKyN)@-3qd*{5B`_PRy$P=zxL1@n9~Gv1zgM=4oS_~Xa#!Dm{MF?lBk z7#wyAJK-_N9gL{*Cb^j5;cDTrdHVwO3_>)|nMu@jWQ{+KL<3LETofR1ZLUE1+}wo{ z93x%qa1rxS9zH(|0<%h0d?TX(!xV%dAVEdLJhh)&h`-YX6HdyQKpUXDHhwy*DrQ}( zf1BKcQG(PSP^M177uEe9wG89&o(VyZ&fLt#1bu1~Gb8F^}yNNk=75zT^WOifX7W6^5P9AAd` zuX8-r1i~~N!-hSNDB*1)ER6Pco1}pJEuE-@h)X>OJwti__X=>=U(Lsp*{GxkWP@2X zl05PPtWQR%bpy`4oPKV4W(LT|@qXI! zN|-vLItT7SS-K+XGMGvr$A1uahR&(nD~AMLXpKeX!uk||SunEf?TG0a6PLn!0|m}1 zBPcUd3x-H}B=yqt&i=a5ZEE+AH-DBI(WcqUJ^%3>iJjW|50>w-gXk{0S_U|{w#1lNOQ~pSIbib_-W%f)X% z((FJqgpo88oYAfsT+A;&HKqkp)d(djH3Ybo&^tm_64iCjItL-P6+oykd`m9KD^6l^ z18Sb4PB5j4S&rU_`Du-bIT;Byay09MPs%d%B5xVIl%ZEYhMJ**pU8}8tjreJ<3*Mk z6BIJ3TFY|UP&y{^I%zLem#M342U3S;5_peXyerfWrf#0mG0&T4MN;yor#fgRSX?y1AYmO3Hn)752d+~?Ih~FjKL^$ z%>L@?XTK;z6J>|u9#2THn0Xg`M<*0Sr&6&~X;uyuD=gQfFOm87kX{d*n3IX%y>rkF zC+-4_d*GAEfjl??@<>1=E+mCOwjD}b6!wBgvSax#E$mXy>})Xc%Oqc1CUWZxj0Qo< zlynUivA>amd39lHyQ7!kr2dAUsp$8f)WMMbQf4Udp^b02kpW87y|Rsv9A~1xU`ime z(YyxFJ=biCu5Z>PFo+Ffhd=<&Ua8;(tDKPl&t!&|mX_QIcj6yoRSlL#h8N|WDD(Oe z=pyVA7yilivHfF^_$A}gC6=H@37%xYIK705od$?9<8L(fZotvcMbvlTJsoB_$pz~# z3WkuAF4Jl<3hwvfxBLMy15Od1={#awyy0*Q+k41iap5j=SwxN5=QwcbcN>#V-Pxaob{9NoFi48nLR-^5Nm3B_}@8s|SttshySRw3!yIB;0AL1?=JeffF zx`1kkLPW>LlwT#b^`DBewS9km`|3W~%*j;JDgW~k?gj)?z29pNtRQ&lH5hvdQ%k1? z#K70$Xgt*f_CmrHQZ0=fDhEDxbDT{5Db6$OeZ=tV!GTo1g;*(h8yD~;{ z%wzE#liE_F90P9u_G_u~dZKn$-SBuoqMsBx!u9y|L@f4@(n;PdB;f8Tv%0ns>)aL{#30-cpN^6ZSWi++9=8E%t_{Def=)ybi+%-m>IBl zgtC1Te@$I1ev5XrSS%uPMnxYlGPl=+jU6f{m$ZvJ_kVe2>>YB_T^Z9;9M)W-^P$dk$<<9E<{;^}nR$sQk@BzCT3JB5{^tH_e|58; z;xPe~j3WC|xgwLK$bc$l3B)Qhb5@2|0j)NNW<5FgbzM%N?~p*1>nY3Rqi_l6>H+0# z=mjD#-}7MfW0}-7c(Kq+a^S#$8`O9ggf3KdUc{aJQ9gxsK;V6o(kOfcxIb}P+IOHA z;H3yrVO4#36|nEG?$2psGA%fQJ^$+z9ljhv2kpKNSCv;9oAleh0ELKnzr0JL6hUdq z(R`5#Ngdi{>0#;8nE^~8q+Rysdqk4I$X&wwCpTW%*oVXVI}CaQ?i!F1H-oaydSa6j z??uxz!8qg$De8ehSTqbSmg`mztI^s@wmy&$q{{K~`4@XIziBJblJ-|-f zU*Q0~d?fB%g|H!w^(s>g;A}ocnsV|1;66t{qLq;QfQPUQ(HBfF`jk!^`Aq6zZsBH~ z=k~otr_PgK^sy}QM5@)r&A0#d!#;>)14N7y2Z+--psrXL;o`&k)kx0-aO!A;n5^vf zN*JgOQ-ayt%d8!lo$kpPR3`e9YEk0V-i%zwq?8(;Ig=4ljCdszPc_B1_8{-S0>E&R z>7zoA%84`-Kr0kJ{KpG47#RPqa35B>4d=LIk5K=xBtEeSI+eA+jxSzRu|Z(ZY@2+au&^1U!ZUda@5Py=HMSyF%}lRkMky^6Qvjd64i z>x}9FO>3G0FZx~8@Sl+f6A>RyE+Xi1!DYu<-3{1OAphbN3J+kD1$SAxBc&-wRw6Bj zxe49&9iC~HD*W%RSE1{V;0^3byd!&I$K)Ep6v;r!Lo=u z1PT2Vq=j3%H~ZTR(EJ`=wxOm~M(d*QMYv;PvJ_D{L$_3pEP(@6l7uQgVPEBNk;jnu zmdo8`2$A6qO+NYR(Yr8Q9RKbJ`K9xWuJBmiI@nkI$_vai$&-CmQxa(SORA3iv3CVdAZ$T7IB;ZlN z0YAxu3fkbA)GokN0759qmArpcZ_NS6jM2C?I(`!1GOJh&E!y;7mv(RNe8B+xM0|{T zW=Kt83Gj%%P$U#>VeAXghKw_$OraxLV!VJVadsX#Ty>($)HLG3F6a{#@KCekOZC!H zUdZT;Qpz`6gCrZ2Z)|8g}e~F3#Q->#!zSDActb(dWbwGWA}5i-eegY z)^JFw>Mm+WNqM*ZgZ;0+-rwK9`Y^4?`w{H=Ig0!2V>x1K29h(*0Zf7AiQ|W*45-H& zE@HwZdI0ur52~Pf4WLVzBIO;0=U8~0|7KkPFl#bl!&n71DVEzL?tQF z5&wY_elFSrhAjChLtcrfnJX{SGU-$E*28=DMYw{7;4Y(qf;#h#F*+&uz)~Z{dh9lN zmoZuMS4NOQ9gUQWIlumxo9KPG7Tx^9qSjzKjQoq~?pgo580 zjEyPWJrQz6^7+QGhj>M$XxWiu5tPmC@xkI>ubo<1`q7V0t*s5>~- z**zi$q%4r;kLRB6d}mD;m|-_7r*svvpx2tOKVZV~mQ|9!s4njQ6t}}i+hhHV9)NhS z0e*xh>JeOGxWmXCHIKMnipCNopn)QU(?=CSrvg5;Lim8Dgp3BGDV1O$-RIuJ; zH3fv}eJz~!gGOHkl!tI^vPNVI>z7K%AlrYnmc#9$TX$hZ3ySfe=Cfv;$ z3PwEay}>%CwY3e*(D%G{r;R(SepsDDW-Q%v1uSh&U;{auPfZrZ%H=Uj0ZG zu@7%Jz*x)(m3$iic0?Idn7#=)TwZt8ipEmZNU;W9Z=b{|Bmj6Q8k#Bp1llAYKAGKWMBpD!M+KK+Eazdpd zD9XPLi*Zy%UfNZV7r^zgoL99y`o>^k=)TjklRM3x!O(FK<|chCr&K$HS^{C&fKK=} zu}k|8qyR~>IR&@xfvLEmta~qp_9wB~Z!D>R(ha#U9oh%X{meU;U-q=Pq9HoKl*BNk(xc zcnkUCz{syl<9bL&7D_)szz7^)74!vdSgl7K?w2(OY!BxyKmOqjXyD9OA0!e<7Q@}={OU&em2I=5|tWKkHCxRlQEo%*iT{9f^x_!EeNPBEilPBuo!(vY^=nG%L* zqw##mKLxYUwJ2$bG#l8qOdjRfiG-C(Tl^L(!PQ*xwwJdqy}G)-boQm|I4h8=-*Y*# zi#LCQ*Woy^<9MNJzdkmFV;V7ifTxGnOHt_cOTz|2SI-Eag466ihuan^GUKDTo7$2C zw{X8j*G9~{fHy_oWlB24GiRoU>pvL?;qO^@a1z&V{|*{ryKvSGi+z{_5H1_pe}4Xw|`G4dYGZSQVAm+7(mx)p|9(%Um)>!vvx0HLX{rYp5hZn?!XT2d^?pV&z`9PcUxKY5=Ekn;I75a zhWylalJ9~q)RY^d_D;gYW6C1u@Ue)6LG<*2V+sQWolu3Z3>Z-&iZ2F$7hlqm|CA#) z3YcFjahhoItu$vAKkyHcd)Bm*g9GF~4Szw}m@Jc!OJbH-<$h1qG?Yr&NTKXd^6rJp zmv3X?`|f9M@9*DU-Mzo~pVe)g(`8%w-`T1}@N!iqc}3k2tNy)LUU`Lq4HeARq2^=| za25Fek;ni-E|Pied34FPQ1q)6NQVGfRP1(n(S3aN;dcko%hF*m<3fAjY3 z{aviXy?=gdZetq-B(d2aB05Iyk(356wq}IjNnWeGyfSXU@Cm#`UMb>ZYC8%`!6Ft) zO(fPe$XY0hOleC;;MRwtq%H#cPV>#KMFFl~spPs~3$%e(xb-tH@Q3}uS&Mfbzh_j%% z)2q2g=A!L@PVSm`nlFjqFu0$TfoA=?z)qogf6RifoOL`DZYDz-pDb)#R0pZH`r40t zLOm_xDu%1F?5*``7!MCk0F?oRAA8`zUkw3oL~)1tnHn1$_;a5Tm%MEOuNHpYNgxRl#!NFMkyGSJjTZ-|XJ`0yC;@Fi&!&aG zF*I~ys0=1B7%^1!f_n$1hPGzqLsTBw{262(l>Nj+)S>5=sQ0J16IIWTl&1n67_}I< zS1PfN*V>$0{jcX5G1Fp3b9^A^hNUo7~gmSIYm)7i-(7Y3b~jCEd-bc50vgU z8=VXPczJbxe#>)bd7X>~d{aB_P;MZI(Kn>aijW}3t?HzVcVa(OG3guGC}Y}&oUg4pAu`M3)6exzd}R9 zG}(x7?+>xn(`FadHQE|mF8|bJwe4>bDe7>RaT<1ZD()mq@IoFFU!d&|#Ii$cArTEe zJqSH}R>sgofF>n)k-!d5(xnc;cPk{=ZffyVyvqof*@J$p@91h2Bct6M?bT3Kn>Ds2 z#M;%lR~L70E?vL+vgf*vl>m2Nsr;JK_rE9>q3`5w1jNQjpolKa5m?iAA#~}Ha?rw2 zL~)MW+FV^&xOj6ON`D0k-#p@MeO$0VXY%LP_1+phOFyJ!N~i76i=Yo#WJi$RHeP>S zz#GDS6uc}O534*qrhS*nPW8t-?ReC{(u9c3dtJiHle;_z$1b}~zoA=qF2!W>Y=ChxvA)JsWG%xyO2 z=Jr-UwR&^@#?qB9S6#(!%wd`=4G|m_J{weN#3Fx&RM4THh%GUaY(>J(E1Zm^L^}2g2a`ko08)VL-SK zfnPxefbs_u(2Go1!sqzMi9VNXqGtY7lwH_ZJ zu;{hD4yYfr>Rcl15PPA3HB`skMcuCn_MYSp0bOG!ckNq(lLJ`wjm5po_pjW%es+F+ z_tMYWbtjVw`WTmp3wM9BTnJAo?oBonfOC&K6JQLIN`s^c?!`tdUthbly8F`gpYC71 zvGCI8KUj(7zkuu{BfvDsBth;e#eIfC@S)?Zkc4eCc(zrk#UsOVtPWbBt`B$kW>9!# z=%Md-EuPujuM*CKCA!>ZPlczmnZ$c)T^fYkA877it+|6d?fbyf*pEw_CJr9A-WBdU z>RfeeO{SeVpEXp-@vccrL%Bx&Cp2Dj*XW5IQki94yz6dUzP!4$e}gTP^OvieKZ2o| z2>OP@G4u+P`}bn`47kJGjvLTh)j-3jCws>r0FH1`4gHaIJA^Pnr&)=$H@9}@AKhGE z-@ow>H&!=Jx%?G>0p2?mUef8R%1~Q)9IsmECpCJB+YA!?@EPNerkIO4BgbkOY9tpk z)ip{n@kZ_?aS(&!$UsyqaL?HJQ-kB72N|@4K2TRxaXsm`7qn^bse2+ce1bcK@Y4u2 zGK`K5?>pF4{ut*f`#>u&AQLlY4mW&TK`)WJNYBF&V-EKB4)vW0Z_sr5+0V6C&(1&k z^o_rNELe|V@wwqPLPJBN{Vz^8+|p!n#PCDk zn=L+R_|{qkc@tM6X?ky^q3^jG?oavJbK86SS0Ak-T|AF1Mla1@TyMb86nP3hP~1}x zA>U)KxU(8eoE!1x2e4lsnU%MvFdK%KIA-SZ5S}Sz2>UdPz|R039h(XCVFcr|f-`|R zSAD^h;ttUGBS=rlpf2ZnoT<~-nv){yRMK+P-U(1RYNim-W--C{K zwfRxQKa}4>6Dg7li`9DLmt(S=uH!>cyq~`?F5Pom*XQS1(;^C69JGk?10L^DWvJRy4;&>m>JmideXVPw|{=Qy3)+ub@0tA@u;$HCXt)+N|VD6 zHFvDsq@}3<@1b^Tpfs)JwH>ck(J?YJg;}g_8J3b4?&$b%-|Ws*AN4(3^^kMr^hpEU zb%I)u^OY3?u9B6`x1jI2n4=omVvP&CtDiYKESpXqSu*~@Vh*@N=d`|eVfVPtXs=Sc zl~M>ZFq*_a9u@9k`mL0QPlIfRQKnjw1hIt^Pl(uZG@} zdJKHWOx!^8eUimX86<)jY%G!XtM9f%pH#Uw*Y1x^6 zvF{NF`Df5Bqv#b$=7*y6vvRAbh+k>uLIcqE$-LYUz@5vng9-5@@!m5tX$rC933Xc~ zAJqNh;QRayK=-`rT6MYJ*O#oXUSBwOc73ZAD;Hs%N+8`+a=Ry51#hu4$rDA3y ztc&3_A_nSUeslzj54}2MG|vz2VMh!NxI@mMVd_D~>PCKh;DO!F*BbR&a>y?s_h&sx zgT74lCu_@_Ys>k+exZN7`0`bxEZ6s5_Ao--WLW>2sX62I1a)%HiO8iD%xURW1i|F2 zspDz%lgiJ7DVV?#0CPFe$LW*h4^R!{Um(JKl zYDdY8CU~lHkV_uWD>U$;P9p|xtWgt=B)L;CsW+qLY38);MVu3rN_N=zn7YgBw1;|_ z?f0uRG|L+!svWQ|JiGX}H|Cdi7hm33g9ViauAUQrjR^53)ngcDA>-F{!L2q}2h-9wyQEj&OJE<8%v9 zhtT0BUwd>sYR=ZH=jZ2Fw;E;h9kz>MmU5~qK(4`S{@Ua)KtCQdef{6>^NmedHbdC_ zGcy=R=wY@=^kj~oUFYa0{oo$D#aM*qj&Uax1ZekGCE>)zHxi?%I6pN&cFPlO|OB*3b{`(4ajkk5?)@-l6ax@q>eR z+l{GY3b~MD`*!G5YGKWtf~BC2>%F@4ug|Y;c@L4aVGy3yhLAOA^`fQg(Fcw6(D-E5 z7DM8|gqg|V;R4$Qi9TOu!b|)a)4r1~rTu}ismZLB7VcW%!-;2vemm41VrAa(jrV;b z_R&zwRfDQ_s(4$T6oprE#y3@1nOpq%;`vL9bIYAJGOtaE5SEV^sIBC57=tz!J1Nug zF@GON&H_4y!#~YEF6z!%gwesiGikS<-2Iz7ZX_EY`<|Z@C#!95o6(9+$3qGRx(@y- z`}i)xM$_P4%xM>v8s7}Q(A`*mMx&qmr~4NlEj@o_&Z}2Y0i^s%vgb=zX#FSjA&b{U z$x$v#4hotW?0<3SN#0?#ab6TGC)YufEBzvt#a6~-wA9si*7zFH6V%fbsJkiSUnc#= zDC85k&){Ohp$;D8xoWk3rpsOZOvBhjRjf63HaF)sc$0_C6P4G(r?8ZnNCy1feP{&U zT_sJ?+)K=bMX`_~;+!6Z`#x3m9%A6s*tmZLZt;#Pv_!^Kovj}|ZXAF+#KU6AU^qoP zLoq42{P^h;+=+fXI{WhK?xXp$Hy8SwM0Fra%w%w3D4L`{n;=F#hnRKXEQn~AAD z)F}BZrWKqbt&T&x2`7QKM;X5wWDGu(NsxP2;e(8QJ!59%E`@}p5&!BZ?|K_ex%HKU z1NzSGcI&xDXR534{ar!(p+As}qU68$L$c11c99F_W|G0df#ENaZ*Mu2*!J$ydcp~r zy0i-V4(>BA^n<%qZ8xLBJus4twi|$qcP#GwEDCzuSZ$>RY5bVEn0Kc!9^`56MaL)8 z&Yls>GPPRgZ(g6jxsNjM^(%{W+l?4=ueL5t=l$|mIE)fr`s2GnIP)m zv5uq9w%=hnNe;AiT&BciD+GbaI5LvcP=Uw8(GIUJSGSRq3gTqtN1i4Fel-x^wC-j})N(&S) z6RYmsym%cmDlvul;?m74mtUQm+xW${C#K7*R#A5Njq`hZTWcS9je}YxI|k^AV%B67 z-I8x2qoSneu5di<+&``r{#19$KAy9bBCfG#Rmgx>Rs#kQi|Rj#eBz-hS$8S)AB_KN z?fib+xT-jwKLQD9e%N@z~SNMqztmZ{4(6$DcWS z=G=SF`JRnH6FrTUe*kYK@2rx0&+39XPJkZ@-3&1|e5>`(=fA!z-X!ktWc`Ihwd_}9 zUF_aPkjI83-&wB_{1?V)0q(qD<}7w(R=3qtrr(FntiAV>mu|iB;niPhim3GP6#wq~4>q`58D>_)zA2#nd;qdJ_ zaWBF5Lf4vZ<}x3s(chllG|i8}qK-ZceW_J-@fobjNzCNR6yK1Ziu(rpgC~Pm)M3$z zyXdOgeBTp#w8h;07ry)KzBjb3R%6^4JI|7blSyevsz!i@8~$p5fALCU6{F=gC9nX` z6|Uwg%tUqWRd{UlA1p5Z_=mT?N45==Nu}4u}sM+UKbit_+o~A;L72lDpUp;sS7KWjZ?jiM5E6A2IBpEkB-Vdx=x=F zow#tf4m*6sy##MQhV|MDNg@0k_n)aL>)l;&@8R3KNER3QFwa_zj%hkPw3C)@RQ#|JbG zv9RM5^vI<8EWV=VB(-;Dh%=={ohql9;;E|2rh>|e%`mEA=P}NmPq7|bN-a#@{d{J; z9^k7f2WLW8wt-y@8UlJ(6>#qF6+$srqt=p|@*bKoD&pj-}cCkQSE^+9?1qFHkc6)oTOTJEt z5uRGb9dCG+$4l^QUc$LTojYti-@zadR=~+8UJlSXDNE+}?OZl5-%mPC%HfkKxL4p^ zEdzBKlvKrVd+O`VT>+8R?`rN{)R5(j44e*E@Or;faR<>F?(=S=3j8WVrh`6t5lvdpx?a8Q$yI z>*Oo!XSjQZgR(3?mnzOY0by*zKpg`L-f9fovt{KEJhbDyiAm@0 zlGDF(pJCex9yv|@xt-X3y*UWdg#3Lo(r7kT2bHr=r$b>9cg04AnkwN)v9rQ$0;{60 z&)PkCF*mu_BF-5%+mN|$_`8U?l^~uME!{N7m+4&L@^x_ca>r^Sf!kYF9SnHcm0JSX z^`+X>ws1WE;x2jmA;8B0us;p==*;Ne;Pqw>@kWWAPd+S{MTS;LR6@x?G4u!rJ}q`S@gVEYqbiY%p5DS0_lkvvrcdAh z(yYKf!4;}Ug2eB2;$9H<*S0RD@~Xqhd2vp=B7B~VX~AS8k$LmwF4r?qq?vV|mbqOi)wNrTR1|&t`9A2-JIe0@-3Vv44tAF zXEdhxl1-?W_ds2?As(X2_7K|hXoml2F0x{#7EYAU6lNX!`MI0L5v0bByc~k69)$mh zd&WXzS)da_X z=ie-!r(BszaAG6C)9?u9-Uy>PWr%NGMxoav>{Ep*8w&JI2{DbN9>56d(S+O()Gu zKd|g69XKs`;WQh--M?UeH&#dC6Ypqvl(VYY*s{c6Ao{}W7={vCf)eYXoD&DVPBtE2 zZDd88)d`>tufBH`XgCVU{X!4GkGskaao%#g=vo!`^8DhU=I^KHm-wG6?CTM}Av+95 z<7ODfl%vRofk}GbcCwJ(YQa0P_jW&h^hlmi!%nFC;@hdv9FWc_AD50Y7)3IfUMA(Gq>D&l6yVSV+ZB%`>)7yBnZcXJ&x_Bd8!c@jci z<&hMT4(hQ+eO+IblmtR$0Dn-iFg&`%s0R*R%2l>yaPzVxaRTy-=A*7GeZp;ks6(Wm zu#+N!41|k2eW%#*>6ErR^K8BD?hO5WamHZoc|L^D47eAlIe>5x6fvwp)JUbQWR?cH zt6|-=Mx8B`l5ZfQvK`aFmo+dEv-~)p`7xh2t3g+?r7E^1cLnqyJSD`}*Wjx-Q&Puc z-QjiNP=@9RH)`-mtpzS}VI||#K+#Lvn%fGnEgbmgUY~-YMjyQ3 zqZIrmN}50L=UDpri<1S?tSb=i zr(>z|Z1lpA=Lv5`7>ZJhGs^4DaNXOtG%G`D2s9hv+Cf=2qd%r#!=asve;j@2k5avI zc)DHI!c4`y7G}fB<>Buo5k1oe5Q8z?D2@FXfGM;UL7G}RA2-0r$FWhbiag2um=hcd zNjcQC-osc_N9)zNp9lNzfs4cYI3eACN{ZdrmnLgUZ_ z?#z4!?yTEE)K56tw-KbcNhZ<_qyE0;In2$*hS@Vbn4Fbzrk*t#PPms2;{zI&d&`t&jj=RbI;Bnle z6?o2osueLiJ7b);8lu(Et=%rKkkIHl5m`1M-w4pVh%?yPXyMO*TOC5rPKZ3Wxj231 zZt%RY+B=`a^gg+GqW8qmdw@|U!ADOe zIx6)t1qYfnilz%$Zy$&2>}au6?&12&()S2~rOO@e5Rd2#>}7~4=_~4?NO4%k{r-Kl z#QR)ZdT$B#p0KPYE&04{T=3(V-*tqZTRvKY@6YGVeU`VN*J~K_xSbLE-WS3>G;9wg z!VObER11U4h5%n+wfdf1DPevPD^I&Uwd03et>msoJV$}FyO1=aFZc-ocY1{2z8(-Q zsqsR-hmIw@k}34k8545mj`&cN7EGY?8i8nuq>Jvg*#|qBb_0?5ToyGP&KPqq_=^}m zpxpuH?(tk49(tVuAM5*(8K%~UL1s@}Slc52{|2awz#{CHGJsE=#MlfpX4sBtjmS%t zV^x$Qr3M~>`msu*;i;1*F_oM43j61s43JNuUJyO(6(P)=$oz!Liwa zDl@O*V!vP3L-3D?8jww|JX33G10k$5$-OqUJo-~{K9AR&ywtyS!lsPxH8a6RaQyEmX7W|3CLg%W$Z~IXgMLq34{*cn>*`gtn*yOL;zn ia{7*G@PHk9edm8;%5CX>0-lKg0000*}truff8>xVgFE;^Dr(zO}Zsva_?m!N9Dot+KPSla!O`>gm?k*7Ec6-F~a^!4=j_xJJg@x8vi(9zJav9YJ9sKUd-sj8}^rKQf#&bqt0 zot~cO=;yz{zsASL-rwG?udc7KuiD$%`1ttr^z_)-*!A`G?Ck9F^77*2;;gN#v9ht; z-Q2LTuFMe5@$v5N?x(1y>+9>SuC2Viy!Q6?+1lCf@9*g7=%uEm^YinhrKIic z?bX)RprN3ipPrMGljY^*@bK`QoSdJZpP8ANn3$N!$;r&j%(S$$x3{;kv9Y70qnn$X zp`oFmprELzsG6FZmzS5NrKQHk#=X70qN1Xem6gE2z?PPl!^6YBzrU83mb$vS-QC@= zu&}MIt(cjZ($dn$$H%+7yS%)-si~>h*x0J7s@vP!rlzK@uCC$X;j62wot>S&zP_ZS zq@JFhxVX67+}z5_%GcM|$jHdk)6=%Lw&394-rnA_va-+5&(_w~Dim#pmbeoSmG_ z&CR*Fx!>R4Uf(9grf!^z6Yw6(O$%*)%{ z+pDar%+1V|mX^7?x#Q&H($mtFmX)Tbrkb0Yl$Dj{=jOGwwa3WE#KpwZ)YGY|sn^)o zo1B}sxVN*kv(3)UqokvvqoUE$(YCj?pP-+iqM^vi$kf%;ot~YzxwxvUs@>k*ys=x{ z001ETNklhn1`QPgD3@)?^Bivjd03~nHR%!hq;A`HQHp&2$XS0LPp1j#6ME>q zkoTM$IXnCG?2IlV;vyl|9S^{=Z36&}7NVj~JsJ#JbpRD8Np*n9ojK`vb5SSea$Xc^ zA~B@vJlau~Z3Gk%BCk#af}btC~%Lw`aD zCDK?&qz@G_0(Hg6*Hpv!scAq$&c$%0=-dq9C`rX=4I$(fQ30q+NTZ_TP*sy;<3~f? zOBSDeTvp2vQPCmYG1f7T$dw{BsW=C(I%*2i5YjXN$ncOx+5m)bOBVArl42#1+)qqu zP^Y4YfI>{XF*idm{8y5S(O|IdV5~`)L{bz(_H+OV2Y?2es#;9$ohE7m&!6(yVP2wB z^?+(%9FhO6&y$r37x=Dknp;-Z?EcX0G8YzK#_Pxy^Y3VwChF-ejdn?lKoa`6 zj&%fN`#euhXQf!KB{-gJ9katS{$s!Y)(+ccOgGB`N0-aO1Yv|P6N#(H>tYI}sEAPg z?r%0}NK%APPGf=Vvpa0&+4S9GmcY*#-?g%ahoI5UU3t-PR~{ZBMhy`O{ZqqQ9mwTk zLJ)W%-%|O2=`u%0?9tOg`segudT;0WWXrN@l4S2cK9QEia3#6^f{2KygYvn0I*esq ze`{jbV$3wXogVb!4+@2E3bVn7+sp+On^53h@50Mn+*oYnYVyokO!W$!{~U$)C$Yf4 z$S`bBsoZB@JKXJ!AB?Kwc&F3*V|tG{X;?u~IJd0+RMi*tB9Lrlcsscy5>iKd7rvP> z`_EXmpG!2RgIOUyu5Ny?IqFPZw~^_$Inr^s7XYnJ8R<(={h>-9l8ILZB+>TY;ocq4psNB?@!InK+!QGEh7=H94i%ttC7eBL)GBE?8~u$|D131xcS;tgyKcT72-085KNe?X|*k8 zdbnFC&Av*r)7)K9SMuCxQsw-Hk$cq|4*8r9FBhjUntK?dM;ao*;cX&$zrXAB4*xce zEKTjjoWth4lXGy6V_Q~oS0i++W&vdoTnG?EHX7ZmW;YWc1o=b~Xo4iRDUssP81LD4 zyY}yH&c5UBdAu{ytTdyY``SauM%4!=x%{Xxtn~o>lsE$8TVP_a)_kQAU<@_dBoI=w!Kp- zja}E%XLgE7wmF|;+HN-YUiNV2oosonRNB>at*EQhj%wOO#q2REQtG9mTXor+qMD?b zO~y^r`3&Oc00NN(mEMngX#HEg?Y;41zjjbB9?k6RUM^(oquz3Mr(9@P+wHD0ZO1l) zk4A)WrtUBhboe-phBaO1Awqk{RGiO8d=yT;6jB{D!K;(e<@MhF;H3+L+`@iwE!!Im zTI)Z{6-wnit&T;Uu?&ORu@c)bZm?Rl>Iuf8An&=D%#ibYq4W8OpSCzEG|+=LvTqLx z`=kGTebDP=7yhQ4tDotgsc&V=J4dN2eC{A}J|{{{2;mmDDD76oZEB~9NT1<0iCsZL z^Z$?d2{5=7t+=(dy}XxOUF%=QWdI>D7r`(hx1-bwQ6!(6IjUHym>(mmcWX1* zAFU65vNGtEdh<_SZ|rUV&R)5N$HTYNmBNoeZ=0Kg?XAvr8P?wNVSVM7^^NV-nbKn3 zBL+8tXc%Fr*tAJ_2{+Z);Jk9N^l1f!`)Y=_vlY=XRT zzfZlut)_(g_<$p0K&=X+zn2myd?Fz~<0EU#Z`B^jT*Z2~UC#CTlm6yvw$W%kZ^z;v zRAwsLes!^;ze&7qx8$24O74zDeIp@}_^{@B2J=M9+=yBcG0#yD9y$t(KMI{s`=}J= zo4Z6+KbU)%KCC-e&aRIJo0pG(LCjRo4-*<$3h#bDvP6EIP2xBN=h*Chp2qO1<_TSQ z6Uu`si%>iFh|3siC-#v_mrf#Pyo>YoJZ5m=V1>d-6O3rp7D|WNt$MxCPOY;_NRRY@ zk`GKZ7A{MZs@4m591@TF_{J?k2xG~xTjSL5#$y_VAyF)9AY1Q5G*-;16Nu*a7cOq| zj5&Lyv&Vo4%nuYxjJ1Wr?m}B24T$emin<@$kwt9Fj*_FDB|Sn9P6Qqr`qYaF6GuMpc`w(daDJAyl-rg!!Hj z5yzu=wUWJ%SY{k~L+)D&Yv+wP;>-(lVke7%5R8PfN(80I)ew*%^@oU;l=`#RelF7f z!P0h~I4VgcAadXGlKj|El!yk2I~0L7rbtqbqM(7-dnq7_9T|bkxuXc0GT&gSPYF+} z;~?@$EWIXv#6l3SZz!<}#0=n|{l{0YPs%~_dMBF?RW;nYmLAWgVg$nLMwb+Zb)*g% z;`yA86K*Oj=%!0ArLl#_*8*;tCN)T;4^zhekVKS;z!NsHBNPT4C>7<#?;-8Tbfw6T@3#ss!|7o=S5|^9PN={G@;IQnN6A z{SDSUm~RwAIf=)BmMy3dJQ@eTtLLS(s5D~R!BI$AY%9yTW=lg@sB;UQ)b1XmQY1;lWIVj;d9Io2uIu2reFUT=ig8f zRm1-SWttlnM>!a*Dt={HHji%!^e?C#&}&BJzO6V4QrT$;Z!-_+#vNeg-8Mcz|Jb5q!!Q~>t689Ff?2Wdnj!;83}#%)MAw8|ieU66$8Nb-@xwTXW!;~ti}?S5;k zvzg1~I#)WKwHSEPux;!!ZnIdW*XL)a&&yqO7I7YVdV8TT6gO-|Wisl-3b{*-NF*t_ zji6U4p^9mTrpKUS$w!WYjG?Z_G2HM}hGcgN?=7wLZ*Km4xz|{_xj`J|zTJ~g=McZ9 zvhb~^SJgMBQ32EywQ5%@B^Y){OzMJI5P0tToC(H=)UWOk`D8*;T44$rfCGfwqm-q0 z;4fHioNKMzoHP$E*0EUZTwG8dm=yuhz%wZRdhqq%8h{-$iq~yxi^cuawg4EK+$98Y zCJgMrWdsQKUG~%WGfEsQa<~8@gupv1I4aFmjs%$8-tJH4H#--uj8-NWJ7@F%q zIjM>LLaXu1e!T=lb*A6E(wx6A|IN+Lf9T}+14K~Q@gF1YTq`!cK%Gi63Rj3;WjsQQ zuuMylVJ48l5I78E$5{Guzvi`{(M4JatkwgE{wdTKuK?O@D=9^@;z+?o1l zWuqG$cjVn`lgXDmOIPOK`fh)$NWh4q@(A3pcr7B_<7bhbtCi}Ws!Et^1Vgc+}0rHqPz*2d$%+OChVfG8z@D-ko=L8IAeVC(JL%|V{X zK1>r^ED5M>-HEDTINQW=i1DUR zzyFoI&t>V0j3e7E`fH<8Vsw~uts;)Zbb_T}w*y}mN}qNf!lqG}d* z_FB3A{CsC=vuvu6iS$@2Sm#217tF-D5V!2R8ON4M`hHcPE22^fVbjiSyrI@z@J)WW zAEbiGVgYejwk`Jay1>A=uFd`;H)!>n^>I*Y0}+!K4K;)&*XZ! zMx%3Ovay&-bqGmoF#}}`M2yqMMhZjzuo|W}5Y>PqtH^YQGkl1yM8$L6#4`RF6}}%K zmQcreO%G};Cf&K!)vZ>&-^`Bx%cwRDL}_7Z=5jB)F}OLuv|iFZ7As&$`+Y7o?mhB8 zAw-=AHii{n=|k+6`_&3j7z2qryYe- z@OK;R3p8$c-9X?oir7S2ejHQ<5tS@l91UK~jpv&A>4%6)rTkyPe4RhPGRdt~0weMS z10V+;>Wqg|Qt82UO1Xjl%id>+&|Udcq<~8Gpey)zExX-n z4OUhT_3fVW$V$gsE3E#aH@SIpvv+w{r>O^t$s*fe#P)p8G66{NY{I_>9nKTo6A_dP zCRtFhOwGP)voRvleyz@ZhLvg7)DBIfTCbWT3a9L zqFY#A#;(&!F)`5F*|S}?o4yw$+|MSY>YK0E#Tqllq)89TL` z7hi1Ua__hj5Nr%V#{2}*It(QuqtrI?Uom2iqD#6Q8D-uGE%`x8g%0K?7BJx|>R&sm z2GD%D++Z|nyqMcRT<4FjA7Ne@h>aH;zuenfO$fqBjo7q3YEh4|I~JEMBYB)6LvC}z zc_3;WMTw0Qd}9K!gomKS_*@hr#h zg*1w}OCVKr_HxQGa%7Pmv9EkDB{EmwhOY}-iKGC#%{TyEkq@{G1c~HgL$54i)1bYx zu|4XK`jcFx&>|4GClFPykXv6_>95p#e?1P(a|}q(F@dn|2NXrlBl;nDGho#74N7AZ zj)yS|44Otf7zY%PA!iur4IKUGwPA5N*IQ|v+3c4VM@0a_K1Ou#BG~(Dtn?f8T&b&M zh%hi#JPsIWf&i9bbzNq2J@H*1>B1E}9sRh9mp`&D<$3Gfz za;HiWbmsfMaFIX)jlhf+wWFZ6pWXYT5g_|(T5DgzDW>|Uk1AbTZ$M1Bmz=w&z2*GhfxVW+2M@$<9tzUp*b}p$32jVB@Xv0C! z#R)_;DX&j1Hdof)`*$vf`mn-Sk@N;0iE5sBpFs%ll*&~&HzWzfB=AyK;UGE4$s}c4 z+rGt-zEM73O)ASceBRugjLL$`TRm#bk{~#Ncq!WHU%NJG^w+bxk>@5?5PBsv3>Fze zcm@eUJ(MCDLG#fw$X)#b}qoyoQ%Cj*^}Nlx_q z(Mcb}!^Zqlf6{2}Rs4M5ghVCWbfCwW;ioJ@vB}-A)Z$bc!}KcnDO9PCFv#e)i*VeI zl{7yTT5hYpd8VgDX6BMZ(yFE%<+V!XB%(U5|7Bw!cf!|dl&cEhY%={PwuE{)qNwaR zj6CnQ;RZfSQ%eCUMaMf^GI?PkkM@@2%;jvMJTv!vac=(vVy3o&~%&(ya+?a(+Ggv7*@gT z)xeJ|JWi@|#FY9sIHnoy+L4zUMt2w-mUY+WR0R3`=SyWAc&(Kd7M|C}k0NHG=Bk!m zAK;L4FW{Uws$-&x!uuzSs74QZIO6oV1c@1N4n&l(d?+UnIu;V^UdU|@!8lH|+|1+q zT5%WmPD;g@h0@GIu~M0xT|ALF=5n*F65S?*q+Wa8~@6sWairY^T zaJvVdBO%5_(fav4c3P4+zPJU~eLY#|^)?`jaYQm(dA?XIF1EFOT)3$`>SIP<%B?My zeqPV*gS!oO=qfX-Ykm;%RWG+|d;z#+X8jy&N(Yp7SIkw5D|Rh8XI* zd+U?Q`s&PV<&U4At!U$}R@pzwkM-bD#KqB+2`iPvoj7&*sO^L=fUJCh(kXE2iXk1+6T^$y8|gw+JCA3GFD2 z6pNlkb~zyzDMWk>W?-_hA%7x$AE#`MNpo*)W^VS60h-s^`RcEj9h>S2L=barNX;;G zFl|JhJvlf+vtkp#Fw3J6x6iT|A413~Nx~J?k-YAuCh<9_DM^xuDE@e6d3|sOXC#Hv zLUDG#f@V3SGFD*M6Nn$!k)R$z<%GxTjT!QM2MMBpIN)r=Y>Rs-k%+{wxRCA>;tR%1 zDNCgMp^?iyZ8taQ_i@ICOr4$G2b>`zl>r1f$vO9k9k2+93N_FGQevXOi99?|ahu{E z#$t29jAIH_E~!zZ$UQ@nGG949Cif|Y7V^8L?fL}Al(;qUrBYF=F(OYMR4Ymo{ZmYC z61RTDkv7C&+~*;X6rflt!jZvS6E39|9?kKq*d~<7(S`5smZd;JrrwRm(V-Bh25FCg_)Cxs^R~>PHYurrBiqmOIAT=R^^>9ypiqY{;{f}K!kJp zZfK%&dxH`O9vB_2hj&GBueCXuVDpB?_yt-cw73&3=6;+j@2s9ggyV8Q(%mh%1OD58y6Q&XMh4(dVGBRKk>>iJ+JL&Z%ztB2E-Ev z2R*?Z1z!15*5Hi^j)PmOslG0g=K}{PBp3!^#IPO0ETh(*Io!pCh`rp;dacQ%k$V>+ zY6{O#F@f@8E!bYuKy+(Ea*yLC$)lDD+5NmwKr1LB)eKSoiVDLVzHuHGKZz_9gg8pm zp`NdlcM7YQaq(>VJ)9c0Mn9PhR<;dUy$)9LxP6DMH6;!5?Yu4|L(J};xJhyeUq0o8 z6B0$Yd>WgwUy%_1OF#$PkJGA&iM5!>&wa5hv9hb#?cCl*Z@q%8Vb;zQAf7HTmhLqn;oDbz=sSFU(W5f)J=yTuimbXUr{+F*_e-h_bm!tts zS|$_oNUS9&aYUBHOemol;yvL^Jl<{3l`rq^77B1}Ik(YkNr5t%oar|PXU?D^HXFEQ z@{jU{tioeJ*tBCas_%e<8cPTN^3@-_CJ{3*i6&o8cs7h_%AF8$DwI2>BKYU~#f8$^ zJ3H_zyDVQn!a}pv?>D4(D-(c9+pMpai+KS;CJbSnetmUmGqD5t=}1~3}pPI;SFG$|M%ijXEN$(+$P{C z=PrE+D7l6f>z(gjz5eVEfCl>k5FdDW-xSrTr8Wcyc~j?XH2RC&UT^EizZ~>`(t!P| zhO|Dg`fzcx`87=2QfFy0$gWi?d7w!%kPt`lrysobou`2I+7DiR_5mVH zJw`OAKp-q)CgFkc%vJ-@k`IM7o0~vekuP-j`S}YM{>{O~MsKxH(#BX=rHgBkbKhd= zqO>WZ?_GZt&OP;8@D6ZKT)%n%#QXNZOJ^z+!zfDa*!X+F?uGgJKfl>o`pc!IW4OsC z;4j|1dUd`7o_?=zxZe##O;Arz#*(A-!IcnV-p5nb%1f`k0{af&;N2JAx^Vr8SAqDb zsm_$*CM*>m=q`Bsp!3+~lDyfu)V%l)53XLl2CNqc>)S;wf7DHq=aS&7&w*2GZkn>F zCKTYo6jS=Bf^zatz3{Eyc;#Qe_S)00KJny}PrUltE8qByPa`TB2c4cI0lP=U=wcH+ zps|&`ywyCo3cqk`Wg-8&K`p7(hP41T{@b7GRp}`Hwg0>Ekhj55KCb|ZCRN>iIUw!)NfB)KdUitMGzW$ppJaxVC3m~2_v>~1{ zTfC_imQX;bt*DO_}js!gK vY(DkMH@@+$7hd?yufOohx98Vqh7tLHX~SnDH~^mN00000NkvXXu0mjf9IILx literal 0 HcmV?d00001 diff --git a/common/static/images/simple_graph.png b/common/static/images/simple_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f2557950253ec14cd689de68223af5c5aed1ab46 GIT binary patch literal 15107 zcmZX)1yo#3(=|H41Si1Yf#4b(g1fr~cP6;IdvMp_ZXvk4JHZ`-LvVM8fAYNc-E~>8 zX6Vye-Bq>s?h~dcFM)#i0TBQIph!uIegOcWk|2KocxXroQQ=@V0D$djE+V2RB_cws z=wNGNZeV2c{yI*bqd<>h@NC6*F=r-G&= z7!Uuc+m93v0g+lr6o@4T6f(xw_3m7)J?lJiY$*=jTDsM;FeRf;^}pg|0>~w99WVe#3(tX@~$L zB!S!8u%h6eCMf=hpXf@=0Aknuo(pDl9$bDX8BAUw-0a2f*G~J3_qVT6mcAF9zwvu` zQ2{x*`HFeZP&ps{4xsH-d^KQC5COQmOxaybfD|RB`CM283o{~P1$3*&kEc}Ns=KAA9eSSRdTcJgGbhK7FUd;WWAoR7x_Q0qb9 zObSJsf%m?4ew7c=V?I-4Uy+aBHo9;f2L(8Z=SL4vqfuO@-vR=9>0d8H+_jgVbCvT^ zz^iXbshAu4mvB$_AMoC~l{RmEAM&>eUZ)eFk;~uCfl4k*uic5%xG#;e>u58b>rtWA zFFX@fXh)rITR6s-$%7n^*>6z@cAuZfs3?D3FvjTTggp>>2qrG+dx#D(X1^9@7i&Cq zdYq#;K9-6Qg-_|PLdzH+NBRMnfd0hD_umu+{UyZDsXvJNp}8gEZl_mm=XWvjk}`jq z6d)ECB#MUDr-8a+Dv3<=`yC%4xj2-6jQS?G;xm*>~>by4aX;I^Y42Hh^A&@S#xVIRF(u%E@$3hpt9taM^QW&8&3+u%SV8ZqbKjo4sawno-2^T6-IAOG)I14J| z2<>xyhM^bE&Xog#ghC92&Pj*hH3L5g6M_BhM32Sp$w<+qLi0nBMWOPL?LSTh?hEpY zMG_aG%Y?F#3r>?R#gZ3%{(@p2S|`*(@)D~w6fpGJh_D7(Gs;THg(M_yX2|#t2PUkT zC_+wwQW`aDB1U+4xaddGOku3Nio7&MRK?z6yjjFUsx-e{A(=e3$=&@`GhZiOZmi4@ z1__QlqCAPotNlt`#`w}m(%z-f6OhRRfB4sSKWu>P zP3@BH>6?63cx{j-0&)5+w?AG8-S^%@d$GNe_<%a4Wn^e2OXV#k@FhJ%8~hrQZkbPz zPdKXp9&{pgm0{x;(mFIw86PIu4CT z4KnSniv`p8fP`~wIoYJR=ZXtR;G)Gi{eY{OYTcIOWsQgHR`pf)s>ERj{Ela z4h8nJc9C{g4v2Oi9AOdMO7P15>Iz*3{RmA0 z{SF!xs3yrv&iaM!XX32HZxAMy6G#@l3_SzXgY*;O0bvK;8L=Gx3P~H`45tF*L-Gwn z2?GIb80P?_Nfi;VJ2W`lIAklvB|0XSAX+L))erx*GN(DwgVZ>hBic#Z4fk80*K8gkghT2(x?Bm@U#eu$cCB^Ss{(a&VgVN735(Jp9D;w+#} zcUHW03yu^2%9%1)RqQ?Y1Gl1256x1K6;GrrEeYFO9#x+B z&igV8au72ba7{8*F`X;NYEJg&+!&;9gm0XnCC8>IrYTlVE`vwG-C)$7haQX`I5Kjw zFJwhzY^084>Unf|zw&eU+o#5u>CVNAsMP3gHI8L7ObyrGqaHG~!NM7M_f zg2)pJXrC0Hil4ae5^jms1RMq51P_GvbMCswjdK6w4_}4IqU!QR3J`cTafmTc@a&AB zCzH`jxW^E3bGwdSYp8zmwoo}-v>)5XQOJ=8X6^I*bh}&`&Nk;aUp;U*a6edAP*QNt zP7=_y^Wf=a%s-3#m5P*_GFmk{MYmd3x+J?Kwd818KF+=a|EFNbYxri=JN`$aD>G3x zQM!Pxf##%_{JqX@^H~s75SbXP7+XJYKUKuS#8U=QOO9*qBk5WHbwoOaKgD)oQK6ji zpPDwA6dC*EH653Z6=$&%X=5&RcaMjd@T%~G(pz;Rl@c{Iz3pa~B19!D?RvM>m&Y!Y zeEhMw>A6BSE4G9B9QKCWRk_Oad}nOu%o~fFITTWq{;0lzI?7_2YV#enuJQwuh28Gu zRvXs_vxd(Nzv|RhNLFcDMm+9D`JUVJ?;4ilf6xCW`<=}5%(KhQ$3t~`*70`izZ%dH zf{jWfz~b)IDbrbcQhmG4qwqOv=_#<-^=Au%@pDOxYWCB zqw}PAEiutDemsqwlAS2)J?|oBXj%=eD%(s z-bcTkmUI@w-=bgi&PARjMie5l6P9zAm(dfce^s^vKpmvd&wzU!C_pzBfVAzcf97rN z?RCqqaS&}3#?Vv}R!cZT!Xu||O5>Vpl+-117t02=Q$B<;_JAJuE3Qn+KxiEucbSwG z+c8oGNC)%OE6a!fb7zeoBaKLvyqV-Z3?7Lz;{dTdQl-~A`MS)QB48b_fnvC-`n(OHT7olxl{`RL=g#?QS*t4{sLox66u)dL4bj_oopr?3mKjgNfJryO_lZnJLl?rh53ZJxyw z-fQhg3$Vtdb@8?ihQC-8&qatItKk5?BVDk{((Lg0r#}>3qcnI7G_H@_% zc^07vkx^zKq~Y|~)v!41*p8!mmTxK4{Be~1g`YmD+cB6cfgLGX&NGQQge*CcDz#E2 z$9ueKvSjF|+l2dJ&_)C^MTj)(h%_Uc-f72W$@7S6nsk)N)oe!bSgWR* zx~l&A#}Nk&O?>-auQZ)VkBucbCwpY|q7b@j)~-}%mI{m}QVSGqcxELz1jKbpCV zCejpWZ`f&Qd<%Ioo`l|4U3@(=GqKM$yKo`}8a@JoStB!LOGVAG73LkSCOF|U)N}@$ zmfbrpr7k@YGf3IsqY=H)!Ngag@%@rp1fV()ethj0?`e9LWFv*){$Wp=6xv@j)wC~) zKIPNpTKP%&Sp}Q9<~d^XMN@jyc(c~?tp(Y}v0rg*F~1&LZ&_J@iwqe$Wrn`Zfh?QB zH{%}DCX=_-x<6j{LevILeu(dBC6}!3R213-c{;2pobjE;ZKWQ6mzBDZ&(FG{xh+30 zy|I07hU!HyOT-Ie!F%Mk;_@N`Ve}KyV;Q2g@-Wc7N(%dI-4rx8Z^bi#( zJY8PvKrRJvFzw znuex|_KMr3 zC9eUK8P^}CQOA{|<^`l*K;w88F?T6@aM(4@hh*fZ!>2kk&BLuwJE1Kont8p%F5n((wgN1$f4G zHG(dxHbOo+o7GaHO{%>4yE+-yNFigQuQnnGs|`C7Xry=_ZbM|Ddj zccT5f(;h7@Qb5!dHyOHH^ZI7WbdX!wGCErz&V_|ND&EFf`lL<~R%9TC^^DcDma=wm zB6=rskADJxf`}29hePYW%&f`n-0Ll9Ey9~3pfKN9*{(>txkl5!MY`CieL!8TgTYbc zr&hjroQh-ptUcxPXl*!z3IDJidyz7wbyR(aW`$k9Cb7#c$WS^YJ$&EPG zd zcbU}XI!@G=9cVoo{o;Ek)vy~2}sfe=u86rB15#1uK|l7fSn2)d;lvT zw-_GHA^CL|6+UM}9-V9hKu(OHviZ39-tC)REb>C4aSl2!l(GRU`? zRF1pjrLArHT{;Fj zq_QxpIxC9fl4BSGk_@-;PYjk7j4S=TMZBeL6kcjx>Cafu^5ma?N-;@>l3xpRs`q8d zlE;K%hr5SGgm)$vC(9;Ie;<&%8^Iig9r`&u^Q-fV*_TljM5P85CB+?OvXU7~CW{)& zxH@BJC+CmX->zdmBz|zg9ZNNkqZp+dg>n5@OI>YM|DjQ@ai?yk;m({G*hEA8Ubw(sMGTpQo&VJNo8i|5 z{*xCuIIMU})R7;vA60o>u9~jHEopEYF@U#n@QUy$}Rz11`HwAed^`x1kui=mK~wR<~o z(~9x|c_b<{iiX!UjXLFbT6Fpgzwa~sQ|r;09Dm2FmzSK2w*%{T$W-OccFfC??~?wz zhEDnwF#J0>L0D?28#`1mbXnI&7=B5tnxJpFD*K=ngcNZ>c#=Q_Qrx&GGqE-yP#o-# z#visnmY4`)Lb^iq`QImp_w|q&DG9CsBLPvp?|bW=-j8u);8fsOhBN-yDd3X}DUiu~ z5``xpojl7WGPEQ_ zG(N&MVoH7g>5%4v+L}h;=Ss+x=1-4Y@i>!Iwfb9KH$Kn&M(Zx?V(=duuf>9Cr^(}G z27V-68HG}q`915?rSad}1egST8S*^qj+)L`u2*ZyfB296?`H3$b5^ePF43=U?n zviI>c{V> zRE}#6^%3P5Y6Pgz!|EaPD1i)%{4o+XGA4yCRXl}elqd{Nb6-*VqzE3R5c&);z+ZR46>cgN#iT$a9!9NK% zk(UvRy8KhXcXtMDdRN&s5h0N{Wqaj=LWgAOe2eeDRc|b!)W!(Q@lND)+4+oLR$<{# zXd{E=VvE8}RIWyK>9K3oI4#}rIhMCw8jo>4K4j=*)at_O;H?te{%MZ!v~xeb_*B$Z zfcOA>V80iEYVbD}IwE1uRo%P~og9iY3rK0NoN)S6Vob+lVwn;ySf zf6bH$u)uI--MV!+T3n582#=n9%0k^~%^8GQrQlQYE`oUuSPzzvNE<-RCdz_Ozx3JR z+7?LW^mWPgvG>CBiq)}y@;a2+TPU|J(Y6<`Ia?I?t)K*^@&tsA18f93R@U?=VEo2l zHzek7Z`GD=Z)0Tas+kc4J%`TL9^bPDqx)I0;Aa(WoA;c>8;3mZ-81?uD%$Yh)n!67 z=}dDK4JQpbS#CpHYX-29?N?(4H)}hHObr0=x^Y9kS{ploiQTNNY#h1W_(=b$!43KT zx0sQX_@63HmVBfda*D(vwhqR`Yz)i{ETsI1#KgqB4n`*2Uqr?K-5l~CAE}v>lN~oB zqpPbcgDWe8t%E5eGZz;ZBNGcF3kyA@2EC)ZjT6|7-o}yaU!DA?A5jQua4@%XGPkuM z{@XA3tF5yWA1UeIf&TmRuX!4~ng4Gj8^?by3$j4QzfTyM8JHOV+c%^s@842xMRPY} zD-BU|YhxQn$Qb;enb>*%ssI0b^1l)PPfN}JwPa!Y|Frx+PyXGKm+|ic{?CH`Wvzco zA?D&oG=_x$oT^S0MaxmQ6UvKsFO?tCrs6r!P3^5B@IFhO-y(UVGR~E!B7_A z$nC%YTO)goo$7D`5@a;N$ex5dUR&5O5UxZL!boUWj0KgA00>u1YwauC! z=fry(@&!(SVq^SO_Ks@=8O#Ik=Vt*-OsJBkTCjvDV2txOT%Ly;6g+dBhwHVDAre2; zoH3E1iM#lrcF5_b`@}>8wJ|{PvYv9#oZ4$*N9Xb;3skq@JXm4?v^0jId=IasOG%(_ zEZy@=VaSj5BlnMckSD~%;eJ~nlT+DSG5hyV4^c;?a43k%D*z?8SX`i>;4&~#JvMFX zXBbZ9X$Je-6V4Ax3;g$GFi>cd-2O~KC}kyK5mC=RPrffNGZC5}nGlPZyfNXRTgY;p z80kpcw!TcW>iaY^v$aK?8srK8YbKICRzDWBgRNgGc8~wu6RH!Y{~k9{ZpouYg$x)2 z#Po$*uZf4TF*T4N zMnHs;#HG#pmI)aG3SO`WTCke}Qbi5&RpSEl7zl+1F9-l(0}vVfA-gCH*~Rc522}8V zf&l1g$rPFsUpcZ4jmDEB0L2Cf-VXpjBrf;?VSDW9;EXAi4_v#gXErmW72WvZiGMd_LqRZ24|iwz4P1H> zkZpYJ80%x-fOr^P_&jkTm5TGrM%67zTDK}qTOgN2@$@%$FK@Ag<^RX6QHM;7i zHPuhw=nUIi8|I-JQ@O;{eqp3zVfhAHS?GAVv0U&v?U8_36b(&GkO6^=Y#-fWd}P5D zQ+3j@&;Wzag#UKrGB*YlhaWrZlk8zC`7a%ESSUz+1?YG_Ne`1x8I3kr?R-4B8};L} z?=ULLK3VWPiLbT}&17d?bt0+%bvj}v1o)Kb-P0RB2nY{DZcC5^S}IFU-vypK0PY<`u+R&(-=;uzXMkTjn0Ca zQNqL63j47Vtn5Gjxbn?E`!R_)k|Xf4esH#GZU+qwv3DLk^#T%EZFqP@3x(4Uxk%aF zY`XxYrf_^6xpxcCKQLE1cl&QYyHNge`qzTQC`O}}jaV|9bu!c3(?|^-B1~9u=6FqY zWFHGW|I=v{NKvjQL!JsxLaDOWVdSNE@IyU5!atD(zL*Ydmn@`y+?u`An7UzL?A4&O+eqiM`e2l6@X!&-81BVZFYdgZxS^w`3QcPHbTC_ zZ!^w+geA#I3qFuHXW2Vwmc)57F4L;L1+nTR^Ix-ly12ZKnxM1)9q0Pg zLXLdpN!r5&zaQyWK_2NPvT3+I6LA>)0BOl2qhnf*JqHEF0o5*rs~Raj7){hrSjKtQ zj7w({)~Xwgfi{T&^-&tPIpmwciRzqka-zp6g?xIXmF91R-e(Vsj$$PEedV4NpPMua zdG+-AK1wnhPKXP9M4N1eEa@_hV%)y&aWVH;bQH88bR~u**o6iXx2XVS(XOUPrpV%X zTfr0cq5^;#R0fy`7|(w&_~-u#QKUVC8n%5^>qEdu3h*EE4+r`}>5<1Y+gA0h=MDt7 zAdX8^fU{|)p9P50FM+I!4LA8dI0l^L#xxrX3#^k6WJ6GvY2(%15Rf6*G|cj{dk_7a z%D@bP?5+trfWE{|K;7ip(I7?t2?YoHn;#^}f+!Ww5s7*!$?om_06f4`8+*#;{)V>U z%rmyBsjXZ&oIvY2az>FFWE%0~f$=r2nJu#e(GH&5?UOLBb!0+)!D&iOydii<4uOTf zluUV9`D268`Rh3awhb}4K8xQ|?&tRDWeLlyPzjy+)IxeQ-@&`WSnyhTG2w)lc&Wak zY^sVFF%je_nj;L6fum`ScKS%dt{Vq8z~19oEj`}?{o zEk?DL->V)}C_>iV5y(*Zw98LUrygB)4}LATKLx+q{-T8)rO8Tm$LxJ}m=w?Yiv;M} ztB5A72|gDXoCKl3^o;KQruroz(DCRboU+UUVx*4=YCgHTjLed2q?_b|$itFF665sR)icz{3Q@MKHYk4nS&+b76 zg2c>F3P^A`_|nFEF!PBo!d17ho*^(oB*Cy@{NMwI<)v(ZBO1V;666=ihHlW__!JzY zBy7d{&VP70tq=w*6Y0osGUEjMjORab|?((_J`pWD47m36Mm>qvV z21ti0c4XFi4=VF>G11>!e>I4kMp?CQ{G3Ne-~6NzKq~YPnssiI5ULtPl!btnR-AxB zbE$Wg1JfS-hq!@Xg#6?n_L_SZXQcgCG&<$fJbnMyZA%_t-qlJ$+#bX3fWM0^MQxMk zujh9wihMvT{%aMXHZLt=ldva1w*(q|FvQHb(ujqSkj%xXziyuw$rwYau0_fk@1xQ2 z8L#&lkqgkzBnbc&as8MY-^^FbF7l3d8!=NoI%i6wSbGCok{794jH@$AdPC-Od$*?F^Vhwc_&!tm%&EPNesZ9h50M(=gvK(RG(bVl!W&ETnz|O9W1Xw_OjySJI%h|+k{|gC- z_2jI+@NXJgYumN%QIdL0${&w>J3S&1U?5F0%*W@iYUdO3rAIaEd zlYL_%)mj}?H(pP-L!yi}34+4&1dEl1+`UfJ$Yp=bO4?{muOB8iY}V>2EvDD&eXgf4 zg#_fJraXQ@a5zS+jP&X8M5NE|@;{;G-TuB%&mYIS1xm8dGAl~oI|~?ZLCL6`4r>Y9k=E^nc1}SY5vZ!qd*^UB95&KAUFb3^7_bi|JsJeTcR%V&E_il_^u9m53l@6Uc;#UMTrCSJ6F z51}PL7-*bNDD1(ERt^EvHR25eOupM2 zvBH`V$2N9nRZXi(zAv8pVQx}rz#06I>X1Vc85D@uGe)8wuQIBl%QO1+(0IBhjeHd{ zioqc*4**eeeepKg$L9~06Tdz%y|s9UU^rp=No(|sB1`)ekKcuw2fg?ClLt^tq-PSg z5B;2I_lM@zqLCQTe zZ^945CO%2`Su7CiV)8e5>wY;>s|dnMEyYAOiTjJ1x`h2`BccXoOct2l%BhoMHS^K= zcZcEj95DWg6b`Lw!_VF(VKa`#-KEua@@4VtIdq1Q9Dz4;HofrMH6?qS+RJKWTE5Pq z^E!w`0Y}@#gzh`(hV0e52}Bw( zH0sW+jGEnNiNRkFo@LKG(t$ByT_FWRf1gJoBJ^W$It(S%Y_-v*t^b?3etiomkJHH1 z=apSSkA)m0Vr-qnV89sY$9B+OOa-@6qalq+m<$X~^DJblxg^v=em#R4TQUKUfU=LdZy_;>*Fx&Pmy*jwk8272}kXZO)N-$bw>~sIK925th z&^_*zk80)LD8Go`Wb}5pU}3C~nT#VXOY>V(qj#|KLOl*f%}YBGy7_JO z199uX(|%n2+pLU=L}TY}00^9eu-L20R9eC`0h&{Ee$cXeDZ0pcy*~oH?)AwMg6Z16 zLL4@9*hi|7Wm%eBPGpz>p*egi;&jNguy>-oOt%!84^iD{Wy?P_zN0}_@N)q*SJ%2i z0(-dk4#E4h)Xzs_@h*l)G%WMyRsdoq2pY0l=(&@iKN_*0)431rqS*cfKP%#gz4!CE zDrV2oIObq*&zP`KiIsqOLqrf8p|w`viik{&zo$|GO}@RV)i%8?ya?U@y=LI}QRtl1;DJzp#P>lR5o#X^fXoM7lDzsx*zUS`^ zMo=_B$k=QUgfld;>}yhsCBaEmhO7Jf)#tYPZ3IX{&o1YIUtgBt+Sp3zt?7E!ts5D~ z=?lR=X~pC$tmF&$P+SzU@CEQh=yr6nw!}(AsR*&La<~}!&8*#yDZX9bMm~=+T3OII zJ`CyQ1C4xQ3$zkqAH-A)=w$Q9{LyRMAg-mIf6nwJ*K6UK2 z4^IYPk&0;FZIgh_U|>lFr=B}KAIQtI_I)Zu?{SY#LjtQ$g%%mp{N9*+$D42=L1ec$ z3ST9GDfcn-{fsy(Qyvz7Z67-SfEn38u`RLzmoN2%O=iVvSGFjUzhOrv!F*28>BL>@Gazgn-q?sNFrRN2ZsWJ-nsPxD5XcBKg zG>uheZL#?#`3RE+({7iSXSTH?u z@}lQTLOqkIHG#xyG)lM}Lo!9{j}k*Eur2uECkPv zGr^Ijb6^L-a9SN@M<5x??#!3eqTl)61D?~nkt>3NNI*0DtiQ}xDE>O)_@SsRZ}58i ziY4ZY2HtxLgdtM!?G?VVz@bdO?wo#Egr)%aoG2o(4D<^c${4=xU;3SaoWkKZ1d3^< zROddN&*znqP}D*2Lzl#wUIwvThnwwpMY^jT3is54KVI>IucltFMZ2iH ztTf*C=^Yca2GYLYH8;*_b@}w#V^)<`S z%zCA=&MIgDw{Sp0*HwYb=5uNt)$~gE?gQ4ikRS)JxKYfzqP@~(#P_E_d;XuJ9Xq;l zdTWk`*!kvpIW{&8^i+z`q~!LuDf)x<&l-*?K=bJ8(1-=QgK=%$y}-Xrlw{V@DHJyAB_f9YF~ z#hES^B>90;g0H)MtF&-%DN8Y%UMF<`4N_XDY)Gu4=(zpvv$_raOl`y_GMM^w8&gp7 zsXvImiVovCVjPFC&(h@QBq>o6{G^o~B9SBN)l7U9-?TzPg{rD*tqKat@+TR_NYsL% zMQ!z?=$R`<+jFlBQO2_O@5hk^{eVXr{=<$C?TI4mO-H?qf8J?tgcKZ=_71@k6CDIm zo2rI~W+@7J8W_uD?oP^q1|KfC zN_X-5&u1}&^hn^laYl3q#YAB6^CJbeVFwg~=#!|Po{h#LPA+t45CzC(F&QADXcz)S z(P_Ve5fBVMXTES!OApHXxil~|^%f5@CaeBU$p&8gM`1bcxv zEh1@x2K{+dz;g-#Ld@!hL)%#_WhJawri<@Lz)_^a&}fRG0Qw2v=PC&6z~omux1hTP z*>*w2R>5v;(4r}(33mO(0@Hr@#9)-JZgt|E4^V+I@4^T{|IlYBEco+H!{(ipn8u)* z>fz8%RATU}tlc}{XHma3^~;%f`NU?c8gWzdmntuF2T{?c;4+m7Ovx0FVM!eDuy`NBoN?IgaV<|M7W6LkVVX zij6di)9Odupcre--@|6Tke)Kx?Nml^|8e+VV_F}q6VM?DSc}`@rzP|=Q>SN=+X+*r zy-AozkJDf?9u?O-lj}Hs3BTUPG9C{`F0yA+eB( zt5vs{R_y95D_yen3UT@R5Cp-q$u?qz$kKi)k+b3KsFe}Bdz{`AppZbky7K(rkCX-( znp?3<-i=1H0Wly{1T?Xo!&Q%*y?Dt#WWs6)kTF zx!<&iH;DL)(%btW=OQ#2TZ`R_={*!gOx(odS8GkapXbsw{JNxf3=J~LV2@1ukO}y? zNS}Sqd}|6>Smaunl5ajbJTCvhDV@C}MDk^VNWKI=aX%ulLa-*-Ws@mA`xw7>OAj); zWVj0fG$vxG%5!G+JIK_-EE_2kxcmAbZ){q)M42u)I0W5B-60UkSQ>scOS)gRG2)Bj z9~${nK&<>JRr6xmbZcrv2_*%#wsQ4>*b*7LBjf{*jJ=xLP?Vx#LJk6`%b%-I z$3#G~h0R+KH=Q}e!BpNge}-HP={6ZKzuYvRrWSQv@jS5(tIQbsQaf{ULHOGEUCa1U zE6M)R^fk>8yOIznZ#qI+7Au*py(~3?ZH;pP_easE1}Jcf@9g2sdg4OGm_m`;8HN0> zIj)W?^@YkAj=Q@f4(r1@2HkDKw>hRq+|di&v87Hq1y_^NHNH(jkBb%|@bq;yXM9!> zQMU@f9CAmXL3MuoEcU93%LnGxW#m;|ERM%4``GQAk!4%Uk;ZZloR($HxqPOb@4~8n zD`tVSrV=w^PF332JJz6;ng5M<)9RsbjUR`8-1YYgy%2Cl6+n{UlaPqg>(=%n2)g<%L!-PPN^5p5S0 zpx`Cmj*tj3lr=fNW{&?u#V^B1?3!$vi(M z>lopmp6YD{d4rnl}rmgvj$po1t8#Eqb#AE~-* zSuRi6?n>r`f@4(Yqko7=b3N|_Y31Fe>A4@C2hf)E8(Cyu5SGs68)Tfavg@MlCRM2* z{8xwhI_gI97&hRYTHBU2FXS1#K6-LM#IL5{uwV>ge7KJI1(Ezlv)|@@d<+jIybsDP zZ*Y#j&MV+P59SS=O=%!LCZFGD;52;qDq(K@z!3tg*h93^R(0QS_2kQ&Nj!#hJs@N4 zf%w!syh`cw{ehV+y~nux$An&Qh*OR4-`wo(F8nIM%MIr z8h^%3US{9G7lM3b#}QAFYZ)_OJE?`Jy_VM&cP9Hxqy7SAn*FGu zj#(O%HGoZ6H>{WE^lnyTW*7C~{`#2hx^gu&z*Ad5K%vIK=^zrBi|Pw=cpl^}r;SwS zu)2x#*oo+b9qR$CkPOoyjuJ}nEcF5Wl1;r$o87DIZwzxAG360trJYl)``2P)Z?1|o zBqEYSac7KWMsF<>yfum)f1dZI{}r4>bQ8WYW@fpa>9>1LH>-1NjUv&F?91t#-?1dd z|CfV}f88W_e<#@)uc|1~vr-F}SXKfwUb?Kg6KJ7mPX=nze1FFm@nYEbOXB{$FXv4U z?uVG49d0(h$yuHEH#marC-j|RHDaHg+DU?B4s>s4({U!T zxaxu#Z_A$XC0SYP)1Hm1qWn-ke=?hy`ta(N)M9Web4}OaqJh*gh@aI`{%7F2LaiZd zC@o#~8MmXE^(Aa8qRNK z23Mn_$UJ8=`s!+G4!e4mqRJoMj^giG#|Mgf=Em)bxFy?UGr;3^x`eH{WS@oCh0E^->a-er4j^5NzK^NB*I$8?xryQBVrx>&{-0VFN0i07gPA{IerF0Zg_$rg}5$+vT#sn z5RC!_BHJ_leX*nJ%HZ#%Jvp-V-&a7u5V{qd2{-fiy7`}9T*~ve0-@-IJ<8G8zb_3* MiOGvr2pfF+e-_@E!TBgOCTT^o)#h^ic%sXgo+Nf zrWRHvARrph6&hwLXgcw2e6iSAQ!&>_K^cx?QVtlR`dAKQgMN8=KZyyY1i@91lmz3T zs5||Lv7uoog+#&7#lVD2aCE%eSAU5L}GgBV=sYWzyG{Ql}U*w2v$17Zv- zaCaA46x8+i6MuLqvJw*rq3c1{B@;3a7XK$1G+rUB?1j#^cKb_&ySGS7-%HLVoGxBO zkeu9n#k`kKIe31Dp!O=h8W5*2AXs~h*&U1^DN2lUxe$t8ARCN7-3x?8x?SzSB6?fi zMWWt)^pK|Vix!G7;l+Pw39%-_a+n~Dd8t9ZWvQ*v2+>r9};dTo$hN1AS5j|{1K zH5VkYVd z0YY&>f+#3Gs!!L9zakR+erB|QE`(O$;e)81`u4*2%)KMhq4?;D;DPi!`kJFjfoK)z zW46B`%4vY#Z4-lN?U&Rj*|+cJy4aX=I$(pqZh(0SLWO*?$N^FDBcJd$YlmF`k=TIY z1wjYvxQ+(B)ED4{`zpje0M?j;^bIVzL)Gr{%n$7igaeT14rN9V@eZ&Qh--c5a=$8l z*q?;7qJAMr6g`Ncf^jjR1rUdVeKBOlh>gO!F#>21y~5AAB#PV#@aV#YieyfxP4Lcw z3OPatT&$nzgtK$yz)*yO^@T2o2cR?qz6cW-{IC-}5qlsZMwSZ64}lZ?lm};zHyLms z$SW2>ScEJS!bU1MMZ6e8TEO}h-Xf$o+M1EH^tx^lTeCxigL$AdZ13Mmo*=xCtcPaGH{Q&C4_D1A`(k?9{LnB!xZz+Kz=^0Y*SD$pp zbP9LM!EMS7%`L+1+N9A0*96n#(zNeX1_t^=c7o(DvLO_9fOMC4mrNG~U#xD>TE<#1 ze`;GuTc}US+vm?wLIFbAo&H3jMA5lfx!DG($o-P0ti}b5_{Ow`Eu)-$fBQs@Ig=i0H zIW(R$)HG5x6E!k5Q8mIf&THj=6D&v^dx-GC6uaf#c^r?z#7x2|qhOUmIZ?Zkwl9_=~6y-kabX?i>4?D`+|B z6DScVI4B~Rnj|kN%U9acgc*q?6f|@v6j|hQ@jxAuD> zNs&;7P(GoEp}fXHNudu44qnIke>JCaE@dobE@iUdw(vgWJfuFv#%9NsNkvQ5W+pHW zG+8zNZQN|^J47`cIG~f19%GiYPL@r)PW-MZB>dx-V!?%MY>s(eO8G+hgOt?QLG{C* zQ-7J27NsBmIuu_aqN^rSCVo#8Q#DX!m^GYbV#8q5{-gXodUo;%;%M;5b*9~-#JtCR z#=>hRVGeGtrRY&jMrBz2xOOh1K8IbbS;bRJLa<+^Skz1_xj<%;ZaQ-ob?SPOW?p*& za~^T3z4EQ9X3}B`R~6T6%aoT%@=@jIW_*naO->Cotr0D04ROtS4We=v&CEY(br>}WzuQbc zTa8$cEy*s1Er~DHFBzOzorayPEetQ8H=H{Va=USVb9^{5-*D@*?~)p!nk$`7?Oa@K zoN{079Uxma@n|?X``nz}*OdC?S*&|g&OUh#))i({5Pc)@fJrfZ%}1n4Pk{m z(XGLrK+^aEnrFr5l4tJw_&b6%0Y|}i!9$^gocqo(;~e0bH-Y9Aflj zJiEil$s}|V?$P+%+^!=x8miRZ-&Kwl>_@jT6>{XkvJQAk-L6&!vn}{7Ru3Hx-4E9l zloXt^lLU0^Jb1bp^3NlNQejh5Myf|9X;;h37G)Qu79Gth#@KhEb_#aA25(2a`t9P<(Hb8?slU~5sVVL_8+&^ z*QXBne4NqQso6p{E4ITwIqda!t8!K8`OX;5nYZ6>XW@zAdn0@L>c~r|YAkluIw}rL z=l437n{8a{&Ffj~hw9W;h*qhZhCS{__+DD`@9UT2mgbg7mXdj1c=ovYcqq=!+ul!p ztopYFV;~X;FuOao%e0rB*4%CLD6nR&oT(kR-Ky+bC`UUe7*#pg8f8oCDYt+3z4m(& z9L|~BXeCq++Z%T&wc=`3PWcD%g%qzBj8=Fs`(`21R89cgWc?t($3P1ViQY|_|%V>Qe5 zS_WB0d${yGbq&)O>3QNp>D*|1=q&M3K`FalAX{tqTg5}(O`+qc%jxd?M3wfj1x^Nz zdV8t&@siWxw}r6xs8`(!kr#t$FqO*+f6Ruy7C)8;{)VkVZ*AG1j-+DSmHe!&>AuOj)Vl)JJ^S{@f=Go#z0OSkrNUHG zc=p_l(+$F%+#<8>vl}=l$_A9lfy%aNk+2Vm;qKO4p|oMXMMV z$J6&w1eyY^^}F>A@4>Go6QBpG3vcJODoroNTNx*gNP+l|nN_ zRYUWt=u?pvZ{6U1s3t zEQ)2L!R?sGljZX0^U$9!gX|edeR`Rda-O56nKu?Dig>$~M*sau)L|Lgz`TVR~ zs=JDdvRhjOb3`xP83JAuX6z?!D=se*6x3dPI&>qXW*&OlH%Vcit=ocnZ;@v`0u32) z+%AG5gYRo&9bq%S~lB8 z&9wgVU9O(`J6X3H(I{tbV6odoVwdct@Jp^nr`bro`1myjau9Kx|JT8H_myYkre{aQ zU&$5GD^wrM>s(Z4A?``%i*zl)s6erO@vDPG?gY@GQyn5G$K)&AqlC?wlRn%I=;I34{dX z>I2`BU*GxOoy%rcD83%j~orqmHYV{gb1U@@SBLMWZJL@>ES21lDs$VIU(N?DW0Ou>e~x1_gi z$?GWYDCADHm)h--Vj~1ZU9pluJ2h`^C(Zh~l`W&P1!7&8*(2j@oTX3e6d^?VqFK&a z%zl&q?jMiZjo9ZO#~CMJz~bT1dMG#l>vrMw9=I0nP3B*iZ=!5hq}^Dn`J+j?#JIIj zU964XQKVEWU%X-NqDU#zzE#OzC|@`JjxN%4b~%i$wj$1Tz!m)b@{fIkqw9q;%zCm< z&eOz3tZMSG(K!Xts=Y$Ir~HlSE&7cf79}1n4mCEtPm(|!TN=NM(@V$o1Lh{`r+8iE zN(MaLMfv5?zat*wVr}xNtQ3Pgb?xuX^p|?#uR? zhJs!=2Ia1jI$XyHda?toN1|SR?}c0(Kp`rr7`olN4mm-RG(o;ifcZrPYs1}uETDkc zsX#*cvw-B5Kp{CKzwIGH!@d(xBV0TQ^;Q@65Tq za8w8OTpMW_rrn+O*lLAOo^`3KnqWa)9PMwLw5|`rWap|Vb>UEAsv-U$Twt#v21mrs zf9Cwt$Z($j^i>WLJ7Iyk*`o4{-`}`Q+@~HZ_RC@R z!{QmBbZ{y8T%_J%YF`FtPb{%=8jYlb zs*skoch`5@4F3ggI5H%Xiq|!bGG!?(D*ct;_l54c`S@IpzwOP-OU}jHfn_^*vg&p_ z`gPHFQ4hSnoo>Yd3LH`pg7VX?9ijnfc?aHSeo6G&z@ND)2PiAhDdK`qL;=vmSh11j zVl6@_u@D0qJ8V0aXwYIpIzn{$i4%hdx^N8SxYr=V{*m1X-G7`AMmaJtD{-pA7>aib z_~e2MWb&Rxp-4w2&T|Qj>`bwYR=PQd(MIaVydnm~%Z(=uuub8OS51e_lFiNoD-^~x z`~Rflbn1+5kI8IUZ-;MTZW3Thl32v^!|I~vL0!WrgrLRpi3W-#_k8I^l+uu{l^K&# zm7y3)8K@l?8)h3eqkNz~qPnECrcx+f3BJ}W^~e>EHBD9fbEo6R=b7JN-C7dE;lJKG zoSrt-K}3@mns%KA&eb<_S-0Uy-*@`2N%TgGG~aqGc&a~nLX-uuh;Q}1WIrpA%Bi+! zrOo>4)cfg0=%l@G)HBz8|IJ>#+46V<*|Hsw94T=3e*fV6Nb?5n+v~ef_23KDFYtv3 z#?^}$=`n=8hv#pxQAC7<8j+b&3nj;236@au&easH8`lwfS>!#EIV?~7vl7lp)~yBm zXM0CC8ZX!iEbC8r@F$;!!4$e!JY=3E;2_}eA|N87Q)pAgQ>aD=LLoH|G^I7rH3(`N ze|sAUbQASXc4PO6?R?+8+cns;*pJ*m-N4xppv@t?2vQ+EAQWY|QQ_3-2^$ghq1PhE zpsu9??F%WC+pVGuR`4A_XRgm|}3po@=hQL;Y zh41b{OL+SnI>P$Zx0QA z$bw40^4aCu7D(pwb;=$Yu5iTPm&2?==}j7_<}ii-c&bfCpY zZ0_V_$IZat>gr1G%0h4JV8+12#l^+I$jrdZOb3jhb9A?HGH|1_aU}TUE#Uo&|bJ~r@w zHuRs<`u7w#E`AtZhW|NwewY!iF>(+PK@cfXAr-ezr-Qg5)OF*pGd#!cy?|`rv+bVtKBFZl2!dfoRb9Qod@|3vVU=Cw z1S1xML3gFu^&9|NG1@wPRn*n1G=G~8#1M7n_w_%V{2mX2$5B&JLGvZqI9DxGvtFz% z^nHK(wA~9?RaNzVGp!&I`32pVQw7@-YwgnQwAUCdEctu_YEtl$jQMs<|{cQh&a`XlW2bXhAXM!lQRKB3rb7~N*v=4 zW=!o+J&|aFjPwZ^N?fpr7>gkg;}bH{4_s10x_Q5I?9L z!cVDTxU^0tnqZ=WU_X&#N}>8>a>WF}L43nx(S8ukouo+ zNCBfM!gW&r2?rrS=;y>&jSo5lQh?xbX`T%IlRPjYLS^KDq^>YP2;qK&g=GwWhrmuO z9RP{@2@nktv_Xw29XP#GKl>+)pMj~^f?tvT(Xj>^jXG~btsl!93j*tXmV_bxSiDgV zXfzD#HU8rj4r)Nf7(`0w->Yf(5NDT1n)`nn`~-+S93fT6KOJBP8Y}d^ySg7bz)T3} z$|q8A^D<~+4@Q?ygX71|x8Wt8detm4gb+yS^yWVQC&O*75DGsu{s!FfX!9-J2 z^J-bhD-stC7KKVmgZYog?RQGDM$8G=B}IoSnFJqeYik`HosOG$Fph+)tE;#b*e!74 z?@G?j&M}fwU2#;D=;-Jl<1HVrb`x|gEG#u3*5P109VnGN)OZ7eockm1`%e zuP!eSbg3Syi>stL);My;LTWIrxiqI`f*M7d^>V=8msv;@{(SMb8Rq~yMiKF^@=I|* z=^5_l5w5^5B+Zo@o^K9O2Q48L!t$lH>sea~6rZB7M3cAu^G4m>4L=7{n?D-nG~gH#cP!Y*}+3COb-0n3i+H1bd-&h!*l3U%ej692&;&d2R7r1VguG8RgBR?zj27@ zKQ=iLkpJ3RjYO&s!3~K6jA#NYnaqcr)qXV8Fv^(8K1M2`#FU1_6&Z(qh`t)o7#K2C zEdqvpgXZ*w+x{h39LAtLSsErX^iMg=0E0e>EhEPLZ+tN^(E9)FbAkYEe~fIf(lk>n z*mjO7J$PV_fdH1v3>JKUJIR|Y7*keor^q@O)b|r9%DYxkvH;X*f(q)JqnvlU&*(Gi zu)ZQSGkRv;cWG!q`Nu@`v%S9*$?LdnN3LagveP7PLjdy{sR#aTBB=x4(~ZT{jTs9f zL^iMj%i$ldygyhWwp*@S+^@H~&5mtT!>s5ucYz}yWCoRj?`uBy*v~-KM9KUXBP&M1 zKv+rvFrW!#)sWdRubcI*NGWet`Rj=G=uatrrI|!SsRIiA$9ZM`0J+W>+h{m_USV+|Y7;bbbNC!?55>@g$DFnieJl`yiK%2j_<@k;X^-_HO6v`*$ z17jGK&`6Kr9p4IUv|5&)UQ_7ll|={Z&;J9l+iwNcOh3-&|>)(~|cUnhUt?FjHa| zV@(@iwNy8l$qp)KJ@T7}cYzg@J4cSrp-S@4pFfjRMdIKi(q4Av@y(Lv>E-BXXg$Tq z7aUKltgL@aRCF@$AGXDOA7zwORSD7`*q3J%GBlnu&#n3>%soS;c`eV-p+$q@W~uAC z2dL=j5lD0GPM7}tAYSN5=ddlR42U{QHdkYnrRl8)rGB z4~Fc>jNX);tJXcE1CMm5t6N=GUV=)S$r<;n2=fUZOnXL+l0GYpHdNxX2@xjyVj}o> zjngF;81YM$16j#iCj46PSAb3SmphyrLbTQw#-;My_3(cjZLhbJlr~8$@KmpZfJm7@Q zAt4d*PuAQL6BC6>1$bf_b&AxHrRLlSX{f0^ZVon!V*8t+|Inc%0s|3n%`Jt^d);E( z@*v=_khFeAO6m|>o)r<#zvJ3Wv~BMb)Di0ZSy|%dD+gp+&(-|blD7#rk-iN{H_{#^QpS1 z<+Iq=PbD(`5b!Wh;=50C8T_72H2=giN$@L4XGTwf)NQ^v-HOliDNn`TX;q4>*fWcI z7$CoRvV@7Tj57KSRu&r7IsR-XR)fPTPW33U{6MF*q+foR>G)lir+iuZPobp$j>($n zf84KKFKkDza-Jk^%jnYutKl)DR}g;%0d$j==wecW?xbhFZBH(Bs|G!%QVp7w0oIbO z1oWR8CX?H}T&^8Vj&f=Io#1)*I{yjV;<{#Wmq0`H>6SXqFt!-b7Z;R=)pOn=8q=|x zET5**;LAB}{PzWBmn-92#;+Jn9_Un)2SNWV)JAuDI75`2jY7)C;`wC_#*sk*l}&0G ztDVz_YFk1VFkxZprU>}@XwL2Ns`MFC3mYht0&JEO#?0uqyt=I29Ez|8Z!#F9!U(`O z0zTd$R`9ETE)kWl>Vcc`B@nGYp~q=|7)tH{KQ^pjg0&p3h`+=WFeRLXPgFp(I}OGN ztf1k$@gw~0G8$Qn%%tq6Y@irX@P{h1A|EWfvXm8Q@Gsj8e@|x6ds}fFKW)8V<2k7o zc{0=|S&Qa>GGA+Pr%|uO<@2~1<2mQGTByEJS~+)l0ZH)0Cl&fwdg-ShUK~tad6G_> zL=>+3AXzf$ubaJeTV1C~F)aT~m!-o9ma&au`0Gwcf|m_Qfrn$g_wU{)cp2t)+mReL zzem|U&l>loC^DVa-1qT(9yYs!5!YSUz1JXBU*E|V44s!RieY0Ey=#8hcaeM6# za)VLYv>R*|h@J=*BHmy21r+!nNg?(CcAicae@E|o-qbf5Q!fRT6#(IuF($BF6z^2? zotEw8R#D65#SJ01R&Fyo# z{fv@?fjTqS9JGvIrhd<1C`DGanFX%f#t*Yh=eg5{^|5uwF)m2$so!SfJu|D`tRTB% ziYOlrFB^p1;K}KH#WDR9%)Ln6-~`NO>G=0Je|i+?9U*eRvI5`jQCU@%*VSO3Jd&Re zh`(ewCPQBnX;8me=TGqIVukkIB<%>n6}PysKd9_;sb*R3BTW6YI!!lo+O~hPCb^BN z^LD8$00mkU@4yNTMdjN=J~~c!=+BvqAHm%@FeE{;d^73+A7So8(IHU|YM23!OfyY>^zFvvX ziu5;V>VTl9L+g{8-&qV+1QIr2K_d*ytTbg@AC1P|dOzJr1$3p6@w%?qOT5!f3v{$S z@Y%DJ{gB!ycY7i(!o1oHCfJHz41u-qP1B|gujT*0{0rvP*2Z85!$pdcV`mBY@^@~P zO9GMD<+mWQD;+HK6R_V~j{9S)w(YMYcu7-R2kY(a4EnGXaj6%Komwj)2NM11VK%ES z>lVe&^X2aRdAL#$A8HXmA=u34X!Cb#)}6TzzuIk(fNb0ct!*|LT@Faa zjOI3@c+RR_ex}p9Y}p#V8(H!ql5{RnqmFopA5a>L(q?eZ2y@NZ28P=ho&K4p0|#$b zQ#pCsOZQ#%zKeNi%pT&idQcT^d>(i4;o;rchYlujqWC@7d@l#9YgpmAzfUwVcXs?% zQ&XF3^>ig|0rc%HtF!sMEu6v?`f*lWZ}Y92;7w4H8Xv;w{q>%Kp1v=>Oub6?!oZMM zHGFj66U@k4jL;<Z|*Pdd!SNocxFQ)o2H8E`&jl}$qh;Xe#i zj?R7Gd1x$C&*WA1F8c}kugwIWHOmsgL<wBe%_-gUEn-Yyqzyxp# zHP0Cl5<*1_D~1Asjs8dwtehnQrP*eVqgrUcz2FW?`M;-eC zwp1vHPI%bECcahO-NwBYLc}UV#L9%7i>jZEjJy7_$3XyC+<9G3>um448s9Ny)%NuMcK)t``TTTT)$h%FSuF4xdQqI^ zaYPi1YZzGUkOC9hq4Fv2NrEvaR;7~nBQeckLG6&d$Q7OYwt!thAV&kEnvST z8Ua}$(8{zu9@G69k+);y4sa1xB54h%P2Tf5u6QII#hET&bm$$E?GgA#iYPb?x&i>} z+a+#beRf!!Jyt~6u!)lNSKVo<5a7uz`+}tj0a+< zl#6J!>JCCkqW%IF++rPD!mu)3si;7tDxO?!OUA0NeBmb43E%5N=q{qmCjyJiN#~~%7#4x0HKfY%@)` zQH9!4g%!xyGumavIBmj!JYnJ%Y9w`=%?EnE;PGP9YX{exV{3pUn)TETmk=U(!Og!= z4zR#5+wxW?n|e256eRQ*>&G>+-B6pqt?S*Szln9NK&XEcw!Zwm4VkkZ%QxB*-SPTG=T1-Az+!r`GkL4voWdo%FAa{&828-zYd)`JT zLC^}*&}huK0RR!l<3U#p02U_!LIQZJx}dh7^D~5rVCE~;$`uZ%)KTd| z1K7y`J}7R=(-=?Idx(ZhLRZ*MS7D}!V{SsC1h5VTs76RCOKZd0ccK8iLZ7R641UcQ zks{)7SanU*Psny;F*B05K5ka9RQ2&gnKDJhu0vW}=l~=sC@9{AC{xs>AY${u?!}rn z$9WV_kk^9&EE?BB{KbBIb#3j`JC7p=MRTQg13i!tDC+1Sj?-*WNOS@ASnC}L0f9uc zaB6A_$$mSJFgP9x7FI{@aOsaFm)Pnn9BNem_Z`&Q>X$~5!lflGdAEDdAUj8Xby9S{ zf>`Ahw?M^i0&r2|(bkz53v)-SR6QRk4oGbbboANz`QVV_Xkm9T$#j^(?yY2kE}d03 zGCoZ164vX#jRNF*SW3xXpT~W}-d^@=@7IgPmYT)}uMxP-r=clkZq5m4dU8(5qH*NN zW|=AD|6br`;u(Nb($M5<^^wKCnHj7gdmoBCpQB8E`*2L20~O766<>OzGMroTP|y=` zm%h022T5U+p{dS+%r2TsWU+y{#F_O>6a_W2UY_&>`VUPTPw5by(#;q=a zp{M2ws*jz^7>D~7`1*7^OsEk@*s?b>GZPSHLxzFL!R2{#fUK5G4&AbQVYpR^vcC8?69 z5Q=->2PSr8xUA8VB%a6yQ>l>6zq`Au=Ee!RD>g@*YklM*BqYQsXGJ>{F3wmY zEwxVyAlIvn`*&E3enc?EN-!{$p4%pgaQitm@UediEGCWi?DKK5Z)~U)=07E=IP3ya z4dnD0|4EvtimggZHTm`Zj*nF+#(fBHjj2I5zv=^GYeg6{B$+~1tzGX1i(xFnPBP*z zD;B^=CJh+k->47$0xh2Bw-0AazPk@cGj6)Q3()!LAJ z74Z}-G|lJvh!w^B;NP|?ts6!wqARy+vmX`yN5$vKFDh&=V@1PhS6tHXThHAQ`DVJ5 z1yBGak(4<$8ZZKLD1WzLqK!`E1y+w2e^W)%sCzJDRU|dYij{?+eE`B`P#2k3QWU)& zD9l)?$(E4mF!JCv`N1;Drj_-=Kr9~Ohx!4J^q|6;jxO~{dCZB~w4*ByC-usMyFXjo z4#r`LVU%f-7?iAel=TZ#3i+pzr`@egZ?EHfraV9W%QcZv86ma81S z7)nU!0>C6up$=O{e6Q+5IyJq`$I1G{(j3IjT%~%%O$FvLK8J#a@2cMJ?rTrC?otY+ zh1Zu;GBv*6fGUMt$_AcGij_F7*elwH3DAe@>xA?~rDzHpYI~SWhcP0}@}P#M35x5B zyslrScNvai-qdY*pt(~vLgYd1cOqxR;na2Sy&gB1U~7CdwH?b?Kvuzm)A?|ENOYg} z<011@i+@XoPpM4&6}XZt$GcY$wiD+vl87LT#7nnO_v_dr-WvD8NT2O6)%QGUcz{!o z%RE|jjCLI)OB+0(Ws~v%tiCbRj{#Y5@t^g}wxs5l(LD5~6u1l?L@y#}MdoKK8q}s4 zF#h&$k88S~?(r1E`kc&aP9KI!Qi2dvS*Y8)6MU_ofP;d?F6aI_TVma7TBuV$g5aF* z#jgC^5Ux+#*8Syq6R}k)J`FwQAI2w2C=6P;uF6Q+gBJ4#wNG*+3$Hb^+PzPIB9ajL z?y+`$)zuTg=hSshJz5IUDgULeA%0{V#?)_*<7ZxH=8%~w>N(*16#@r;Y;^S57_nqk zcrOI4FnYepntpT9w2+h2R}%W8>h{6q02}Bg&fNNY+eWnSiLKkD-MX8Rl@n#p?N<2O zq8Vb_%@kuX3If)~XbQ46zh$L@z-TtJiC^X`LT*IfM;7V_MT!DtM4dvaKU@(^U=zmk zU1dZ*;H@Yv6tePujb?+T)o#8Q(=%Cj2`zE@PqA#MHDu9$?UEYQK(_bhP>!G{7i?RA zV`bu|RFpFlFz?@5Flrw9Kpj<;CjA&b8`2iO?h9yxO(1^oi}Ygx45q;@!Ybz2wSCz4 zvbSh)yT)i<$658HxzUeVs{p9jJleKlqiO(wm5EGw1)}R|Q<>{18%|YQlkx7*LT#mG z)oo>SrBCyzFpQOosf>>gmh#a&0hf5fI!gc#H5VyfBIS2^QcV_WqDUGrY~O^ET2s}b zVMiTG=Z|N3iv!?bp5M@qHdVVKLy~)Jxdsg5dr6sxq>NljyXobC#Zh?RNHUd7n=rr;E== zci6qd^ECmy>;Z;$7dl^$?}A$`#Ta=r=)l|%68mZ?=x z)6vl}L^HWIvRg0JxtwZIHbODk1L#E?P-G;&Q?+aURaRzcY590ePL7ej1ZC~2Tw^-= z<@@B(Y#E;F&+DN?8Vg9gT_o?`FmxbY0`j1!Ja(%EMP+4?POc#$Zs+v!#`e?-?FIyk zJzMh%wW>WGN3cov15mbTDPp^@?60IFpiS3qqw**!spC^s@ACsKR!&Z;b7 zvDc|))hrfqy|U?-*JNJjvcp==vPpWmkUxY;xy%)*1&PPKuH&@aqgPsgz)%>v7>k*W z=j-j@=i>XqIRqT`k=DyRoj#BI^L5tuZ2n1B*U~?%+NqdoUzB8$Xblh(@%cOopyLPW zv|zqu0#Jz=3a2*~Cn7HAMC)aj)1(8u{vZEqa69wnbeM9&Mx*sF5|NBQF0coqEXFWD z@Vw)<$_`kh`Hjw&qefjjpr{(~oQ`zLOkND6QS>ks8k1=0;vKJ{{*FK`Rg7%QFmVts zG7cz1cDn;L;@;lgAEGAQ9bMwGvY6@N?k9S$)QZ%nUs4pB$GM8BdO6l3ylr#;Bkvu7 zf<;9?$rMbHdc7t(*2lbAf#)t%M^@p^1G2`VL8gG(|rb ztz5QPFpHrB+vK^aoK$Snty}V=V6Zd!k;4CsIG?u?1yZJcn28_3b34+qfmq%rChq!iv1<)=r)vtG! z(r#~F6=|nA%!;*u8`4Pvh8V23S(7ZATw^I`*wWsuHB&*xX2eVuT1dKoP=OL9Y%JYy zgjs7FH3_x>9USGo2!c-yc81|{u~NQK*R>EE69BMENPIWHR$guB{pL~AUI54A#{qwS ziQ`#(yo!^df4t~Mj9*Wx`Z#DOe$YX=KtAE9$>RDo?28m5LlsUD%0mfsWR%~lB=Xnt zzN?Poe93w~T+MGqh`O-cM8g_+|A38loW`3}McS zCvt}LJS}^ONK3ED?Jv8f#aUfVq|$$H=d`)z$SeIFCdDvYANSG|Tn*j+18IH%Z5enw zkPvtRAib#oXb&3HRA4Ww^W%>jc@a+doQyx?XPAMyU>N0?l%;eGeb>0}+cilPr(r*y zYaRE?>$z_>zxUH$`)&Lhg5m{FeC)Zc*{7Paux z2jBCwnb39Ucq$Go6&9aQeq#{n`M%y-R<+&%(69GJCuIEHi7s%Fq6rk0T$Xb;LAko) zO<8zreYhnCMl-mkB0z%;Q7Z(aw`V2kzFGuPC5ui+D(IyQJ+rt?3~RBRqTH zZP#NwEs0xh4fdL2I+2+7?yD`YcguQio8V(0-T-`ywfMF;?sErVy|#&%&jLz&FOS!k zq=yB}ulDJy5h)b9fR5?Ek*(G88$V1d2>cPy!41ct+p5;XgeIpK1}?s2h>w+P$~|@& zRN>hC?aT=K=t;E%@!r z%k?nhYc=WF0#Pj-Kd1VemGr~#!-5qi3|c=j=X2*|=^=OTuH zn0&q-h`?rnSj^CD?ndC**ogRmwddJE_&@%gD&V%XZ*c)o#FDl=7aK*4Bg{D<*JCs7l{of7Hz9_~e)*RM+z2~KQEdJWYVl%tL!eoa4PRk5N3j*I4CU00!tYL-MzEz-b z4YMZR*?HKOfUW)uH9|&4M(W_tysjfJ^ICSv3Sc>Mp(6+cvhMv0CV>qP4%0W&9#-UJ z!3kW@zdx_P6n7z1g?T%VlnLD>xu9P68Le2F=VisZp-8m6^zUAp<-ymNLj~V1QAgW} z93cRQue`AS`Y^2bhVl+vRvmaNh2ZD$7+ehd11a3+_JNOJ111MKwleKJ`b1 zCjrb2+>87)O8|~;W_Ff~{BcT#VKkHHzT-1u-S(_MBqBRQrn;W@pKv=ZuN^oXb~vIs zl|D(vo*iNqdYd@8fzu2ZqkBqvFSXZ#!adY59oN;_n^oDhr~7jS%`1EZpEqFZMUd5q z5|`GkF3Z*&O`t_M1BB>n3(*xEpI;Qz_W%?u%7skCZwFlkOjMud6FFi%xAL3s)u2KY z{_5X40h1U~jwFV2*8!s2egcB#-UJHY_SaL}=kCd@gv7+rbdK?J>>0lAGnC>~R0UECgqH zDIgl{KCKo#@!xChjgb9CRtyO}2IEX3aN=NtLbnKS4yS_|Q$95XM+_(@^^x`r_UKQv+ag_vF^xn$HbMQY9}gvN%XFC(X@dvH!@QFzC5c0p_<2e8h*2w(S}^Esgr1Q@ zu$Z&^!s4e=?BC&Zr8LIW6=J=cB7;P!jT-|v>-&B%wcSJv>6SlrUutJT zR6u^UHdFpWnq9_2h7k$1jT?#3FMBG6)}Jc~aC?0(eodhLbL0DZ{GP;sXhmHz4`+FM zrqg&m_QzB_&2{=OWU5aGB!QQpvOWy>>+2^!|F3mcXt>UUtW>7#Xui{|li3#%oxVE* zv9c?~^{(e@FE_&l#Mr43At@U6%+T3x=q@r?rqnbvjGHhpaVvj_CDZ%(n3~{Y8b8BC zJQjSJ8~=tN{?m*wQu_8*PLpIBjD^U+8ke2u8XN2h3({~KbRkCEOshoYldOz1yd<1{ z0Lx&k+wf2WLRx!?`E@|P3wh|$OgwkVpSs~Q2PFBq5|B^=MshihNQwk=n~$RU*(sqo zsNxxQsw!WYZS5ac?L-XgY;GQ@HX zgQy>=5agV4t5KGA)i4jJ^St%qA>IL_JOtohlEJg&!cy7-OS^qiAB>!128UBa(J7`& zknbCi(6?JS{Rh4!eB08&N%<SZHOQh^C2-eO=g-d(=34=w)6x1IbycC7aL~xN5LO(7;#SKrg zB{4(X#;%J>4F7`g%p^+v=^lqL4v?V#oxbJ6w^I#f$zGXXyBuwW3(ciDqFg8fkgWlS~Uy^Q2oW3F`5DYXGScBFL=BG(R58k%W+Drxa0lajfw-9=~8W8<_uPmM+p2b`|j zg#p}3J6#NPx84)+T;ylvPEhPMy+{h>l^d}(0JurbwrAEA<64IkSmFSDaJn z0U!ODeK*X*gE;Cyz9#Z$vkP1T{K-Z$62*N~LL?HjFai_<-WW{8{nBmQQkjdSYbyOJ z{iw7?t~lB*;U|JMu7|W7ifHc4gIkrYOm~3zPg2|u)0)3a&ZT&e;jkXoqKl%n_sd+o z0)MJlrB_7nGKJooAxkBI7%jzTzugp*4*~ZA`WKKZkjhdjo6oq{OtznV>z)I4l;Q4B zYfJTi0O1Aaml{kxFXU9oeB}I7Y3l#i#97Bh^+jtRa6n4Bl&Cm?w=FDp-~toJ?_l=Z;*qIdh_|xK#3#8xu{8uEKmE|6HL!uTc7J*QkD9=#Ws`)ENv$|~+pCYMn4k)a)8?k^x}u4|S@8O`JnT4Q znSXO{HPm1u^2B0*uUCUzhgZn-RlkIz@SCf7&g00JWhnIiZvxEZZYbFWtC_wX-G@ru z2IW7qGQFjZHYlcxSI&=Bk*7<9Ql~{gnWjU#b9!;5T61&hxVSp2t4WvJj?ov|XenHa zdz4Hm-aS&NK~{OelsusL?+o|0jh36)OeF+E9m=HYN)9^)2`IIYHCjzn%s7`ak-gPq z7~>;TE2jRh%maoY0ycBMt4)4gi(=Fm^2P)^s^^$s3+S1XN#>i0k){VowhX^%VP0sg z?#;b-kA@DM0G80^70R1jZu@DI#?j}#fwvYJg;J(nZ^8J)qiy;{_B9kIO+6E7?~Ryh zrotL{(~d8`)gBh|9xO4q6ED_H5g&EDlCyqaaQrmvg#v*ty4Yq6kBlx$O`zTft?e)E zAf0j8O)&FD1?6`*z#6xxJqvrQX6)SJ~)J?2{Qb9wOLUOKP>6KtO z&*$I_W${!TvmE`pmoE|)P5=~z7o?^@bB&Z_l-yfWiakH8roar7Ocjl${`oC`zd^4$ zEG>BJ7Gs)i*0$(O^F`~*eH6XF=@KaJ;{|C$t}Y^JBeEs@iZSt$15b=m*ZKU8mXe_B zhufNrGx2WVe8%dr@G3%=e2`rZ7Vq=jMj(kFd~p~cZiJaWTB~xk(}5{Qp2|`qc*d<< z)^0GFw>1_SvK=Q8T;3@jlR|cjGZG(>7hdhww#2W&D}&>e5Uq5~zq@y9kq2cO*WN4da%k8Xv3dP!4x;C-POl= z+wnWQQZiB-F1U>qpNx4XpY?;IiC8wRi0^UX#s&umc~N%Ia?#Zne0NJ#kGF=8_iGjg zphc&3Fw`BCqA!;}^-7P5I^O%#8DS1*bHX2r7la4V-_fCocV#vnR{dsv^Sa7)=%5S3 z$Tj2}j&fD!;X$i?LbJoZzM)~?b$R&ZN3Kg8(eGks<9%Wke_cLOZjBiJ&Me@R-|PFY zW0*joG%3pbp>2cU==Rj&*Bc8Sd)-vCPsk72pL3}aEpF6#yE2j+X=_^+syt)ma2`ia z7p(A^V#fZz(YQeLAHU_5y(R(eP^Rl)H?Qz9_J6+v#p`0(Eo}5mC~;!U;Z+mB>Y-a& zvY~q&e;sMt=NTBDReSX%;51|FefMKux0ljC)9P5^MHpzVKROYwdYsv_6r+!zW=k4) zV=MVNZ&a!i5DtQFNm^SIQ-$Umv+e^^!771RR(R)qgbnHvIu5egZqJsQT{HMb&Fj1i zCbvd1GCE{i1f3SYBYPeu3FFeU&421^{E)dw$|g4w53;m!+6l{Oalz-fn{@Vu_+@>0 zjd?`2F~O4Y+DI2ov1KS^BJq|S`pLYDj&+Zn-eJvW&TPFv7IZ2ce@<>iZ)YJ(*DWsH zSJz)0(4Eg19CPbhpwGmRFk0ZUIhee2*wlX6OHE?rJ|ZX}aIK@`lVYszwp;phsTDQs zm)46@uF;mL4cB*D_Ep4-{$7b$!Yglg<#3IN83ISxT+e6}*IP)rU)en5NU&yn!F7)pwsyMHjE#FbtII&A z7nenLcXxA%bWn38DoRV|A~-hgl~&vW71%)$5}D3@_SJWG0R@AGvaVCK_3|obmxpSo zxoYOUhT3$T1mBI6%c{oSDJkNN>5r#;?EzqiRW_y>SEu+zto>@wn&06ZsCN<+ms4_4 zeebtDz*H28mHM)C*p?x=K`t=Zww(`P7TLj#0ZWtRTzBsBDJe<-tNqmGP9NRHDHiITsH0D1*xlcd-+wGV+F$nkL?#4HR|Sn*@0O2Jckd zDrCGv=y=Yln>NGi<*yV*ngTKfh(F)Z>&l+3V2PxC{o)X;=YSU+<#q19?RzA|KZj9V z8+iV-BBmjP2~pq|#z%KxQ;H5LnbzlacD>o5Y-ft_s3A36kvP{TM86^Q`c>MIommz_ z2d|U8&5n^o(0l^}O9B&NRvg0)A(Cj&LnMP)nOUyMtf=id4+%S&^Wx z-3+gWIS8mC(p|O~ddpujd_sN~Y^RvSLV+0@RkV%X*jXTWSRizl8sEJQlB>2qn?vWO~j~VIbAuPKRH_l#gNE*9qsj&>6!%3vAeaFGMDv zFV9NNz-K!Uem@%n6#NX#0(LZui~SdRE6IB19A6q9FBZAu%}Ciq@$x4c(tQ+h_hsfK zNL$e&1K&_YX+NLb-+m{Zk%}qzQ7|je@HG)P*|6~ny6?n+bXeM-@fR=+Urewct;oK0 z_q~`O$`F5vR=}Ye!a)lXGU`*zH@d1RJyLy8vi-&ug{VKi7g4GXsS>>-e~1)hQ{dsU zo*Y@wfn1<$bv-sikXUdT>APvYSruK4%?`=<*|&y&nW1)-Q)>3RAq)yhpsxx4LePS9 zRgRd~4&N9y&(qgRdT71pZJ3umGEy$o>4IDIi{1qCW)%ZM(_w+qZ_03BcDt?k`1#Hn zvK3paH}W%ouqS!ag7)G4E$%}(fs!Uu8HWZnPQxc}2Sc=UslXQvG5*MN8@#M*io3_Y zs;xDg;+C2d@{W zqigGu00Q*Z1y*^^aN8jBzfeMuA+xl)`PT4lNe zpKK1Do*K<)IL>m9pFUH5Y?~8kOb89RswNk5DhIlc&z~bZ@oz6Di=OZ8?IGv{ApMDh z9kicH$bv2rTz@A1^q2>nok5`pFwAStklPO1sbT^9>D(7x-pcP18vwd+x!CvHL_$LGRuw1(yhl5)|3^!qZA69S zm8_KRi6;V>GymKlRVJNybH|E#^2L?V1OY0gGAA#=1-G{Ghm!H1phi!)O{HC3Ycdq5 z#t2Yna#Y`Bay^07ZvEnaANHyi&~q_Q%-C!o^m(dAy8!fjZ11(msc%^s)b1>1@`G`M zh=@q|85=8WkQU%;r-vEb(0lGKNpBCFQU7K4y+wY+oYTHJE@zwN^FmgVOFPdgTF*M7 z5c?|@9+yvGi$?hzxO1eeX@#8wT?}|li7hv}6unTZEPM}x z@S|!vf3EA1V@V$BR02ecwdQems5QepCer6ZjG~j*`Ek!a-6DcyBB7EM!wVF@@3aOa z>?^?nDj}6jK+05x36@EVJWX^w_p&mShd$0x$%?JE0-8(>)&f6dROA~dW}S{H+jzj9 z7+!q*U&vYdBVj7vH^2M4E%A$;^(AG1s7JguSZPW!%BtWKuizBa(wn-=5oba2C_~8#7Cf~_(x^Q}U0_H?8C{%h z-ZRE~0s#q>3r)Q$`Wsue@1E8ORTAp1V$0WsYH|9-MsSdcCU*1WK_(E`?+Irt%`g`UNRi%sFbED?Y{ccTYEZo z$=NKO_)Aru1vWvvTl*St1U42xBJzQ$gTo^YGg1}@eB6*3ga-dh$GO0J56_ns*l0gx zi|J-^9&MU{;lv=JS)6QamNIp?yW_}3TCKB%2f!H%>8Q6mW-8gk%8Cay3#dr2V;n6N=QJU>MuWtq@Dq0V?&l+J&^nl3PY9?$*Rf*4WEwuFHiHBeFR7vx?$ z0~oCXXf!c}1H$o7dEIC$XlY!-n^30DeJ@^%KIhkTUoSA0XXAxeckqIkP#hq<{;jVR zGWXH8_KioWXqQ?ALh?E!LAM4V?X>$cbj@(u5-_$B*Bgn^Su{v@NN8|XZ!~#H@}xh(4a?(+^dVuNP-jMSwR~(NKSX*fgMJ z+K&5YztAjSDY#pgsAaVl9;XY~>((9VlEUzXJO3^nIh}{y1&+%+JifHO$bZ%>d3QGD z9Qbzuw8$9irZdO?fu0b+fny%?^+T1>M`zxVuI%L8Dq*j$6(F;a`bGc>C$0gKK=m;+ zeg*nd;zB85k1Co}=*9&{q33Hl13Oivv^8;_EFC#Q|44+ zut^_+Lei_l>Le0HkQMtQ8wke_2Zv%zuPH#KFlWkN5~>mPz5+l1V2`28fjO!a7N^`m z$h_#GSAvn2o}Lb9gtpJYyq1p=)jG#^ACJ~JEr}M_0cBH+1lEQZd*WrCCWD> zGpIomp~1N8$pmX-ZLn?cUhm(fN%`jaHR4w4zUAyFkju$t+iYsyV`hXoyV*6x$ea%^ ztv)4=mO&?8MH5*goO$#$rOQ>0`5{3otGj_22IMhhK>76su^$S0|lY| zICg>Hq>vl`;3kStoeD46CTWRPbAfL7iGIsxA`!=vR0{L{FQ59rPC&q4zm(y97G8*w z8>`7`LB{$(P_}Gj%qyz|s;13G`_T4~jW$%Ds1l{z@a3OBy~JGY8e3H##EuOAb{y#( z)x(C%t$%6dqpjLXjQ3eS+OxVL92UCb$lp;PZ{ns67jWNF>96_Zt)c;%wlx=bwm&{; z{_)wXXwup|T)zJ&G;uj=5vz^dY|p7prvg7jA+wX=c%+?y-OTpOasNg0|l8^2Hs)&fBrL`~k*~RQ@Fea^8;jZkwnK3FWjALPTX2H$(;0gO73;+3OZH7uKJ;P%SW2+ejig(N|ZSh4YZXa z*a?!o$BIy{7RFVGl(6L@qh>!Mg&`pksKLDeO1EdKOx7y+B>@Yl5c|tzE6vJpUq)TX zO&+@lo@73?Q@T zZDOL}VRi0Rj+JjFYHj$O*(Px|d)oPsI`#+L0sQQdhBs84%4GH@dI623D z2>ZkWHZnTAbR>ly&Y%YR+F|8I7rDC-(txzrhoZ0bmu(E$&j+7YT`~U2f=FHCjroEo z7}9pwx>s*I<=we)1h{s4=eu3K&K`77)IQ>wo)QL?TPeVgTYykyS9Y%Hx+-_OPgG17 z{3`+>LC(V{CM^eH)yIV9(Vhq=c5D<<0FEEM8C31q$>jIVQX zRZ|a4>)8mCQ9^dSVXoh4L%ESim26QF>TW#9FTXJ$of?yJT>`;wS2^X~V@YcoI3F&a z#*@xtf%dT%EzJFonIO|Dzy=si%=zS30U&OrW}R*EvrMNiA3=x*c&0}Pi^5f1K>G%L zJGOG`neS}k+!MU9Jk`SD0yOODp5kg@FK7C&A$%lJVl_3PffJ<5*5AIa`AM{8hL1JQ zt%bK73#Sb`x_tF%{Hi{pQ;(`M01}ApC`gRdufNkx;(uGTt%`&^>>OT|blz3m)mv5D z++H0IyZt?Y{$->VWK4^w-XKy36(cNyF2U;Kry1_Ej{jzL3+^5%q|h_NCN?8fFu{Rb z7#~pIjg%R81E!Xvn#FYPx|nb=ngnE$EGki*)BF7AHYvV`ttT(BQR`J}VZTwxQLZQhb03&P#&qXMs-_p7mvAz(sE&*nxQi|A&INLCU*R`Affm!~UMtV{8~L zP~u;9Ym9;nk^sXLbiwRWMbF(;egCfhKhB#6<&3TV*`NurCEG3k2I9ZQ8pTtI%@%jP z=3Ba)bq9d3_aa|BhNGEuaf7DS4-ZyD#gq?a<3TE@VWzADc4r)VkXdb}_&s|+rIkJw9Gnfik5toN)0#4M3^X+Gbfsb9Nu^a)LZMGu!`8gZ0d_|>C?6I+w0e}e zX<%%8$WqqW2#!z<6i7QPq1%}R!*gfy^71kHc6N5-5p@gzpvwYmT?~gi5zyJ=m&^$d z&b9lvTUjx-xC7@6Dg)R<3VF>lL!wN;j=`FMJXTYRr8g1flMCBOj>*4`M1QH9FvWtF z#mgnH15HJpiyfF^1Eyx3_k{>v#?#Daf+W%8Ed?J8a>j9<2yM7PYLzI*cW9E;dZT2H;*2uu8kg zZ%{8>pb(9TFT@G#fS#NF0(TR>&y})evRMnorKaLHH}__n>z>5|j zO$3W3!vHK@#O6>6EK-<~FM2+0F`w~kYb=EbZ(`R@FHI;cYiXI-rlr~2VTw6rz$m=} zpI)K4GtG>Fn;4FqGiU~;*1Ho(NW=!xa{Uq!-kHCvwtwQ~mf~${hu#no8EMOKP0r%P z-AkZU{~z?l%nYOfQPj&W<1$#C*CY5@hSwL`>c#mIwof_0{27&{DUIiLC%C)$$@QYT zrH*A@KWMt-?D*ksoSx{BnqZ~0fXY-rCj}npz`*U4`P(GnZh-mM z^>4pAYadPa>M;f5FXCW1n!+igxSx>J2=9&f*Qdj8M-7%xiySx$rHb$c z4kkGswexu?)n~)fBBmd+27`p01Qaj0XPq1`_Sr{YuapmHLllb9!I$O~yPiY=mySV0 zq6~LyT;{Zheb(ojPzbau9tmyzYMs)`^3`kbkL-Gz0ECx@&;fG*d|H)oL_236ZvB$A zS!Rf!4TFIl0bMYwCb%nITo&A$pw2M)Dg3Ay76=f}@(2w6Wq+?xQe z7>c-qC)}H0)J>-nJct5ATU!|Od)amf0AR6F^1vAi6evXDLT*RL3fC&5wrS0IV7dcz z<|Z%5x+elGD+&wyjDCQM2&gn@9kt6#%gObEWSrufY!u+HC`2h7?_6S3GXx($Th0G# zL0giWoBKU*JL=xE|FEo#t$tA0yY=k{Ph(@_R_Vu!?*$va>z-hnGvI3J={+n0-WVHA z@2`NOqPD)CU#XD6%-+rp)MHqi87@(LW&D6W#`Sfjb7eiPIIFlT@{}|Fo1biMKXAFA z90rZ;UprQ$a#gc}b^d(fFn3sN#(xHgP>wfpce!-O<*5FPn6`LwjK9-fiGjEK5C5ZfkxVo<{V2Xdl-frz8Wqg@)< zA#n!OR-qt2`kCQjlJ`qUa~p-*Lpp7@CQ%x$Mt^PGmzbO&gVJ;$_OK0g2M#z@U&Gjv5f*VK3k}M zNsOg_|4%shYZLhESh^pUhTe?!6#W3@UHD& zhA0X$056uf6(Vqi16XP(n1+W*4Q>cy8CoE_2!@o{Am*+ZxVKwLc`^)sb9A`n41=&d zq7%1B3pc0%dEyA=;(t$jEsrp$p%d6a7$u3wgHM-47^EQ@gxugpJsL0y#2{J0AVqW* z2g?zIq#f@rUIQxQ8vU_M5qH2;UzAY%_nuk7(xGXXYQT3ploCg5pBrn9EAVBAGa~W+11|L_Pg;1XiTj8^rjO6v`3&=~1VphlOga>A zJJt9rYe{Cp4>dA~(4tE(01)SCg_AzPM-nDY7lgB|^J8X4>QC2$@UkoaQPI8fQdr52 zKd-CvY;_R*Rtkr~M>sI_<@RJK`KcZWN$ZJOW^}=--{oPJWQ*>RTk~zceB^hd&$I@Q zq`wRf4zjVa=|4)7>?&5x5FVqng-dR|2Egu-!pXtLHpt+T&J7NXz?ve-2(G%lS&QV# z%}Pm0F}u?42C7~8FRflj+3;2ikn0X_AdABRrsKC~Kx_`yo@%O!)6XA2fB_fGB@LoR zZGF7<)sjPM`FtdqR3kgdxWl(do%3#~!M-%Ktq3>qy%(0xO0QLh3`3c7*fup#Dt>1D zS8;47kouoW>XpRD-gB|>!5z;z10{|Nv+{tg>l<}o zCL31E)|ke!B6U{HlIOku$$$>MLX_*UWJB1h;w8S)hreLUenh_Y33sCOIoujUzr*O; zn%uU;>urtx!8AQ3!b`w#w5~-worEa)V(oPR{GWxPgZ%p`(9suYFXpIxD6?e;kR3J4 zd0!X*yR-gs#^=~^Ex30|OmMr5c%P&~T2>i_v6llM&zxw+La<12D1^D8xB{HSAIf~L z;bq#)z_6Ut-($dVtE~rAyG!K{6LqX{tN{#0dqO}OqFeYqxT#JSj;;o=FGmK3kUB4M8m@Y55+XPHo=nmzx?Yj|NjoEpzW$5jUU z{4djyS`ixz-FP-cv|syngIP-Cuz6i;^E8CiILz_|ee#=YL=y}hLO0G+j6w`(T|Uq$ zY{ox5Xk3Vixu31Ec(5rG1P>e_KS+WvN;eNs%Hm@Zc3rbCP+SJY8?N}x_8Qy{Az}4O zP@ZWO5kBl8qNe&{ILEm%%Nx|$qwbon@6JJ+0It}2fIgIIH0^&4BH{K5d#5`Gb zAABIvGt9tg=X^**1VkOYAVJ^`HPQc;5#bxvDhVQ2rOAiEAo!B4=K)uOXza)E$BmzZ z(DnL`R~rZZgxqLwRnKD@jwp&%s!JE=@1^9qAp)qQ3b=|!ehxo4puhG9;mD{HJNW@T zIDuLyFR>%`i#7P$=I#M^tnC}CPZWsoKn|{KEV>8~$bwN0h?+B8a-0ACDyh;*zjfMg z%DnFHfZxS2+floFd+hyXPl#&gVRLVW#6lo*(O;?i@TJ}95pto?wm-65CKsHHY)gn& zL`Ns$)URjBOa*&8(4n+{`t%)IRdrd}YPVgi>JvVxGL*ed{hLrbzKrdtw4}Yg{Tx(q z`ord{&E!D*kSG&2vE<<58oLWS0;V&rlgs_lcBM7%AiE8iM8P68hBb>?TSc|qs^UJ?ILz^~ z75W*K*|vZB74wp>9_tC0qUMiXU=BEstSDlMIS<#sxP^_bHv(6^lM^>ZO`^2FeD<$b zT;C@+w(@D0SDVcC{{GZva}@h!IpBOu$|TOLM-z47RSv;tIS&tkv4p#w1jv}@@)!U2 zlPW6lH|h=UdKfU75cib#ANU7B$9bvEOZ|sn94;;cF(*MX9;)LdGob~c9`l3E@6=>Z zm8KU}LwuP0&UZISsd^k$Od0BHjywD=J)PUV6}+YCGzWe-Qhmg;ywwCYVaRGmCqS@z zIy{*QIwd*Id1C`H^#3sq7@ou83xkv2eJ9p2oz`*k` zd@Dc$1Xvv|FOy5QU+W}YBz^0u(js$wvYuMrl7aa|rYx)NnI%Vz=XUwA=)h(r0VcF4 zA-;EcJdGFMR^1hvDgfH}cA#$ejK5%F(o-+o3uj)&OQewweA&i=ZBb_}Ejq$;-z;*? zmEPn9)@Aw2`5^FS{rNXy)+%Jm574wP4~+~p@tG>u;4=~|00HC?^d, YEAR. +""" + +def fix_header(po): + """ + Replace default headers with edX headers + """ + header = po.header + fixes = ( + ('SOME DESCRIPTIVE TITLE', 'edX translation file'), + ('Translations template for PROJECT.', 'edX translation file'), + ('YEAR', '%s' % datetime.utcnow().year), + ('ORGANIZATION', 'edX'), + ("THE PACKAGE'S COPYRIGHT HOLDER", "EdX"), + ('This file is distributed under the same license as the PROJECT project.', + 'This file is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE.'), + ('This file is distributed under the same license as the PACKAGE package.', + 'This file is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE.'), + ('FIRST AUTHOR ', + 'EdX Team ') + ) + for (src, dest) in fixes: + header = header.replace(src, dest) + po.header = header + +# By default, django-admin.py makemessages creates this metadata: +""" +{u'PO-Revision-Date': u'YEAR-MO-DA HO:MI+ZONE', + u'Language': u'', + u'Content-Transfer-Encoding': u'8bit', + u'Project-Id-Version': u'PACKAGE VERSION', + u'Report-Msgid-Bugs-To': u'', + u'Last-Translator': u'FULL NAME ', + u'Language-Team': u'LANGUAGE ', + u'POT-Creation-Date': u'2013-04-25 14:14-0400', + u'Content-Type': u'text/plain; charset=UTF-8', + u'MIME-Version': u'1.0'} +""" + +def fix_metadata(po): + """ + Replace default metadata with edX metadata + """ + fixes = {'PO-Revision-Date': datetime.utcnow(), + 'Report-Msgid-Bugs-To': 'translation_team@edx.org', + 'Project-Id-Version': '0.1a', + 'Language' : 'en', + 'Language-Team': 'translation team ', + } + if po.metadata.has_key('Last-Translator'): + del po.metadata['Last-Translator'] + po.metadata.update(fixes) + +def strip_key_strings(po): + """ + Removes all entries in PO which are key strings. + These entries should appear only in messages.po, not in any other po files. + """ + newlist = [entry for entry in po if not is_key_string(entry.msgid)] + del po[:] + po += newlist + +def is_key_string(string): + """ + returns True if string is a key string. + Key strings begin with underscore. + """ + return len(string)>1 and string[0]=='_' + +if __name__ == '__main__': + main() diff --git a/i18n/generate.py b/i18n/generate.py new file mode 100755 index 0000000000..ddbaadfa70 --- /dev/null +++ b/i18n/generate.py @@ -0,0 +1,64 @@ +#!/usr/bin/python + +""" + See https://edx-wiki.atlassian.net/wiki/display/ENG/PO+File+workflow + + + This task merges and compiles the human-readable .pofiles on the + local filesystem into machine-readable .mofiles. This is typically + necessary as part of the build process since these .mofiles are + needed by Django when serving the web app. + + The configuration file (in mitx/conf/locale/config) specifies which + languages to generate. +""" + +import os +from execute import execute, get_config, messages_dir, remove_file, \ + BASE_DIR, LOG, SOURCE_LOCALE + +def merge(locale, target='django.po'): + """ + For the given locale, merge django-partial.po, messages.po, mako.po -> django.po + """ + LOG.info('Merging locale={0}'.format(locale)) + locale_directory = messages_dir(locale) + files_to_merge = ('django-partial.po', 'messages.po', 'mako.po') + validate_files(locale_directory, files_to_merge) + + # merged file is merged.po + merge_cmd = 'msgcat -o merged.po ' + ' '.join(files_to_merge) + execute(merge_cmd, working_directory=locale_directory) + + # rename merged.po -> django.po (default) + merged_filename = os.path.join(locale_directory, 'merged.po') + django_filename = os.path.join(locale_directory, target) + os.rename(merged_filename, django_filename) # can't overwrite file on Windows + +def validate_files(dir, files_to_merge): + """ + Asserts that the given files exist. + files_to_merge is a list of file names (no directories). + dir is the directory in which the files should appear. + raises an Exception if any of the files are not in dir. + """ + for path in files_to_merge: + pathname = os.path.join(dir, path) + if not os.path.exists(pathname): + raise Exception("File not found: {0}".format(pathname)) + +def main (): + configuration = get_config() + if configuration == None: + LOG.warn('Configuration file not found, using only English.') + locales = (SOURCE_LOCALE,) + else: + locales = configuration['locales'] + for locale in locales: + merge(locale) + + compile_cmd = 'django-admin.py compilemessages' + execute(compile_cmd, working_directory=BASE_DIR) + +if __name__ == '__main__': + main() diff --git a/i18n/make_dummy.py b/i18n/make_dummy.py index 4ccfb0d5f1..c8dcde861a 100755 --- a/i18n/make_dummy.py +++ b/i18n/make_dummy.py @@ -18,20 +18,12 @@ import os, sys import polib from dummy import Dummy +from execute import create_dir_if_necessary -# Dummy language -# two letter language codes reference: -# see http://www.loc.gov/standards/iso639-2/php/code_list.php -# -# Django will not localize in languages that django itself has not been -# localized for. So we are using a well-known language: 'fr'. - -OUT_LANG = 'fr' - -def main(file): +def main(file, locale): """ Takes a source po file, reads it, and writes out a new po file - containing a dummy translation. + in :param locale: containing a dummy translation. """ if not os.path.exists(file): raise IOError('File does not exist: %s' % file) @@ -40,29 +32,36 @@ def main(file): converter.init_msgs(pofile.translated_entries()) for msg in pofile: converter.convert_msg(msg) - new_file = new_filename(file, OUT_LANG) + new_file = new_filename(file, locale) create_dir_if_necessary(new_file) pofile.save(new_file) - - -def new_filename(original_filename, new_lang): - """Returns a filename derived from original_filename, using new_lang as the locale""" +def new_filename(original_filename, new_locale): + """Returns a filename derived from original_filename, using new_locale as the locale""" orig_dir = os.path.dirname(original_filename) msgs_dir = os.path.basename(orig_dir) orig_file = os.path.basename(original_filename) - return '%s/%s/%s/%s' % (os.path.abspath(orig_dir + '/../..'), - new_lang, - msgs_dir, - orig_file) + return os.path.join(orig_dir, + '/../..', + new_locale, + msgs_dir, + orig_file) -def create_dir_if_necessary(pathname): - dirname = os.path.dirname(pathname) - if not os.path.exists(dirname): - os.makedirs(dirname) +# Dummy language +# two letter language codes reference: +# see http://www.loc.gov/standards/iso639-2/php/code_list.php +# +# Django will not localize in languages that django itself has not been +# localized for. So we are using a well-known language: 'fr'. + +DEFAULT_LOCALE = 'fr' if __name__ == '__main__': if len(sys.argv)<2: raise Exception("missing file argument") - main(sys.argv[1]) + if len(sys.argv)<2: + locale = DEFAULT_LOCALE + else: + locale = sys.argv[2] + main(sys.argv[1], locale) diff --git a/i18n/tests/__init__.py b/i18n/tests/__init__.py new file mode 100644 index 0000000000..d60515c712 --- /dev/null +++ b/i18n/tests/__init__.py @@ -0,0 +1,4 @@ +from test_extract import TestExtract +from test_generate import TestGenerate +from test_converter import TestConverter +from test_dummy import TestDummy diff --git a/i18n/tests/test_converter.py b/i18n/tests/test_converter.py new file mode 100644 index 0000000000..4dd5f02e3f --- /dev/null +++ b/i18n/tests/test_converter.py @@ -0,0 +1,42 @@ +import os +from unittest import TestCase + +import converter + +class UpcaseConverter (converter.Converter): + """ + Converts a string to uppercase. Just used for testing. + """ + def inner_convert_string(self, string): + return string.upper() + + +class TestConverter(TestCase): + """ + Tests functionality of i18n/converter.py + """ + + def test_converter(self): + """ + Tests with a simple converter (converts strings to uppercase). + Assert that embedded HTML and python tags are not converted. + """ + c = UpcaseConverter() + test_cases = ( + # no tags + ('big bad wolf', 'BIG BAD WOLF'), + # one html tag + ('big bad wolf', 'BIG BAD WOLF'), + # two html tags + ('big bad wolf', 'BIG BAD WOLF'), + # one python tag + ('big %(adjective)s wolf', 'BIG %(adjective)s WOLF'), + # two python tags + ('big %(adjective)s %(noun)s', 'BIG %(adjective)s %(noun)s'), + # both kinds of tags + ('big %(adjective)s %(noun)s', + 'BIG %(adjective)s %(noun)s'), + ) + for (source, expected) in test_cases: + result = c.convert(source) + self.assertEquals(result, expected) diff --git a/i18n/tests/test_dummy.py b/i18n/tests/test_dummy.py new file mode 100644 index 0000000000..88addb5a95 --- /dev/null +++ b/i18n/tests/test_dummy.py @@ -0,0 +1,50 @@ +import os, string, random +from unittest import TestCase +from polib import POEntry + +import dummy + + +class TestDummy(TestCase): + """ + Tests functionality of i18n/dummy.py + """ + + def setUp(self): + self.converter = dummy.Dummy() + + def test_dummy(self): + """ + Tests with a dummy converter (adds spurious accents to strings). + Assert that embedded HTML and python tags are not converted. + """ + test_cases = (("hello my name is Bond, James Bond", + u'h\xe9ll\xf6 my n\xe4m\xe9 \xefs B\xf6nd, J\xe4m\xe9s B\xf6nd Lorem i#'), + + ('don\'t convert tag ids', + u'd\xf6n\'t \xe7\xf6nv\xe9rt t\xe4g \xefds Lorem ipsu#'), + + ('don\'t convert %(name)s tags on %(date)s', + u"d\xf6n't \xe7\xf6nv\xe9rt %(name)s t\xe4gs \xf6n %(date)s Lorem ips#") + ) + for (source, expected) in test_cases: + result = self.converter.convert(source) + self.assertEquals(result, expected) + + def test_singular(self): + entry = POEntry() + entry.msgid = 'A lovely day for a cup of tea.' + expected = u'\xc0 l\xf6v\xe9ly d\xe4y f\xf6r \xe4 \xe7\xfcp \xf6f t\xe9\xe4. Lorem i#' + self.converter.convert_msg(entry) + self.assertEquals(entry.msgstr, expected) + + def test_plural(self): + entry = POEntry() + entry.msgid = 'A lovely day for a cup of tea.' + entry.msgid_plural = 'A lovely day for some cups of tea.' + expected_s = u'\xc0 l\xf6v\xe9ly d\xe4y f\xf6r \xe4 \xe7\xfcp \xf6f t\xe9\xe4. Lorem i#' + expected_p = u'\xc0 l\xf6v\xe9ly d\xe4y f\xf6r s\xf6m\xe9 \xe7\xfcps \xf6f t\xe9\xe4. Lorem ip#' + self.converter.convert_msg(entry) + result = entry.msgstr_plural + self.assertEquals(result['0'], expected_s) + self.assertEquals(result['1'], expected_p) diff --git a/i18n/tests/test_extract.py b/i18n/tests/test_extract.py new file mode 100644 index 0000000000..b14ae9872d --- /dev/null +++ b/i18n/tests/test_extract.py @@ -0,0 +1,85 @@ +import os, polib +from unittest import TestCase +from nose.plugins.skip import SkipTest +from datetime import datetime, timedelta + +import extract +from execute import SOURCE_MSGS_DIR + +# Make sure setup runs only once +SETUP_HAS_RUN = False + +class TestExtract(TestCase): + """ + Tests functionality of i18n/extract.py + """ + generated_files = ('django-partial.po', 'djangojs.po', 'mako.po') + + def setUp(self): + # Skip this test because it takes too long (>1 minute) + # TODO: figure out how to declare a "long-running" test suite + # and add this test to it. + raise SkipTest() + + global SETUP_HAS_RUN + + # Subtract 1 second to help comparisons with file-modify time succeed, + # since os.path.getmtime() is not millisecond-accurate + self.start_time = datetime.now() - timedelta(seconds=1) + super(TestExtract, self).setUp() + if not SETUP_HAS_RUN: + # Run extraction script. Warning, this takes 1 minute or more + extract.main() + SETUP_HAS_RUN = True + + def get_files (self): + """ + This is a generator. + Returns the fully expanded filenames for all extracted files + Fails assertion if one of the files doesn't exist. + """ + for filename in self.generated_files: + path = os.path.join(SOURCE_MSGS_DIR, filename) + exists = os.path.exists(path) + self.assertTrue(exists, msg='Missing file: %s' % filename) + if exists: + yield path + + def test_files(self): + """ + Asserts that each auto-generated file has been modified since 'extract' was launched. + Intended to show that the file has been touched by 'extract'. + """ + + for path in self.get_files(): + self.assertTrue(datetime.fromtimestamp(os.path.getmtime(path)) > self.start_time, + msg='File not recently modified: %s' % os.path.basename(path)) + + def test_is_keystring(self): + """ + Verifies is_keystring predicate + """ + entry1 = polib.POEntry() + entry2 = polib.POEntry() + entry1.msgid = "_.lms.admin.warning.keystring" + entry2.msgid = "This is not a keystring" + self.assertTrue(extract.is_key_string(entry1.msgid)) + self.assertFalse(extract.is_key_string(entry2.msgid)) + + def test_headers(self): + """Verify all headers have been modified""" + for path in self.get_files(): + po = polib.pofile(path) + header = po.header + self.assertEqual(header.find('edX translation file'), 0, + msg='Missing header in %s:\n"%s"' % \ + (os.path.basename(path), header)) + + def test_metadata(self): + """Verify all metadata has been modified""" + for path in self.get_files(): + po = polib.pofile(path) + metadata = po.metadata + value = metadata['Report-Msgid-Bugs-To'] + expected = 'translation_team@edx.org' + self.assertEquals(expected, value) diff --git a/i18n/tests/test_generate.py b/i18n/tests/test_generate.py new file mode 100644 index 0000000000..fc22988251 --- /dev/null +++ b/i18n/tests/test_generate.py @@ -0,0 +1,61 @@ +import os, string, random +from unittest import TestCase +from datetime import datetime, timedelta + +import generate +from execute import get_config, messages_dir, SOURCE_MSGS_DIR, SOURCE_LOCALE + +class TestGenerate(TestCase): + """ + Tests functionality of i18n/generate.py + """ + generated_files = ('django-partial.po', 'djangojs.po', 'mako.po') + + def setUp(self): + self.configuration = get_config() + + # Subtract 1 second to help comparisons with file-modify time succeed, + # since os.path.getmtime() is not millisecond-accurate + self.start_time = datetime.now() - timedelta(seconds=1) + + def test_configuration(self): + """ + Make sure we have a valid configuration file, + and that it contains an 'en' locale. + """ + self.assertIsNotNone(self.configuration) + locales = self.configuration['locales'] + self.assertIsNotNone(locales) + self.assertIsInstance(locales, list) + self.assertIn('en', locales) + + def test_merge(self): + """ + Tests merge script on English source files. + """ + filename = os.path.join(SOURCE_MSGS_DIR, random_name()) + generate.merge(SOURCE_LOCALE, target=filename) + self.assertTrue(os.path.exists(filename)) + os.remove(filename) + + def test_main(self): + """ + Runs generate.main() which should merge source files, + then compile all sources in all configured languages. + Validates output by checking all .mo files in all configured languages. + .mo files should exist, and be recently created (modified + after start of test suite) + """ + generate.main() + for locale in self.configuration['locales']: + for filename in ('django.mo', 'djangojs.mo'): + path = os.path.join(messages_dir(locale), filename) + exists = os.path.exists(path) + self.assertTrue(exists, msg='Missing file in locale %s: %s' % (locale, filename)) + self.assertTrue(datetime.fromtimestamp(os.path.getmtime(path)) >= self.start_time, + msg='File not recently modified: %s' % path) + +def random_name(size=6): + """Returns random filename as string, like test-4BZ81W""" + chars = string.ascii_uppercase + string.digits + return 'test-' + ''.join(random.choice(chars) for x in range(size)) diff --git a/i18n/update.py b/i18n/update.py deleted file mode 100755 index 447dcf71d5..0000000000 --- a/i18n/update.py +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/python - -import os, subprocess, logging, json -from make_dummy import create_dir_if_necessary, main as dummy_main - -''' -Generate or update all translation files - Usage: - $ update.py - - - 1. extracts files from mako templates - 2. extracts files from django templates and python source files - 3. extracts files from django javascript files - 4. generates dummy text translations - 5. compiles po files to mo files - - Configuration (e.g. known languages) declared in mitx/conf/locale/config -''' - -# ----------------------------------- -# BASE_DIR is the working directory to execute django-admin commands from. -# Typically this should be the 'mitx' directory. -BASE_DIR = os.path.abspath(os.path.dirname(os.path.abspath(__file__))+'/..') - -# LOCALE_DIR contains the locale files. -# Typically this should be 'mitx/conf/locale' -LOCALE_DIR = BASE_DIR + '/conf/locale' - -# MSGS_DIR contains the English po files -MSGS_DIR = LOCALE_DIR + '/en/LC_MESSAGES' - -# CONFIG_FILENAME contains localization configuration in json format -CONFIG_FILENAME = LOCALE_DIR + '/config' - -# BABEL_CONFIG contains declarations for Babel to extract strings from mako template files -BABEL_CONFIG = LOCALE_DIR + '/babel.cfg' - -# Strings from mako template files are written to BABEL_OUT -BABEL_OUT = MSGS_DIR + '/mako.po' - -# These are the shell commands invoked by main() -COMMANDS = { - 'babel_mako': 'pybabel extract -F %s -c "TRANSLATORS:" . -o %s' % (BABEL_CONFIG, BABEL_OUT), - 'make_django': 'django-admin.py makemessages --all --ignore=src/* --extension html -l en', - 'make_djangojs': 'django-admin.py makemessages --all -d djangojs --ignore=src/* --extension js -l en', - 'msgcat' : 'msgcat -o merged.po django.po %s' % BABEL_OUT, - 'rename_django' : 'mv django.po django_old.po', - 'rename_merged' : 'mv merged.po django.po', - 'compile': 'django-admin.py compilemessages' - - } - -def execute (command_kwd, log, working_directory=BASE_DIR): - ''' - Executes command_kwd, which references a shell command in COMMANDS. - ''' - full_cmd = COMMANDS[command_kwd] - log.info('%s' % full_cmd) - subprocess.call(full_cmd.split(' '), cwd=working_directory) - -def make_log (): - '''returns a logger''' - log = logging.getLogger(__name__) - log.setLevel(logging.INFO) - log_handler = logging.StreamHandler() - log_handler.setFormatter(logging.Formatter('%(asctime)s [%(levelname)s] %(message)s')) - log.addHandler(log_handler) - return log - -def get_config (): - '''Returns data found in config file, or returns None if file not found''' - config_path = os.path.abspath(CONFIG_FILENAME) - if not os.path.exists(config_path): - return None - with open(config_path) as stream: - return json.load(stream) - -def main (): - log = make_log() - create_dir_if_necessary(LOCALE_DIR) - log.info('Executing all commands from %s' % BASE_DIR) - - remove_files = ['django.po', 'djangojs.po', 'nonesuch'] - for filename in remove_files: - path = MSGS_DIR + '/' + filename - log.info('Deleting file %s' % path) - if not os.path.exists(path): - log.warn("File does not exist: %s" % path) - else: - os.remove(path) - - # Generate or update human-readable .po files from all source code. - execute('babel_mako', log=log) - execute('make_django', log=log) - execute('make_djangojs', log=log) - execute('msgcat', log=log, working_directory=MSGS_DIR) - execute('rename_django', log=log, working_directory=MSGS_DIR) - execute('rename_merged', log=log, working_directory=MSGS_DIR) - - # Generate dummy text files from the English .po files - log.info('Generating dummy text.') - dummy_main(LOCALE_DIR + '/en/LC_MESSAGES/django.po') - dummy_main(LOCALE_DIR + '/en/LC_MESSAGES/djangojs.po') - - # Generate machine-readable .mo files - execute('compile', log) - -if __name__ == '__main__': - main() diff --git a/lms/static/sass/multicourse/_course_about.scss b/lms/static/sass/multicourse/_course_about.scss index d23917fe27..0982577f42 100644 --- a/lms/static/sass/multicourse/_course_about.scss +++ b/lms/static/sass/multicourse/_course_about.scss @@ -272,7 +272,9 @@ } .course-staff { + .teacher { + @include clearfix; margin-bottom: 40px; h3 { @@ -312,7 +314,7 @@ } } } - + .faq { @include clearfix; diff --git a/lms/templates/static_templates/contact.html b/lms/templates/static_templates/contact.html index d848164720..79e2743dbc 100644 --- a/lms/templates/static_templates/contact.html +++ b/lms/templates/static_templates/contact.html @@ -33,6 +33,9 @@

    Universities

    If you are a university wishing to collaborate or with questions about edX, please email university@edx.org.

    +

    Accessibility

    +

    EdX strives to create an innovative online-learning platform that promotes accessibility for everyone, including students with disabilities. We are dedicated to improving the accessibility of the platform and welcome your comments or questions at accessibility@edx.org.

    + diff --git a/local-requirements.txt b/local-requirements.txt index 0ce7de0e73..201467d11e 100644 --- a/local-requirements.txt +++ b/local-requirements.txt @@ -2,8 +2,3 @@ -e common/lib/capa -e common/lib/xmodule -e . - -# XBlock: -# Might change frequently, so put it in local-requirements.txt, -# but conceptually is an external package, so it is in a separate repo. --e git+https://github.com/edx/XBlock.git@5ce6f70a#egg=XBlock diff --git a/rakefile b/rakefile index 766dd8a914..798e1c28bf 100644 --- a/rakefile +++ b/rakefile @@ -174,6 +174,11 @@ end desc "Install all python prerequisites for the lms and cms" task :install_python_prereqs do sh('pip install -r requirements.txt') + # Check for private-requirements.txt: used to install our libs as working dirs, + # or personal-use tools. + if File.file?("private-requirements.txt") + sh('pip install -r private-requirements.txt') + end end task :predjango do @@ -330,6 +335,12 @@ task :migrate, [:env] do |t, args| sh(django_admin(:lms, args.env, 'migrate')) end +desc "Run tests for the internationalization library" +task :test_i18n do + test = File.join(REPO_ROOT, "i18n", "tests") + sh("nosetests #{test}") +end + Dir["common/lib/*"].select{|lib| File.directory?(lib)}.each do |lib| task_name = "test_#{lib}" @@ -501,6 +512,30 @@ task :autodeploy_properties do end end +# --- Internationalization tasks + +desc "Extract localizable strings from sources" +task :extract_dev_strings do + sh(File.join(REPO_ROOT, "i18n", "extract.py")) +end + +desc "Compile localizable strings from sources. With optional flag 'extract', will extract strings first." +task :generate_i18n do + if ARGV.last.downcase == 'extract' + Rake::Task["extract_dev_strings"].execute + end + sh(File.join(REPO_ROOT, "i18n", "generate.py")) +end + +desc "Simulate international translation by generating dummy strings corresponding to source strings." +task :dummy_i18n do + source_files = Dir["#{REPO_ROOT}/conf/locale/en/LC_MESSAGES/*.po"] + dummy_locale = 'fr' + cmd = File.join(REPO_ROOT, "i18n", "make_dummy.py") + for file in source_files do + sh("#{cmd} #{file} #{dummy_locale}") + end +end # --- Develop and public documentation --- desc "Invoke sphinx 'make build' to generate docs." diff --git a/requirements.txt b/requirements.txt index 77239a4d50..d3fdd46b81 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,4 @@ -r repo-requirements.txt -Babel==0.9.6 beautifulsoup4==4.1.3 beautifulsoup==3.2.1 boto==2.6.0 @@ -62,6 +61,10 @@ newrelic==1.8.0.13 # Used for documentation gathering sphinx==1.1.3 +# Used for Internationalization and localization +Babel==0.9.6 +transifex-client==0.8 + # Used for testing coverage==3.6 factory_boy==2.0.2 From 2cb3af1e3531693a3c254cb8375979735ea3b573 Mon Sep 17 00:00:00 2001 From: Sarina Canelake Date: Wed, 1 May 2013 10:53:22 -0400 Subject: [PATCH 25/94] Only throw factorial-related exception on factorial raised exception --- common/lib/capa/capa/responsetypes.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/common/lib/capa/capa/responsetypes.py b/common/lib/capa/capa/responsetypes.py index 49f6ee1bee..b06a62ffc6 100644 --- a/common/lib/capa/capa/responsetypes.py +++ b/common/lib/capa/capa/responsetypes.py @@ -1852,12 +1852,18 @@ class FormulaResponse(LoncapaResponse): raise StudentInputError( "Invalid input: " + uv.message + " not permitted in answer") except ValueError as ve: - # This is thrown when fact() or factorial() is used in a formularesponse answer - # that tests on negative and/or non-integer inputs - log.debug( - 'formularesponse: factorial function used in response that tests negative and/or non-integer inputs. given={0}'.format(given)) - raise StudentInputError( - "factorial function not permitted in answer for this problem. Provided answer was: {0}".format(given)) + if 'factorial' in ve.message: + # This is thrown when fact() or factorial() is used in a formularesponse answer + # that tests on negative and/or non-integer inputs + # ve.message will be: `factorial() only accepts integral values` or `factorial() not defined for negative values` + log.debug( + 'formularesponse: factorial function used in response that tests negative and/or non-integer inputs. given={0}'.format(given)) + raise StudentInputError( + "factorial function not permitted in answer for this problem. Provided answer was: {0}".format(given)) + # If non-factorial related ValueError thrown, handle it the same as any other Exception + log.debug('formularesponse: error {0} in formula'.format(ve)) + raise StudentInputError("Invalid input: Could not parse '%s' as a formula" % + cgi.escape(given)) except Exception as err: # traceback.print_exc() log.debug('formularesponse: error %s in formula' % err) From 7f93443dfb898a6ff9d529e38a2bfc74412ccdf5 Mon Sep 17 00:00:00 2001 From: Jay Zoldak Date: Wed, 1 May 2013 10:53:58 -0400 Subject: [PATCH 26/94] Make the test_root/db directory and add a .gitignore for the db files that will be created there. --- test_root/db/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 test_root/db/.gitignore diff --git a/test_root/db/.gitignore b/test_root/db/.gitignore new file mode 100644 index 0000000000..98e6ef67fa --- /dev/null +++ b/test_root/db/.gitignore @@ -0,0 +1 @@ +*.db From bdfe1cff39642e2be240e3e6348d75e4cf24cf9b Mon Sep 17 00:00:00 2001 From: Jay Zoldak Date: Wed, 1 May 2013 11:34:28 -0400 Subject: [PATCH 27/94] Remove localization middleware from jasmine test execution --- cms/envs/jasmine.py | 6 ++++++ cms/envs/test.py | 3 --- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/cms/envs/jasmine.py b/cms/envs/jasmine.py index 70b5b217ef..e046a6d37c 100644 --- a/cms/envs/jasmine.py +++ b/cms/envs/jasmine.py @@ -35,4 +35,10 @@ JASMINE_TEST_DIRECTORY = PROJECT_ROOT + '/static/coffee' STATICFILES_DIRS.append(COMMON_ROOT / 'test' / 'phantom-jasmine' / 'lib') +# Remove the localization middleware class because it requires the test database +# to be sync'd and migrated in order to run the jasmine tests interactively +# with a browser +MIDDLEWARE_CLASSES = tuple(e for e in MIDDLEWARE_CLASSES \ + if e != 'django.middleware.locale.LocaleMiddleware') + INSTALLED_APPS += ('django_jasmine', ) diff --git a/cms/envs/test.py b/cms/envs/test.py index 0c91999a74..63b5efc645 100644 --- a/cms/envs/test.py +++ b/cms/envs/test.py @@ -17,9 +17,6 @@ TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' TEST_ROOT = path('test_root') -# Makes the tests run much faster... -SOUTH_TESTS_MIGRATE = False # To disable migrations and use syncdb instead - # Want static files in the same dir for running on jenkins. STATIC_ROOT = TEST_ROOT / "staticfiles" From a3bb4bfb9fa7a5ecbf1db2e39d344f39e47ee3aa Mon Sep 17 00:00:00 2001 From: Nate Hardison Date: Thu, 11 Apr 2013 16:03:48 -0700 Subject: [PATCH 28/94] Updating dev environment setup * Script now installs RVM in conventional location (~/.rvm) by default, though it allows for the override if desired. This will enable folks to install edX alongside other Ruby projects also using RVM. * Script now uses virtualenvwrapper to ease the process of enabling the edX virtualenv and to allow for easy switching back and forth between virtualenv projects. It now also installs the "mitx" virtualenv in the conventional location of ~/.virtualenv. * Adding a .rvmrc file so that the Ruby environment will be automatically activated (via `rvm use`) whenever the user hits the `mitx/` directory. --- .rvmrc | 1 + create-dev-env.sh | 141 +++++++++++++++++++++++++++++++++++----------- 2 files changed, 108 insertions(+), 34 deletions(-) create mode 100644 .rvmrc diff --git a/.rvmrc b/.rvmrc new file mode 100644 index 0000000000..348cf3e59c --- /dev/null +++ b/.rvmrc @@ -0,0 +1 @@ +rvm use 1.9.3-p374@mitx diff --git a/create-dev-env.sh b/create-dev-env.sh index f0ebca3ff7..9993461722 100755 --- a/create-dev-env.sh +++ b/create-dev-env.sh @@ -26,12 +26,15 @@ EOL printf '\E[0m' } + error() { printf '\E[31m'; echo "$@"; printf '\E[0m' } + output() { printf '\E[36m'; echo "$@"; printf '\E[0m' } + usage() { cat< $HOME/.rvmrc +# If we're not installing RVM in the default location, then we'll do some +# funky stuff to make sure that we load in the RVM stuff properly on login. +if [ "$HOME/.rvm" != $RUBY_DIR ]; then + if ! grep -q "export rvm_path=$RUBY_DIR" ~/.rvmrc; then + if [[ -f $HOME/.rvmrc ]]; then + output "Copying existing .rvmrc to .rvmrc.bak" + cp $HOME/.rvmrc $HOME/.rvmrc.bak + fi + output "Creating $HOME/.rvmrc so rvm uses $RUBY_DIR" + echo "export rvm_path=$RUBY_DIR" > $HOME/.rvmrc + fi fi curl -sL get.rvm.io | bash -s -- --version 1.15.7 -source $RUBY_DIR/scripts/rvm + +# Ensure we have RVM available as a shell function so that it can mess +# with the environment and set everything up properly. The RVM install +# process adds this line to login scripts, so this shouldn't be necessary +# for the user to do each time. +if [[ `type -t rvm` != "function" ]]; then + source $RUBY_DIR/scripts/rvm +fi + +# Ruby doesn't like to build with clang, which is the default on OS X, so +# use gcc instead. This may not work, since if your gcc was installed with +# XCode 4.2 or greater, you have an LLVM-based gcc, which also doesn't +# always play nicely with Ruby, though it seems to be better than clang. +# You may have to install apple-gcc42 using Homebrew if this doesn't work. +# See `rvm requirements` for more information. +case `uname -s` in + Darwin) + # TODO (Nate): test to see if CC is already set to gcc or something + # similar first (not clang). + export CC=gcc + ;; +esac + +# Let the repo override the version of Ruby to install +if [[ -r $BASE/mitx/.ruby-version ]]; then + RUBY_VER=`cat $BASE/mitx/.ruby-version` +fi + +# Current stable version of RVM (1.19.0) requires the following to build Ruby: +# +# autoconf automake libtool pkg-config libyaml libxml2 libxslt libksba openssl +# +# If we decide to upgrade from the current version (1.15.7), can run +# +# LESS="-E" rvm install $RUBY_VER --autolibs=3 --with-readline +# +# to have RVM look for a package manager like Homebrew and install any missing +# libs automatically. RVM's --autolibs flag defaults to 2, which will fail if +# any required libs are missing. LESS="-E" rvm install $RUBY_VER --with-readline +# Create the "mitx" gemset +rvm use "$RUBY_VER@mitx" --create + output "Installing gem bundler" gem install bundler output "Installing ruby packages" -# hack :( -cd $BASE/mitx || true -bundle install +bundle install --gemfile $BASE/mitx/Gemfile # Install Python virtualenv @@ -274,16 +326,31 @@ case `uname -s` in ;; esac +# virtualenvwrapper uses the $WORKON_HOME env var to determine where to place +# virtualenv directories. Make sure it matches the selected $PYTHON_DIR. +export WORKON_HOME=$PYTHON_DIR + +# Load in the mkvirtualenv function if needed +if [[ `type -t mkvirtualenv` != "function" ]]; then + source `which virtualenvwrapper.sh` +fi + +# Create MITx virtualenv and link it to repo +# virtualenvwrapper automatically sources the activation script if [[ $systempkgs ]]; then - virtualenv --system-site-packages "$PYTHON_DIR" + mkvirtualenv -a "$BASE/mitx" --system-site-packages mitx || { + error "mkvirtualenv exited with a non-zero error" + return 1 + } else # default behavior for virtualenv>1.7 is # --no-site-packages - virtualenv "$PYTHON_DIR" + mkvirtualenv -a "$BASE/mitx" mitx || { + error "mkvirtualenv exited with a non-zero error" + return 1 + } fi -# activate mitx python virtualenv -source $PYTHON_DIR/bin/activate # compile numpy and scipy if requested @@ -315,6 +382,8 @@ case `uname -s` in # need latest pytz before compiling numpy and scipy pip install -U pytz pip install numpy + # scipy needs cython + pip install cython # fixes problem with scipy on 10.8 pip install -e git+https://github.com/scipy/scipy#egg=scipy-dev ;; @@ -344,14 +413,18 @@ cat< Date: Fri, 12 Apr 2013 10:26:33 -0700 Subject: [PATCH 29/94] Adding a check for an existing virtualenv This way, packages won't be inadvertently installed into the wrong virtual environment. I tried to have the check just run `deactivate`, but I couldn't figure out how to get that working, so the script just bails. --- create-dev-env.sh | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/create-dev-env.sh b/create-dev-env.sh index 9993461722..d387465c49 100755 --- a/create-dev-env.sh +++ b/create-dev-env.sh @@ -92,6 +92,7 @@ clone_repos() { fi } + ### START PROG=${0##*/} @@ -99,9 +100,9 @@ PROG=${0##*/} # Adjust this to wherever you'd like to place the codebase BASE="${PROJECT_HOME:-$HOME}/mitx_all" -# Use a sensible default (~/.virtualenv) for your Python virtualenvs +# Use a sensible default (~/.virtualenvs) for your Python virtualenvs # unless you've already got one set up with virtualenvwrapper. -PYTHON_DIR=${WORKON_HOME:-"$HOME/.virtualenv"} +PYTHON_DIR=${WORKON_HOME:-"$HOME/.virtualenvs"} # RVM defaults its install to ~/.rvm, but use the overridden rvm_path # if that's what's preferred. @@ -116,7 +117,14 @@ if [[ $EUID -eq 0 ]]; then exit 1 fi -# TODO: test for an existing virtualenv +# If in an existing virtualenv, bail +if [[ "x$VIRTUAL_ENV" != "x" ]]; then + envname=`basename $VIRTUAL_ENV` + error "Looks like you're already in the \"$envname\" virtual env." + error "Run \`deactivate\` and then re-run this script." + usage + exit 1 +fi # Read arguments ARGS=$(getopt "cvhs" "$*") @@ -281,8 +289,6 @@ fi # See `rvm requirements` for more information. case `uname -s` in Darwin) - # TODO (Nate): test to see if CC is already set to gcc or something - # similar first (not clang). export CC=gcc ;; esac From 2b17904c93cb50d463cd9d48437fef5fc26b7e6a Mon Sep 17 00:00:00 2001 From: Nate Hardison Date: Wed, 24 Apr 2013 13:18:12 -0700 Subject: [PATCH 30/94] Replacing `.rvmrc` with `.ruby-gemset` In order to avoid duplicating the Ruby version between the `.rvmrc` and the `.ruby-version`, we'll get rid of the `.rvmrc` and use the `.ruby-gemset` file to specify the gemset. These files are supported by RVM as documented [here](https://gist.github.com/fnichol/1912050). --- .ruby-gemset | 1 + .rvmrc | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 .ruby-gemset delete mode 100644 .rvmrc diff --git a/.ruby-gemset b/.ruby-gemset new file mode 100644 index 0000000000..93a8706d3e --- /dev/null +++ b/.ruby-gemset @@ -0,0 +1 @@ +mitx diff --git a/.rvmrc b/.rvmrc deleted file mode 100644 index 348cf3e59c..0000000000 --- a/.rvmrc +++ /dev/null @@ -1 +0,0 @@ -rvm use 1.9.3-p374@mitx From d807b955f779d73ad86af2863c1cfdc02a0abc7d Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Wed, 1 May 2013 15:27:36 -0400 Subject: [PATCH 31/94] add leading slash to the jsi18n include --- cms/templates/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cms/templates/base.html b/cms/templates/base.html index 3f286c2582..f1a87d6424 100644 --- a/cms/templates/base.html +++ b/cms/templates/base.html @@ -30,7 +30,7 @@ <%include file="courseware_vendor_js.html"/> - + From 7c972ebf6e6dd22ca3dfd78d07975491544a69b3 Mon Sep 17 00:00:00 2001 From: Steve Strassmann Date: Thu, 2 May 2013 09:29:27 -0400 Subject: [PATCH 32/94] fix date interpolation --- cms/static/js/base.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cms/static/js/base.js b/cms/static/js/base.js index 3a51d797ec..49a70a87fd 100644 --- a/cms/static/js/base.js +++ b/cms/static/js/base.js @@ -845,8 +845,11 @@ function saveSetSectionScheduleDate(e) { data: JSON.stringify({ 'id': id, 'metadata': {'start': start}}) }).success(function () { var $thisSection = $('.courseware-section[data-id="' + id + '"]'); - var format = gettext('Will Release: %(date)s at $(time)s UTC'); - var willReleaseAt = interpolate(format, [input_date, input_time], true); + var format = gettext('Will Release: %(date)s at %(time)s UTC'); + var willReleaseAt = interpolate(format, + {'date': input_date, + 'time': input_time}, + true); $thisSection.find('.section-published-date').html( '' + willReleaseAt + '' + ' Date: Thu, 2 May 2013 09:31:53 -0400 Subject: [PATCH 33/94] tabbing --- cms/static/js/base.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cms/static/js/base.js b/cms/static/js/base.js index 49a70a87fd..4aae7fc2af 100644 --- a/cms/static/js/base.js +++ b/cms/static/js/base.js @@ -843,19 +843,19 @@ function saveSetSectionScheduleDate(e) { dataType: "json", contentType: "application/json", data: JSON.stringify({ 'id': id, 'metadata': {'start': start}}) - }).success(function () { + }).success(function () { var $thisSection = $('.courseware-section[data-id="' + id + '"]'); var format = gettext('Will Release: %(date)s at %(time)s UTC'); - var willReleaseAt = interpolate(format, - {'date': input_date, + var willReleaseAt = interpolate(format, + {'date': input_date, 'time': input_time}, - true); + true); $thisSection.find('.section-published-date').html( - '' + willReleaseAt + '' + - '' + + '' + willReleaseAt + '' + + '' + gettext('Edit') + ''); $thisSection.find('.section-published-date').animate({ 'background-color': 'rgb(182,37,104)' From 01ede40b03d97ade4dcc322d4f03e58cb15d0ede Mon Sep 17 00:00:00 2001 From: cahrens Date: Thu, 2 May 2013 09:43:03 -0400 Subject: [PATCH 34/94] Switching branches --- cms/djangoapps/contentstore/views.py | 1 + cms/static/coffee/src/views/module_edit.coffee | 2 ++ cms/static/js/base.js | 14 +++++++------- cms/templates/base.html | 2 +- cms/templates/widgets/metadata-edit.html | 14 ++++++++++++-- cms/templates/widgets/source-edit.html | 2 +- .../xmodule/xmodule/templates/problem/empty.yaml | 2 -- 7 files changed, 24 insertions(+), 13 deletions(-) diff --git a/cms/djangoapps/contentstore/views.py b/cms/djangoapps/contentstore/views.py index 824d2119f1..cf870b1edf 100644 --- a/cms/djangoapps/contentstore/views.py +++ b/cms/djangoapps/contentstore/views.py @@ -682,6 +682,7 @@ def save_item(request): del existing_item._model_data[metadata_key] del posted_metadata[metadata_key] else: + # TODO, in here check if value is the same before setting. existing_item._model_data[metadata_key] = value # commit to datastore diff --git a/cms/static/coffee/src/views/module_edit.coffee b/cms/static/coffee/src/views/module_edit.coffee index 3cb3b1703f..1b849d1f55 100644 --- a/cms/static/coffee/src/views/module_edit.coffee +++ b/cms/static/coffee/src/views/module_edit.coffee @@ -35,6 +35,8 @@ class CMS.Views.ModuleEdit extends Backbone.View return _metadata + getMetadata: -> + cloneTemplate: (parent, template) -> $.post("/clone_item", { parent_location: parent diff --git a/cms/static/js/base.js b/cms/static/js/base.js index 3a51d797ec..4f3dab4857 100644 --- a/cms/static/js/base.js +++ b/cms/static/js/base.js @@ -845,15 +845,15 @@ function saveSetSectionScheduleDate(e) { data: JSON.stringify({ 'id': id, 'metadata': {'start': start}}) }).success(function () { var $thisSection = $('.courseware-section[data-id="' + id + '"]'); - var format = gettext('Will Release: %(date)s at $(time)s UTC'); + var format = gettext('Will Release: %(date)s at $(time)s UTC'); var willReleaseAt = interpolate(format, [input_date, input_time], true); $thisSection.find('.section-published-date').html( - '' + willReleaseAt + '' + - '' + - gettext('Edit') + ''); + '' + willReleaseAt + '' + + '' + + gettext('Edit') + ''); $thisSection.find('.section-published-date').animate({ 'background-color': 'rgb(182,37,104)' }, 300).animate({ diff --git a/cms/templates/base.html b/cms/templates/base.html index 3f286c2582..f1a87d6424 100644 --- a/cms/templates/base.html +++ b/cms/templates/base.html @@ -30,7 +30,7 @@ <%include file="courseware_vendor_js.html"/> - + diff --git a/cms/templates/widgets/metadata-edit.html b/cms/templates/widgets/metadata-edit.html index b351b5c344..4eb43da896 100644 --- a/cms/templates/widgets/metadata-edit.html +++ b/cms/templates/widgets/metadata-edit.html @@ -1,5 +1,6 @@ <% import hashlib + from xmodule.fields import StringyInteger, StringyFloat hlskey = hashlib.md5(module.location.url()).hexdigest() %> From 46100fd2585926888067487d3df312bccc64ee29 Mon Sep 17 00:00:00 2001 From: cahrens Date: Thu, 2 May 2013 12:32:32 -0400 Subject: [PATCH 37/94] Cleanup. --- cms/static/js/base.js | 14 +++++++------- cms/templates/base.html | 2 +- cms/templates/widgets/metadata-edit.html | 2 +- .../xmodule/xmodule/templates/problem/empty.yaml | 2 ++ 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/cms/static/js/base.js b/cms/static/js/base.js index 4f3dab4857..3a51d797ec 100644 --- a/cms/static/js/base.js +++ b/cms/static/js/base.js @@ -845,15 +845,15 @@ function saveSetSectionScheduleDate(e) { data: JSON.stringify({ 'id': id, 'metadata': {'start': start}}) }).success(function () { var $thisSection = $('.courseware-section[data-id="' + id + '"]'); - var format = gettext('Will Release: %(date)s at $(time)s UTC'); + var format = gettext('Will Release: %(date)s at $(time)s UTC'); var willReleaseAt = interpolate(format, [input_date, input_time], true); $thisSection.find('.section-published-date').html( - '' + willReleaseAt + '' + - '' + - gettext('Edit') + ''); + '' + willReleaseAt + '' + + '' + + gettext('Edit') + ''); $thisSection.find('.section-published-date').animate({ 'background-color': 'rgb(182,37,104)' }, 300).animate({ diff --git a/cms/templates/base.html b/cms/templates/base.html index f1a87d6424..3f286c2582 100644 --- a/cms/templates/base.html +++ b/cms/templates/base.html @@ -30,7 +30,7 @@ <%include file="courseware_vendor_js.html"/> - + diff --git a/cms/templates/widgets/metadata-edit.html b/cms/templates/widgets/metadata-edit.html index d4373c37fd..39ad8e480c 100644 --- a/cms/templates/widgets/metadata-edit.html +++ b/cms/templates/widgets/metadata-edit.html @@ -22,7 +22,7 @@ value='${field_value["field"].to_json(field_value["value"])}' % endif size='60' /> - ## Change to True to see all the information being passed through. + ## Change to False to see all the information being passed through. % if True: diff --git a/common/lib/xmodule/xmodule/templates/problem/empty.yaml b/common/lib/xmodule/xmodule/templates/problem/empty.yaml index b63d106d7c..39c9e7671c 100644 --- a/common/lib/xmodule/xmodule/templates/problem/empty.yaml +++ b/common/lib/xmodule/xmodule/templates/problem/empty.yaml @@ -1,8 +1,10 @@ --- metadata: display_name: Blank Common Problem + rerandomize: never showanswer: always markdown: "" + weight: "" empty: True attempts: "" data: | From 0b452f6195ddd92133750aefe6592c54b75ea28e Mon Sep 17 00:00:00 2001 From: Jay Zoldak Date: Thu, 2 May 2013 12:41:59 -0400 Subject: [PATCH 38/94] Change org for gcli status command from mitx to edx --- jenkins/base.sh | 4 ++-- jenkins/test.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jenkins/base.sh b/jenkins/base.sh index c7175e6e52..fc2595662a 100644 --- a/jenkins/base.sh +++ b/jenkins/base.sh @@ -1,6 +1,6 @@ function github_status { - gcli status create mitx mitx $GIT_COMMIT \ + gcli status create edx mitx $GIT_COMMIT \ --params=$1 \ target_url:$BUILD_URL \ description:"Build #$BUILD_NUMBER is running" \ @@ -9,4 +9,4 @@ function github_status { function github_mark_failed_on_exit { trap '[ $? == "0" ] || github_status state:failed' EXIT -} \ No newline at end of file +} diff --git a/jenkins/test.sh b/jenkins/test.sh index 53643b8440..7475076086 100755 --- a/jenkins/test.sh +++ b/jenkins/test.sh @@ -4,7 +4,7 @@ set -e set -x function github_status { - gcli status create mitx mitx $GIT_COMMIT \ + gcli status create edx mitx $GIT_COMMIT \ --params=$1 \ target_url:$BUILD_URL \ description:"Build #$BUILD_NUMBER $2" \ From f566b4f003111ce39c6780d6bec7dc7e6a704db8 Mon Sep 17 00:00:00 2001 From: James Tauber Date: Thu, 2 May 2013 13:05:20 -0400 Subject: [PATCH 39/94] fix requirements to use moved forks --- github-requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/github-requirements.txt b/github-requirements.txt index 0d7b75b89b..3b71d228e7 100644 --- a/github-requirements.txt +++ b/github-requirements.txt @@ -1,9 +1,9 @@ # Python libraries to install directly from github # Third-party: --e git://github.com/MITx/django-staticfiles.git@6d2504e5c8#egg=django-staticfiles --e git://github.com/MITx/django-pipeline.git#egg=django-pipeline --e git://github.com/MITx/django-wiki.git@e2e84558#egg=django-wiki +-e git://github.com/edx/django-staticfiles.git@6d2504e5c8#egg=django-staticfiles +-e git://github.com/edx/django-pipeline.git#egg=django-pipeline +-e git://github.com/edx/django-wiki.git@e2e84558#egg=django-wiki -e git://github.com/dementrock/pystache_custom.git@776973740bdaad83a3b029f96e415a7d1e8bec2f#egg=pystache_custom-dev # Our libraries: From c01410626fa4eb470cff5fdc8bed87adea28f0d2 Mon Sep 17 00:00:00 2001 From: cahrens Date: Thu, 2 May 2013 13:39:20 -0400 Subject: [PATCH 40/94] Jasmine test for changedMetadata method. --- cms/static/coffee/spec/views/module_edit_spec.coffee | 11 +++++++++++ cms/templates/widgets/metadata-edit.html | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cms/static/coffee/spec/views/module_edit_spec.coffee b/cms/static/coffee/spec/views/module_edit_spec.coffee index 5e83ecb42d..baf9ee9c20 100644 --- a/cms/static/coffee/spec/views/module_edit_spec.coffee +++ b/cms/static/coffee/spec/views/module_edit_spec.coffee @@ -72,3 +72,14 @@ describe "CMS.Views.ModuleEdit", -> it "loads the .xmodule-display inside the module editor", -> expect(XModule.loadModule).toHaveBeenCalled() expect(XModule.loadModule.mostRecentCall.args[0]).toBe($('.xmodule_display')) + + describe "changedMetadata", -> + it "returns empty if no metadata loaded", -> + expect(@moduleEdit.changedMetadata()).toEqual({}) + + it "returns only changed values", -> + @moduleEdit.originalMetadata = {'foo', 'bar'} + spyOn(@moduleEdit, 'metadata').andReturn({'a': '', 'b': 'before', 'c': ''}) + @moduleEdit.loadEdit() + @moduleEdit.metadata.andReturn({'a': '', 'b': 'after', 'd': 'only_after'}) + expect(@moduleEdit.changedMetadata()).toEqual({'b' : 'after', 'd' : 'only_after'}) diff --git a/cms/templates/widgets/metadata-edit.html b/cms/templates/widgets/metadata-edit.html index 39ad8e480c..9693c18e9c 100644 --- a/cms/templates/widgets/metadata-edit.html +++ b/cms/templates/widgets/metadata-edit.html @@ -22,8 +22,8 @@ value='${field_value["field"].to_json(field_value["value"])}' % endif size='60' /> - ## Change to False to see all the information being passed through. - % if True: + ## Change to True to see all the information being passed through. + % if False: From e0ebe6dacb6afaac95708cd0237de01d3da7dac9 Mon Sep 17 00:00:00 2001 From: cahrens Date: Thu, 2 May 2013 13:53:17 -0400 Subject: [PATCH 41/94] Remove TODO. --- cms/djangoapps/contentstore/views.py | 1 - 1 file changed, 1 deletion(-) diff --git a/cms/djangoapps/contentstore/views.py b/cms/djangoapps/contentstore/views.py index cf870b1edf..824d2119f1 100644 --- a/cms/djangoapps/contentstore/views.py +++ b/cms/djangoapps/contentstore/views.py @@ -682,7 +682,6 @@ def save_item(request): del existing_item._model_data[metadata_key] del posted_metadata[metadata_key] else: - # TODO, in here check if value is the same before setting. existing_item._model_data[metadata_key] = value # commit to datastore From aae40b4378fa40220a8c6fd382cc88f3c6ef7c2f Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Fri, 3 May 2013 08:55:40 -0400 Subject: [PATCH 42/94] Press updates LH: 381, 382, 383 --- common/djangoapps/student/views.py | 5 +- lms/static/images/press/cbsnews_178x138.jpg | Bin 0 -> 3158 bytes lms/static/images/press/nytimes_240x180.png | Bin 0 -> 4913 bytes .../images/press/wash_post_logo_178x138.jpg | Bin 0 -> 3083 bytes lms/templates/feed.rss | 13 ++- lms/templates/index.html | 17 +-- lms/templates/press.json | 102 ++++++++++++++++++ 7 files changed, 121 insertions(+), 16 deletions(-) create mode 100644 lms/static/images/press/cbsnews_178x138.jpg create mode 100644 lms/static/images/press/nytimes_240x180.png create mode 100644 lms/static/images/press/wash_post_logo_178x138.jpg diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index abcb9d988b..53d1c72cc4 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -76,8 +76,9 @@ def index(request, extra_context={}, user=None): ''' # The course selection work is done in courseware.courses. - domain = settings.MITX_FEATURES.get('FORCE_UNIVERSITY_DOMAIN') # normally False - if domain == False: # do explicit check, because domain=None is valid + domain = settings.MITX_FEATURES.get('FORCE_UNIVERSITY_DOMAIN') # normally False + # do explicit check, because domain=None is valid + if domain == False: domain = request.META.get('HTTP_HOST') courses = get_courses(None, domain=domain) diff --git a/lms/static/images/press/cbsnews_178x138.jpg b/lms/static/images/press/cbsnews_178x138.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c9fea9e31f4c511de205ed1b8520323a6678cf32 GIT binary patch literal 3158 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 P1IXSl`#%K>&d|RALqxSJ literal 0 HcmV?d00001 diff --git a/lms/static/images/press/nytimes_240x180.png b/lms/static/images/press/nytimes_240x180.png new file mode 100644 index 0000000000000000000000000000000000000000..d34376a91f7e71240e3dce1d2970b619894f1ed7 GIT binary patch literal 4913 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 literal 0 HcmV?d00001 diff --git a/lms/templates/feed.rss b/lms/templates/feed.rss index 07335bd22a..ca24d584c5 100644 --- a/lms/templates/feed.rss +++ b/lms/templates/feed.rss @@ -6,9 +6,18 @@ EdX Blog - 2013-04-03T14:00:12-07:00 + 2013-05-03T14:00:12-07:00 - tag:www.edx.org,2012:Post/17 + tag:www.edx.org,2013:Post/18 + 2013-05-02T14:00:00-07:00 + 2013-05-02T14:00:00-07:00 + + edX project at San Jose State featured in New York Times + <img src="${static.url('images/press/nytimes_240x180.png')}" /> + <p></p> + + + tag:www.edx.org,2013:Post/17 2012-12-19T14:00:00-07:00 2012-12-19T14:00:00-07:00 diff --git a/lms/templates/index.html b/lms/templates/index.html index f2fc34c8ec..109ab6fb2f 100644 --- a/lms/templates/index.html +++ b/lms/templates/index.html @@ -190,18 +190,11 @@ diff --git a/lms/templates/press.json b/lms/templates/press.json index 9cc79783ae..43c295b63e 100644 --- a/lms/templates/press.json +++ b/lms/templates/press.json @@ -1,4 +1,106 @@ [ + { + "title": "Adapting to Blended Courses, and Finding Early Benefits", + "url": "http://www.nytimes.com/2013/04/30/education/adapting-to-blended-courses-and-finding-early-benefits.html?ref=education", + "author": "Tamar Lewin", + "image": "nyt_logo_178x138.jpeg", + "deck": null, + "publication": "The New York Times", + "publish_date": "April 29, 2013" + }, + + { + "title": "Colleges Adapt Online Courses to Ease Burden", + "url": "http://www.nytimes.com/2013/04/30/education/colleges-adapt-online-courses-to-ease-burden.html?pagewanted=all", + "author": "Tamar Lewin", + "image": "nyt_logo_178x138.jpeg", + "deck": null, + "publication": "The New York Times", + "publish_date": "April 29, 2013" + }, + + { + "title": "Online Education Lifts Pass Rates at University", + "url": "http://online.wsj.com/article/SB10001424127887323741004578414861572832182.html?mod=googlenews_wsj", + "author": "Geoffrey Fowler", + "image": "wsj_logo_178x138.jpg", + "deck": null, + "publication": "The Wall Street Journal", + "publish_date": "April 10, 2013" + }, + + { + "title": "Software Seen Giving Grades on Essay Tests", + "url": "http://www.nytimes.com/2013/04/05/science/new-test-for-computers-grading-essays-at-college-level.html?pagewanted=all&_r=0", + "author": "John Markoff", + "image": "nyt_logo_178x138.jpeg", + "deck": null, + "publication": "The New York Times", + "publish_date": "April 4, 2013" + }, + + { + "title": "Stanford to help build edX MOOC platform", + "url": "http://www.washingtonpost.com/local/education/stanford-to-help-build-edx-mooc-platform/2013/04/02/5b53bb3e-9bbe-11e2-9a79-eb5280c81c63_story.html", + "author": "Nick Anderson", + "image": "wash_post_logo_178x138.jpg", + "deck": null, + "publication": "The Washington Post", + "publish_date": "April 3, 2013" + }, + + { + "title": "Could online ed end college as we know it?", + "url": "http://www.cbsnews.com/video/watch/?id=50143164n", + "author": "CBS This Morning", + "image": "cbsnews_178x138.jpg", + "deck": null, + "publication": "CBS Television Network", + "publish_date": "March 19, 2013" + }, + + { + "title": "The Professors’ Big Stage", + "url": "http://www.nytimes.com/2013/03/06/opinion/friedman-the-professors-big-stage.html?_r=1&#commentsContainer", + "author": "Thomas L. Friedman", + "image": "nyt_logo_178x138.jpeg", + "deck": null, + "publication": "The New York Times", + "publish_date": "March 6, 2013" + }, + + + { + "title": "Universities Abroad Join Partnerships On the Web", + "url": "http://www.nytimes.com/2013/02/21/education/universities-abroad-join-mooc-course-projects.html", + "author": "Tamar Lewin", + "image": "nyt_logo_178x138.jpeg", + "deck": null, + "publication": "The New York Times", + "publish_date": "February 20, 2013" + }, + + + { + "title": "Georgetown to offer free online courses", + "url": "http://www.washingtonpost.com/local/education/georgetown-to-offer-free-online-courses/2012/12/09/365c4612-3fd3-11e2-bca3-aadc9b7e29c5_story.html", + "author": "Nick Anderson", + "image": "wash_post_logo_178x138.jpg", + "deck": null, + "publication": "The Washington Post", + "publish_date": "December 9, 2012" + }, + + { + "title": "Wellesley College teams up with online provider edX", + "url": "http://bostonglobe.com/2012/12/04/edx/AqnQ808q4IEcaUa8KuZuBO/story.html", + "author": "Peter Schworm", + "image": "bostonglobe_logo_178x138.jpeg", + "deck": null, + "publication": "The Boston Globe", + "publish_date": "December 4, 2012" + }, + { "title": "The Year of the MOOC", "url": "http://www.nytimes.com/2012/11/04/education/edlife/massive-open-online-courses-are-multiplying-at-a-rapid-pace.html", From 0f7378a171d746d2bf0416ce32a84fbc3d8ca746 Mon Sep 17 00:00:00 2001 From: Greg Price Date: Thu, 25 Apr 2013 16:58:33 -0400 Subject: [PATCH 43/94] Modify UserFactory to create a profile for the user This allows specification of profile parameters when creating a user. Because the profile contents are always accessed from the database, the user must be saved to the database before the profile is created. This means that the profile cannot be created if the user is merely being built (and not saved) rather than created. --- common/djangoapps/student/tests/factories.py | 12 +++++++++++- lms/djangoapps/instructor/tests/test_gradebook.py | 3 +-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/common/djangoapps/student/tests/factories.py b/common/djangoapps/student/tests/factories.py index 0d9621fc01..9560025441 100644 --- a/common/djangoapps/student/tests/factories.py +++ b/common/djangoapps/student/tests/factories.py @@ -2,7 +2,7 @@ from student.models import (User, UserProfile, Registration, CourseEnrollmentAllowed, CourseEnrollment) from django.contrib.auth.models import Group from datetime import datetime -from factory import DjangoModelFactory, Factory, SubFactory, PostGenerationMethodCall +from factory import DjangoModelFactory, Factory, SubFactory, PostGenerationMethodCall, post_generation from uuid import uuid4 @@ -45,6 +45,16 @@ class UserFactory(DjangoModelFactory): last_login = datetime(2012, 1, 1) date_joined = datetime(2011, 1, 1) + @post_generation + def profile(obj, create, extracted, **kwargs): + if create: + obj.save() + return UserProfileFactory.create(user=obj, **kwargs) + elif kwargs: + raise Exception("Cannot build a user profile without saving the user") + else: + return None + class AdminFactory(UserFactory): is_staff = True diff --git a/lms/djangoapps/instructor/tests/test_gradebook.py b/lms/djangoapps/instructor/tests/test_gradebook.py index 2de5c18bcd..4b1d22b594 100644 --- a/lms/djangoapps/instructor/tests/test_gradebook.py +++ b/lms/djangoapps/instructor/tests/test_gradebook.py @@ -49,7 +49,6 @@ class TestGradebook(ModuleStoreTestCase): ] for user in self.users: - UserProfileFactory.create(user=user) CourseEnrollmentFactory.create(user=user, course_id=self.course.id) for i in xrange(USER_COUNT-1): @@ -151,4 +150,4 @@ class TestLetterCutoffPolicy(TestGradebook): # User 0 has 0 on Homeworks [1] # User 0 has 0 on the class [1] # One use at the top of the page [1] - self.assertEquals(3, self.response.content.count('grade_None')) \ No newline at end of file + self.assertEquals(3, self.response.content.count('grade_None')) From 7720c0fc8df9ac4dcea9526c6895ce6eaf8fb337 Mon Sep 17 00:00:00 2001 From: Jason Bau Date: Fri, 3 May 2013 11:45:21 -0700 Subject: [PATCH 44/94] Inserts overrides in env.lms.aws for email settings and timezone overrides what is set in env.lms.common using the lms.env.json file --- lms/envs/aws.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lms/envs/aws.py b/lms/envs/aws.py index aa30315eca..df81c1e3a9 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -60,6 +60,14 @@ LOG_DIR = ENV_TOKENS['LOG_DIR'] CACHES = ENV_TOKENS['CACHES'] +#Email overrides +DEFAULT_FROM_EMAIL = ENV_TOKENS.get('DEFAULT_FROM_EMAIL', DEFAULT_FROM_EMAIL) +DEFAULT_FEEDBACK_EMAIL = ENV_TOKENS.get('DEFAULT_FEEDBACK_EMAIL', DEFAULT_FEEDBACK_EMAIL) +ADMINS = ENV_TOKENS.get('ADMINS', ADMINS) + +#Timezone overrides +TIME_ZONE = ENV_TOKENS.get('TIME_ZONE', TIME_ZONE) + for feature, value in ENV_TOKENS.get('MITX_FEATURES', {}).items(): MITX_FEATURES[feature] = value From 37d594ce37a257fcea49a10610dc60488ccc9d48 Mon Sep 17 00:00:00 2001 From: cahrens Date: Fri, 3 May 2013 14:58:33 -0400 Subject: [PATCH 45/94] Get rid of non-editable scope. --- common/lib/xmodule/xmodule/capa_module.py | 17 +++++--- .../lib/xmodule/xmodule/discussion_module.py | 13 ++++-- common/lib/xmodule/xmodule/fields.py | 9 +--- common/lib/xmodule/xmodule/mako_module.py | 33 --------------- ...test_mako_module.py => test_xml_module.py} | 30 +++++++------ common/lib/xmodule/xmodule/x_module.py | 42 +++++++++++++++++++ common/lib/xmodule/xmodule/xml_module.py | 11 +++-- 7 files changed, 90 insertions(+), 65 deletions(-) rename common/lib/xmodule/xmodule/tests/{test_mako_module.py => test_xml_module.py} (73%) diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index d4db445ea8..daaaba07cd 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -17,7 +17,7 @@ from xmodule.x_module import XModule from xmodule.raw_module import RawDescriptor from xmodule.exceptions import NotFoundError, ProcessingError from xblock.core import Scope, String, Boolean, Object -from .fields import Timedelta, Date, StringyInteger, StringyFloat, NON_EDITABLE_SETTINGS_SCOPE +from .fields import Timedelta, Date, StringyInteger, StringyFloat from xmodule.util.date_utils import time_to_datetime log = logging.getLogger("mitx.courseware") @@ -63,13 +63,13 @@ class ComplexEncoder(json.JSONEncoder): class CapaFields(object): attempts = StringyInteger(help="Number of attempts taken by the student on this problem", default=0, scope=Scope.user_state) max_attempts = StringyInteger(help="Maximum number of attempts that a student is allowed", scope=Scope.settings) - due = Date(help="Date that this problem is due by", scope=NON_EDITABLE_SETTINGS_SCOPE) + due = Date(help="Date that this problem is due by", scope=Scope.settings) graceperiod = Timedelta(help="Amount of time after the due date that submissions will be accepted", - scope=NON_EDITABLE_SETTINGS_SCOPE) + scope=Scope.settings) showanswer = String(help="When to show the problem answer to the student", scope=Scope.settings, default="closed", values=["answered", "always", "attempted", "closed", "never"]) force_save_button = Boolean(help="Whether to force the save button to appear on the page", - scope=NON_EDITABLE_SETTINGS_SCOPE, default=False) + scope=Scope.settings, default=False) rerandomize = Randomization(help="When to rerandomize the problem", default="always", scope=Scope.settings) data = String(help="XML data for the problem", scope=Scope.content) correct_map = Object(help="Dictionary with the correctness of current student answers", scope=Scope.user_state, default={}) @@ -78,7 +78,7 @@ class CapaFields(object): done = Boolean(help="Whether the student has answered the problem", scope=Scope.user_state) seed = StringyInteger(help="Random seed for this student", scope=Scope.user_state) weight = StringyFloat(help="How much to weight this problem by", scope=Scope.settings) - markdown = String(help="Markdown source of this module", scope=NON_EDITABLE_SETTINGS_SCOPE) + markdown = String(help="Markdown source of this module", scope=Scope.settings) source_code = String(help="Source code for LaTeX and Word problems. This feature is not well-supported.", scope=Scope.settings) @@ -894,3 +894,10 @@ class CapaDescriptor(CapaFields, RawDescriptor): 'problems/' + path[8:], path[8:], ] + + @property + def non_editable_metadata_fields(self): + non_editable_fields = super(CapaDescriptor, self).non_editable_metadata_fields + non_editable_fields.extend([CapaDescriptor.due, CapaDescriptor.graceperiod, + CapaDescriptor.force_save_button, CapaDescriptor.markdown]) + return non_editable_fields \ No newline at end of file diff --git a/common/lib/xmodule/xmodule/discussion_module.py b/common/lib/xmodule/xmodule/discussion_module.py index b4409f5216..3ee2f2bae6 100644 --- a/common/lib/xmodule/xmodule/discussion_module.py +++ b/common/lib/xmodule/xmodule/discussion_module.py @@ -1,6 +1,5 @@ from pkg_resources import resource_string -from .fields import NON_EDITABLE_SETTINGS_SCOPE from xmodule.x_module import XModule from xmodule.raw_module import RawDescriptor from xmodule.editing_module import MetadataOnlyEditingDescriptor @@ -8,11 +7,10 @@ from xblock.core import String, Scope class DiscussionFields(object): - discussion_id = String(scope=NON_EDITABLE_SETTINGS_SCOPE) + discussion_id = String(scope=Scope.settings) discussion_category = String(scope=Scope.settings) discussion_target = String(scope=Scope.settings) - # We may choose to enable this in the future, but while Kevin is investigating.... - sort_key = String(scope=NON_EDITABLE_SETTINGS_SCOPE) + sort_key = String(scope=Scope.settings) class DiscussionModule(DiscussionFields, XModule): @@ -39,3 +37,10 @@ class DiscussionDescriptor(DiscussionFields, MetadataOnlyEditingDescriptor, RawD metadata_translations = dict(RawDescriptor.metadata_translations) metadata_translations['id'] = 'discussion_id' metadata_translations['for'] = 'discussion_target' + + @property + def non_editable_metadata_fields(self): + non_editable_fields = super(DiscussionDescriptor, self).non_editable_metadata_fields + # We may choose to enable sort_keys in the future, but while Kevin is investigating.... + non_editable_fields.extend([DiscussionDescriptor.discussion_id, DiscussionDescriptor.sort_key]) + return non_editable_fields \ No newline at end of file diff --git a/common/lib/xmodule/xmodule/fields.py b/common/lib/xmodule/xmodule/fields.py index b79accb2b3..3d56b7941e 100644 --- a/common/lib/xmodule/xmodule/fields.py +++ b/common/lib/xmodule/xmodule/fields.py @@ -7,18 +7,11 @@ from xblock.core import ModelType import datetime import dateutil.parser -from xblock.core import Integer, Float, Boolean, Scope +from xblock.core import Integer, Float, Boolean log = logging.getLogger(__name__) -class NonEditableSettingsScope(Scope): - pass - -# Same scope as Settings.scope, but not intended to be edited by users (in Studio). -NON_EDITABLE_SETTINGS_SCOPE = NonEditableSettingsScope(user=Scope.settings.user, block=Scope.settings.block) - - class Date(ModelType): ''' Date fields know how to parse and produce json (iso) compatible formats. diff --git a/common/lib/xmodule/xmodule/mako_module.py b/common/lib/xmodule/xmodule/mako_module.py index 02db0c602f..8abb1d7777 100644 --- a/common/lib/xmodule/xmodule/mako_module.py +++ b/common/lib/xmodule/xmodule/mako_module.py @@ -1,7 +1,4 @@ from .x_module import XModuleDescriptor, DescriptorSystem -from .fields import NonEditableSettingsScope -from xblock.core import Scope -from xblock.core import XBlock class MakoDescriptorSystem(DescriptorSystem): @@ -43,33 +40,3 @@ class MakoModuleDescriptor(XModuleDescriptor): return self.system.render_template( self.mako_template, self.get_context()) - @property - def editable_metadata_fields(self): - inherited_metadata = getattr(self, '_inherited_metadata', {}) - metadata = {} - for field in self.fields: - - if field.scope != Scope.settings or isinstance(field.scope, NonEditableSettingsScope): - continue - - # We are not allowing editing of xblock tag and name fields at this time (for any component). - if field == XBlock.tags or field == XBlock.name: - continue - - inherited = False - default = False - value = getattr(self, field.name) - if field.name in self._model_data: - default = False - if field.name in inherited_metadata and self._model_data.get(field.name) == inherited_metadata.get( - field.name): - inherited = True - else: - default = True - - metadata[field.name] = {'field' : field, - 'value': value, - 'is_inherited': inherited, - 'is_default': default } - - return metadata diff --git a/common/lib/xmodule/xmodule/tests/test_mako_module.py b/common/lib/xmodule/xmodule/tests/test_xml_module.py similarity index 73% rename from common/lib/xmodule/xmodule/tests/test_mako_module.py rename to common/lib/xmodule/xmodule/tests/test_xml_module.py index 7686e2a69e..06d5b0b0a3 100644 --- a/common/lib/xmodule/xmodule/tests/test_mako_module.py +++ b/common/lib/xmodule/xmodule/tests/test_xml_module.py @@ -1,17 +1,17 @@ from xmodule.x_module import XModuleFields from xblock.core import Scope, String, Object -from xmodule.fields import Date, StringyInteger, NON_EDITABLE_SETTINGS_SCOPE -from xmodule.mako_module import MakoModuleDescriptor +from xmodule.fields import Date, StringyInteger +from xmodule.xml_module import XmlDescriptor import unittest from . import test_system from mock import Mock class TestFields(object): - # Will be returned by editable_metadata_fields because Scope.settings. + # Will be returned by editable_metadata_fields. max_attempts = StringyInteger(scope=Scope.settings) - # Will not be returned by editable_metadata_fields because declared as non-editable Scope.settings. - due = Date(scope=NON_EDITABLE_SETTINGS_SCOPE) + # Will not be returned by editable_metadata_fields because filtered out by non_editable_metadata_fields. + due = Date(scope=Scope.settings) # Will not be returned by editable_metadata_fields because is not Scope.settings. student_answers = Object(scope=Scope.user_state) # Will be returned, and can override the inherited value from XModule. @@ -21,14 +21,15 @@ class TestFields(object): class EditableMetadataFieldsTest(unittest.TestCase): def test_display_name_field(self): - editable_fields = self.get_mako_editable_fields({}) + editable_fields = self.get_xml_editable_fields({}) # Tests that the xblock fields (currently tags and name) get filtered out. - self.assertEqual(1, len(editable_fields), "Expected only 1 editable field for mako descriptor.") + # Also tests that xml_attributes is filtered out of XmlDescriptor. + self.assertEqual(1, len(editable_fields), "Expected only 1 editable field for xml descriptor.") self.assert_display_name_default(editable_fields) def test_override_default(self): # Tests that is_default is correct when a value overrides the default. - editable_fields = self.get_mako_editable_fields({'display_name': 'foo'}) + editable_fields = self.get_xml_editable_fields({'display_name': 'foo'}) display_name = editable_fields['display_name'] self.assertFalse(display_name['is_default']) self.assertEqual('foo', display_name['value']) @@ -47,14 +48,19 @@ class EditableMetadataFieldsTest(unittest.TestCase): self.assert_field_values(editable_fields, 'display_name', XModuleFields.display_name, False, True, 'inherited') # Start of helper methods - def get_mako_editable_fields(self, model_data): + def get_xml_editable_fields(self, model_data): system = test_system() system.render_template = Mock(return_value="
    Test Template HTML
    ") - return MakoModuleDescriptor(system=system, location=None, model_data=model_data).editable_metadata_fields + return XmlDescriptor(system=system, location=None, model_data=model_data).editable_metadata_fields def get_module_editable_fields(self, model_data): - class TestModuleDescriptor(TestFields, MakoModuleDescriptor): - pass + class TestModuleDescriptor(TestFields, XmlDescriptor): + + @property + def non_editable_metadata_fields(self): + non_editable_fields = super(TestModuleDescriptor, self).non_editable_metadata_fields + non_editable_fields.append(TestModuleDescriptor.due) + return non_editable_fields system = test_system() system.render_template = Mock(return_value="
    Test Template HTML
    ") diff --git a/common/lib/xmodule/xmodule/x_module.py b/common/lib/xmodule/xmodule/x_module.py index 04ffcc6092..749ca66258 100644 --- a/common/lib/xmodule/xmodule/x_module.py +++ b/common/lib/xmodule/xmodule/x_module.py @@ -606,6 +606,48 @@ class XModuleDescriptor(XModuleFields, HTMLSnippet, ResourceTemplates, XBlock): model_data=self._model_data, )) + @property + def non_editable_metadata_fields(self): + """ + Return the list of fields that should not be editable in Studio. + + When overriding, be sure to append to the superclasses' list. + """ + # We are not allowing editing of xblock tag and name fields at this time (for any component). + return [XBlock.tags, XBlock.name] + + @property + def editable_metadata_fields(self): + """ + Returns the metadata fields to be edited in Studio. These are fields with scope `Scope.settings`. + + Can be limited by extending `non_editable_metadata_fields`. + """ + inherited_metadata = getattr(self, '_inherited_metadata', {}) + metadata = {} + for field in self.fields: + + if field.scope != Scope.settings or field in self.non_editable_metadata_fields: + continue + + inherited = False + default = False + value = getattr(self, field.name) + if field.name in self._model_data: + default = False + if field.name in inherited_metadata: + if self._model_data.get(field.name) == inherited_metadata.get(field.name): + inherited = True + else: + default = True + + metadata[field.name] = {'field': field, + 'value': value, + 'is_inherited': inherited, + 'is_default': default} + + return metadata + class DescriptorSystem(object): def __init__(self, load_item, resources_fs, error_tracker, **kwargs): diff --git a/common/lib/xmodule/xmodule/xml_module.py b/common/lib/xmodule/xmodule/xml_module.py index a34b0e5078..7480cda0c5 100644 --- a/common/lib/xmodule/xmodule/xml_module.py +++ b/common/lib/xmodule/xmodule/xml_module.py @@ -6,11 +6,10 @@ import sys from collections import namedtuple from lxml import etree -from xblock.core import Object +from xblock.core import Object, Scope from xmodule.x_module import (XModuleDescriptor, policy_key) from xmodule.modulestore import Location from xmodule.modulestore.inheritance import own_metadata -from .fields import NON_EDITABLE_SETTINGS_SCOPE log = logging.getLogger(__name__) @@ -86,7 +85,7 @@ class XmlDescriptor(XModuleDescriptor): """ xml_attributes = Object(help="Map of unhandled xml attributes, used only for storage between import and export", - default={}, scope=NON_EDITABLE_SETTINGS_SCOPE) + default={}, scope=Scope.settings) # Extension to append to filename paths filename_extension = 'xml' @@ -420,3 +419,9 @@ class XmlDescriptor(XModuleDescriptor): """ raise NotImplementedError( "%s does not implement definition_to_xml" % self.__class__.__name__) + + @property + def non_editable_metadata_fields(self): + non_editable_fields = super(XmlDescriptor, self).non_editable_metadata_fields + non_editable_fields.append(XmlDescriptor.xml_attributes) + return non_editable_fields From b344976fe79cc124e1fd7aeb323bd59ec3b89cd5 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Fri, 3 May 2013 15:08:28 -0400 Subject: [PATCH 46/94] Making linters happier --- cms/urls.py | 10 ++++---- common/djangoapps/heartbeat/urls.py | 2 +- .../django_comment_client/base/urls.py | 4 +--- .../django_comment_client/forum/urls.py | 3 +-- lms/djangoapps/django_comment_client/urls.py | 2 +- lms/djangoapps/simplewiki/urls.py | 24 +++++++++---------- lms/urls.py | 12 ++++------ 7 files changed, 25 insertions(+), 32 deletions(-) diff --git a/cms/urls.py b/cms/urls.py index 30d9ccbf56..3b91eceb44 100644 --- a/cms/urls.py +++ b/cms/urls.py @@ -6,7 +6,7 @@ from . import one_time_startup # from django.contrib import admin # admin.autodiscover() -urlpatterns = ('', +urlpatterns = ('', # nopep8 url(r'^$', 'contentstore.views.howitworks', name='homepage'), url(r'^listing', 'contentstore.views.index', name='index'), url(r'^edit/(?P.*?)$', 'contentstore.views.edit_unit', name='edit_unit'), @@ -118,17 +118,17 @@ urlpatterns += ( # static/proof-of-concept views url(r'^ux-alerts$', 'contentstore.views.ux_alerts', name='ux-alerts') - ) +) js_info_dict = { 'domain': 'djangojs', 'packages': ('cms',), - } +} urlpatterns += ( # Serve catalog of localized strings to be rendered by Javascript url(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict), - ) +) if settings.ENABLE_JASMINE: @@ -140,5 +140,3 @@ urlpatterns = patterns(*urlpatterns) # Custom error pages handler404 = 'contentstore.views.render_404' handler500 = 'contentstore.views.render_500' - - diff --git a/common/djangoapps/heartbeat/urls.py b/common/djangoapps/heartbeat/urls.py index 6049374dac..3f45a95dd2 100644 --- a/common/djangoapps/heartbeat/urls.py +++ b/common/djangoapps/heartbeat/urls.py @@ -1,5 +1,5 @@ from django.conf.urls import * -urlpatterns = patterns('', +urlpatterns = patterns('', # nopep8 url(r'^$', 'heartbeat.views.heartbeat', name='heartbeat'), ) diff --git a/lms/djangoapps/django_comment_client/base/urls.py b/lms/djangoapps/django_comment_client/base/urls.py index 92826a18ae..5a43030565 100644 --- a/lms/djangoapps/django_comment_client/base/urls.py +++ b/lms/djangoapps/django_comment_client/base/urls.py @@ -1,8 +1,6 @@ from django.conf.urls.defaults import url, patterns -import django_comment_client.base.views - -urlpatterns = patterns('django_comment_client.base.views', +urlpatterns = patterns('django_comment_client.base.views', # nopep8 url(r'upload$', 'upload', name='upload'), url(r'users/(?P\w+)/update_moderator_status$', 'update_moderator_status', name='update_moderator_status'), url(r'threads/tags/autocomplete$', 'tags_autocomplete', name='tags_autocomplete'), diff --git a/lms/djangoapps/django_comment_client/forum/urls.py b/lms/djangoapps/django_comment_client/forum/urls.py index 1e676dee87..863267fde9 100644 --- a/lms/djangoapps/django_comment_client/forum/urls.py +++ b/lms/djangoapps/django_comment_client/forum/urls.py @@ -1,7 +1,6 @@ from django.conf.urls.defaults import url, patterns -import django_comment_client.forum.views -urlpatterns = patterns('django_comment_client.forum.views', +urlpatterns = patterns('django_comment_client.forum.views', # nopep8 url(r'users/(?P\w+)/followed$', 'followed_threads', name='followed_threads'), url(r'users/(?P\w+)$', 'user_profile', name='user_profile'), url(r'^(?P[\w\-.]+)/threads/(?P\w+)$', 'single_thread', name='single_thread'), diff --git a/lms/djangoapps/django_comment_client/urls.py b/lms/djangoapps/django_comment_client/urls.py index a9fc86c363..98700da4ab 100644 --- a/lms/djangoapps/django_comment_client/urls.py +++ b/lms/djangoapps/django_comment_client/urls.py @@ -1,6 +1,6 @@ from django.conf.urls.defaults import url, patterns, include -urlpatterns = patterns('', +urlpatterns = patterns('', # nopep8 url(r'forum/?', include('django_comment_client.forum.urls')), url(r'', include('django_comment_client.base.urls')), ) diff --git a/lms/djangoapps/simplewiki/urls.py b/lms/djangoapps/simplewiki/urls.py index cf243e0bd3..629b753654 100644 --- a/lms/djangoapps/simplewiki/urls.py +++ b/lms/djangoapps/simplewiki/urls.py @@ -4,16 +4,16 @@ namespace_regex = r"[a-zA-Z\d._-]+" article_slug = r'/(?P' + namespace_regex + r'/[a-zA-Z\d_-]*)' namespace = r'/(?P' + namespace_regex + r')' -urlpatterns = patterns('', - url(r'^$', 'simplewiki.views.root_redirect', name='wiki_root'), - url(r'^view' + article_slug, 'simplewiki.views.view', name='wiki_view'), - url(r'^view_revision/(?P[0-9]+)' + article_slug, 'simplewiki.views.view_revision', name='wiki_view_revision'), - url(r'^edit' + article_slug, 'simplewiki.views.edit', name='wiki_edit'), - url(r'^create' + article_slug, 'simplewiki.views.create', name='wiki_create'), - url(r'^history' + article_slug + r'(?:/(?P[0-9]+))?$', 'simplewiki.views.history', name='wiki_history'), - url(r'^search_related' + article_slug, 'simplewiki.views.search_add_related', name='search_related'), - url(r'^random/?$', 'simplewiki.views.random_article', name='wiki_random'), - url(r'^revision_feed' + namespace + r'/(?P[0-9]+)?$', 'simplewiki.views.revision_feed', name='wiki_revision_feed'), - url(r'^search' + namespace + r'?$', 'simplewiki.views.search_articles', name='wiki_search_articles'), - url(r'^list' + namespace + r'?$', 'simplewiki.views.search_articles', name='wiki_list_articles'), # Just an alias for the search, but you usually don't submit a search term +urlpatterns = patterns('', # nopep8 + url(r'^$', 'simplewiki.views.root_redirect', name='wiki_root'), + url(r'^view' + article_slug, 'simplewiki.views.view', name='wiki_view'), + url(r'^view_revision/(?P[0-9]+)' + article_slug, 'simplewiki.views.view_revision', name='wiki_view_revision'), + url(r'^edit' + article_slug, 'simplewiki.views.edit', name='wiki_edit'), + url(r'^create' + article_slug, 'simplewiki.views.create', name='wiki_create'), + url(r'^history' + article_slug + r'(?:/(?P[0-9]+))?$', 'simplewiki.views.history', name='wiki_history'), + url(r'^search_related' + article_slug, 'simplewiki.views.search_add_related', name='search_related'), + url(r'^random/?$', 'simplewiki.views.random_article', name='wiki_random'), + url(r'^revision_feed' + namespace + r'/(?P[0-9]+)?$', 'simplewiki.views.revision_feed', name='wiki_revision_feed'), + url(r'^search' + namespace + r'?$', 'simplewiki.views.search_articles', name='wiki_search_articles'), + url(r'^list' + namespace + r'?$', 'simplewiki.views.search_articles', name='wiki_list_articles'), # Just an alias for the search, but you usually don't submit a search term ) diff --git a/lms/urls.py b/lms/urls.py index 082004c1be..126d68c73e 100644 --- a/lms/urls.py +++ b/lms/urls.py @@ -2,7 +2,6 @@ from django.conf import settings from django.conf.urls import patterns, include, url from django.contrib import admin from django.conf.urls.static import static -from django.views.generic import RedirectView from . import one_time_startup @@ -10,10 +9,9 @@ import django.contrib.auth.views # Uncomment the next two lines to enable the admin: if settings.DEBUG: - from django.contrib import admin admin.autodiscover() -urlpatterns = ('', +urlpatterns = ('', # nopep8 # certificate view url(r'^update_certificate$', 'certificates.views.update_certificate'), @@ -299,12 +297,12 @@ if settings.COURSEWARE_ENABLED: 'courseware.views.news', name="news"), url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/discussion/', include('django_comment_client.urls')) - ) + ) urlpatterns += ( # This MUST be the last view in the courseware--it's a catch-all for custom tabs. url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/(?P[^/]+)/$', 'courseware.views.static_tab', name="static_tab"), - ) + ) if settings.MITX_FEATURES.get('ENABLE_STUDENT_HISTORY_VIEW'): urlpatterns += ( @@ -346,13 +344,13 @@ if settings.MITX_FEATURES.get('ENABLE_LMS_MIGRATION'): url(r'^migrate/reload/(?P[^/]+)/(?P[^/]+)$', 'lms_migration.migrate.manage_modulestores'), url(r'^gitreload$', 'lms_migration.migrate.gitreload'), url(r'^gitreload/(?P[^/]+)$', 'lms_migration.migrate.gitreload'), - ) + ) if settings.MITX_FEATURES.get('ENABLE_SQL_TRACKING_LOGS'): urlpatterns += ( url(r'^event_logs$', 'track.views.view_tracking_log'), url(r'^event_logs/(?P.+)$', 'track.views.view_tracking_log'), - ) + ) # FoldIt views urlpatterns += ( From 9dd074f25bf523dfca6842ddd0c2b5bf1927d3e5 Mon Sep 17 00:00:00 2001 From: cahrens Date: Fri, 3 May 2013 15:09:02 -0400 Subject: [PATCH 47/94] Cleanup. --- common/lib/xmodule/xmodule/capa_module.py | 8 +++----- common/lib/xmodule/xmodule/discussion_module.py | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/common/lib/xmodule/xmodule/capa_module.py b/common/lib/xmodule/xmodule/capa_module.py index daaaba07cd..479cd5a759 100644 --- a/common/lib/xmodule/xmodule/capa_module.py +++ b/common/lib/xmodule/xmodule/capa_module.py @@ -64,12 +64,10 @@ class CapaFields(object): attempts = StringyInteger(help="Number of attempts taken by the student on this problem", default=0, scope=Scope.user_state) max_attempts = StringyInteger(help="Maximum number of attempts that a student is allowed", scope=Scope.settings) due = Date(help="Date that this problem is due by", scope=Scope.settings) - graceperiod = Timedelta(help="Amount of time after the due date that submissions will be accepted", - scope=Scope.settings) + graceperiod = Timedelta(help="Amount of time after the due date that submissions will be accepted", scope=Scope.settings) showanswer = String(help="When to show the problem answer to the student", scope=Scope.settings, default="closed", values=["answered", "always", "attempted", "closed", "never"]) - force_save_button = Boolean(help="Whether to force the save button to appear on the page", - scope=Scope.settings, default=False) + force_save_button = Boolean(help="Whether to force the save button to appear on the page", scope=Scope.settings, default=False) rerandomize = Randomization(help="When to rerandomize the problem", default="always", scope=Scope.settings) data = String(help="XML data for the problem", scope=Scope.content) correct_map = Object(help="Dictionary with the correctness of current student answers", scope=Scope.user_state, default={}) @@ -900,4 +898,4 @@ class CapaDescriptor(CapaFields, RawDescriptor): non_editable_fields = super(CapaDescriptor, self).non_editable_metadata_fields non_editable_fields.extend([CapaDescriptor.due, CapaDescriptor.graceperiod, CapaDescriptor.force_save_button, CapaDescriptor.markdown]) - return non_editable_fields \ No newline at end of file + return non_editable_fields diff --git a/common/lib/xmodule/xmodule/discussion_module.py b/common/lib/xmodule/xmodule/discussion_module.py index 3ee2f2bae6..98082ddea2 100644 --- a/common/lib/xmodule/xmodule/discussion_module.py +++ b/common/lib/xmodule/xmodule/discussion_module.py @@ -43,4 +43,4 @@ class DiscussionDescriptor(DiscussionFields, MetadataOnlyEditingDescriptor, RawD non_editable_fields = super(DiscussionDescriptor, self).non_editable_metadata_fields # We may choose to enable sort_keys in the future, but while Kevin is investigating.... non_editable_fields.extend([DiscussionDescriptor.discussion_id, DiscussionDescriptor.sort_key]) - return non_editable_fields \ No newline at end of file + return non_editable_fields From 5c3719b915439f57dd35bceabd6313cca0eb71b0 Mon Sep 17 00:00:00 2001 From: cahrens Date: Fri, 3 May 2013 15:31:18 -0400 Subject: [PATCH 48/94] Get HTML LaTeX "working" again. --- common/lib/xmodule/xmodule/html_module.py | 1 + 1 file changed, 1 insertion(+) diff --git a/common/lib/xmodule/xmodule/html_module.py b/common/lib/xmodule/xmodule/html_module.py index 0c147ecf75..bbf24a6320 100644 --- a/common/lib/xmodule/xmodule/html_module.py +++ b/common/lib/xmodule/xmodule/html_module.py @@ -19,6 +19,7 @@ log = logging.getLogger("mitx.courseware") class HtmlFields(object): data = String(help="Html contents to display for this module", scope=Scope.content) + source_code = String(help="Source code for LaTeX documents. This feature is not well-supported.", scope=Scope.settings) class HtmlModule(HtmlFields, XModule): From 32d67be5f53d864966d50821e1e2bdea413fc644 Mon Sep 17 00:00:00 2001 From: cahrens Date: Fri, 3 May 2013 16:42:41 -0400 Subject: [PATCH 49/94] Get rid of _computed_default. --- common/lib/xmodule/xmodule/course_module.py | 4 ++-- common/lib/xmodule/xmodule/tests/test_course_module.py | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/common/lib/xmodule/xmodule/course_module.py b/common/lib/xmodule/xmodule/course_module.py index 1ea51bd7f1..9b37afd1fe 100644 --- a/common/lib/xmodule/xmodule/course_module.py +++ b/common/lib/xmodule/xmodule/course_module.py @@ -162,8 +162,7 @@ class CourseFields(object): discussion_blackouts = List(help="List of pairs of start/end dates for discussion blackouts", scope=Scope.settings) discussion_topics = Object( help="Map of topics names to ids", - scope=Scope.settings, - computed_default=lambda c: {'General': {'id': c.location.html_id()}}, + scope=Scope.settings ) testcenter_info = Object(help="Dictionary of Test Center info", scope=Scope.settings) announcement = Date(help="Date this course is announced", scope=Scope.settings) @@ -234,6 +233,7 @@ class CourseDescriptor(CourseFields, SequenceDescriptor): self._grading_policy = {} self.set_grading_policy(self.grading_policy) + CourseFields.discussion_topics._default = {'General': {'id': self.location.html_id()}} self.test_center_exams = [] test_center_info = self.testcenter_info diff --git a/common/lib/xmodule/xmodule/tests/test_course_module.py b/common/lib/xmodule/xmodule/tests/test_course_module.py index 15bab32c14..34428d6883 100644 --- a/common/lib/xmodule/xmodule/tests/test_course_module.py +++ b/common/lib/xmodule/xmodule/tests/test_course_module.py @@ -171,3 +171,7 @@ class IsNewCourseTestCase(unittest.TestCase): d = self.get_dummy_course('2012-12-02T12:00', end='2014-9-04T12:00') self.assertEqual('Sep 04, 2014', d.end_date_text) + + def test_default_discussion_topics(self): + d = self.get_dummy_course('2012-12-02T12:00') + self.assertEqual({'General': {'id': 'i4x-test_org-test_course-course-test'}}, d.discussion_topics) From e44c6b6bf8c89d03347d47fc31297871a5b7bb51 Mon Sep 17 00:00:00 2001 From: cahrens Date: Fri, 3 May 2013 17:05:02 -0400 Subject: [PATCH 50/94] Don't reach in to default value. --- common/lib/xmodule/xmodule/course_module.py | 3 +- .../xmodule/tests/test_course_module.py | 80 ++++++++++--------- 2 files changed, 43 insertions(+), 40 deletions(-) diff --git a/common/lib/xmodule/xmodule/course_module.py b/common/lib/xmodule/xmodule/course_module.py index 9b37afd1fe..5efd7b4005 100644 --- a/common/lib/xmodule/xmodule/course_module.py +++ b/common/lib/xmodule/xmodule/course_module.py @@ -233,7 +233,8 @@ class CourseDescriptor(CourseFields, SequenceDescriptor): self._grading_policy = {} self.set_grading_policy(self.grading_policy) - CourseFields.discussion_topics._default = {'General': {'id': self.location.html_id()}} + if self.discussion_topics == {}: + self.discussion_topics = {'General': {'id': self.location.html_id()}} self.test_center_exams = [] test_center_info = self.testcenter_info diff --git a/common/lib/xmodule/xmodule/tests/test_course_module.py b/common/lib/xmodule/xmodule/tests/test_course_module.py index 34428d6883..0d789964e9 100644 --- a/common/lib/xmodule/xmodule/tests/test_course_module.py +++ b/common/lib/xmodule/xmodule/tests/test_course_module.py @@ -40,34 +40,20 @@ class DummySystem(ImportSystem): ) -class IsNewCourseTestCase(unittest.TestCase): - """Make sure the property is_new works on courses""" +def get_dummy_course(start, announcement=None, is_new=None, advertised_start=None, end=None): + """Get a dummy course""" - def setUp(self): - # Needed for test_is_newish - datetime_patcher = patch.object( - xmodule.course_module, 'datetime', - Mock(wraps=datetime.datetime) - ) - mocked_datetime = datetime_patcher.start() - mocked_datetime.utcnow.return_value = time_to_datetime(NOW) - self.addCleanup(datetime_patcher.stop) + system = DummySystem(load_error_modules=True) - @staticmethod - def get_dummy_course(start, announcement=None, is_new=None, advertised_start=None, end=None): - """Get a dummy course""" + def to_attrb(n, v): + return '' if v is None else '{0}="{1}"'.format(n, v).lower() - system = DummySystem(load_error_modules=True) + is_new = to_attrb('is_new', is_new) + announcement = to_attrb('announcement', announcement) + advertised_start = to_attrb('advertised_start', advertised_start) + end = to_attrb('end', end) - def to_attrb(n, v): - return '' if v is None else '{0}="{1}"'.format(n, v).lower() - - is_new = to_attrb('is_new', is_new) - announcement = to_attrb('announcement', announcement) - advertised_start = to_attrb('advertised_start', advertised_start) - end = to_attrb('end', end) - - start_xml = ''' + start_xml = ''' '''.format(org=ORG, course=COURSE, start=start, is_new=is_new, - announcement=announcement, advertised_start=advertised_start, end=end) + announcement=announcement, advertised_start=advertised_start, end=end) - return system.process_xml(start_xml) + return system.process_xml(start_xml) + + +class IsNewCourseTestCase(unittest.TestCase): + """Make sure the property is_new works on courses""" + + def setUp(self): + # Needed for test_is_newish + datetime_patcher = patch.object( + xmodule.course_module, 'datetime', + Mock(wraps=datetime.datetime) + ) + mocked_datetime = datetime_patcher.start() + mocked_datetime.utcnow.return_value = time_to_datetime(NOW) + self.addCleanup(datetime_patcher.stop) @patch('xmodule.course_module.time.gmtime') def test_sorting_score(self, gmtime_mock): @@ -120,8 +120,8 @@ class IsNewCourseTestCase(unittest.TestCase): ] for a, b, assertion in dates: - a_score = self.get_dummy_course(start=a[0], announcement=a[1], advertised_start=a[2]).sorting_score - b_score = self.get_dummy_course(start=b[0], announcement=b[1], advertised_start=b[2]).sorting_score + a_score = get_dummy_course(start=a[0], announcement=a[1], advertised_start=a[2]).sorting_score + b_score = get_dummy_course(start=b[0], announcement=b[1], advertised_start=b[2]).sorting_score print "Comparing %s to %s" % (a, b) assertion(a_score, b_score) @@ -138,40 +138,42 @@ class IsNewCourseTestCase(unittest.TestCase): ] for s in settings: - d = self.get_dummy_course(start=s[0], advertised_start=s[1]) + d = get_dummy_course(start=s[0], advertised_start=s[1]) print "Checking start=%s advertised=%s" % (s[0], s[1]) self.assertEqual(d.start_date_text, s[2]) def test_is_newish(self): - descriptor = self.get_dummy_course(start='2012-12-02T12:00', is_new=True) + descriptor = get_dummy_course(start='2012-12-02T12:00', is_new=True) assert(descriptor.is_newish is True) - descriptor = self.get_dummy_course(start='2013-02-02T12:00', is_new=False) + descriptor = get_dummy_course(start='2013-02-02T12:00', is_new=False) assert(descriptor.is_newish is False) - descriptor = self.get_dummy_course(start='2013-02-02T12:00', is_new=True) + descriptor = get_dummy_course(start='2013-02-02T12:00', is_new=True) assert(descriptor.is_newish is True) - descriptor = self.get_dummy_course(start='2013-01-15T12:00') + descriptor = get_dummy_course(start='2013-01-15T12:00') assert(descriptor.is_newish is True) - descriptor = self.get_dummy_course(start='2013-03-01T12:00') + descriptor = get_dummy_course(start='2013-03-01T12:00') assert(descriptor.is_newish is True) - descriptor = self.get_dummy_course(start='2012-10-15T12:00') + descriptor = get_dummy_course(start='2012-10-15T12:00') assert(descriptor.is_newish is False) - descriptor = self.get_dummy_course(start='2012-12-31T12:00') + descriptor = get_dummy_course(start='2012-12-31T12:00') assert(descriptor.is_newish is True) def test_end_date_text(self): # No end date set, returns empty string. - d = self.get_dummy_course('2012-12-02T12:00') + d = get_dummy_course('2012-12-02T12:00') self.assertEqual('', d.end_date_text) - d = self.get_dummy_course('2012-12-02T12:00', end='2014-9-04T12:00') + d = get_dummy_course('2012-12-02T12:00', end='2014-9-04T12:00') self.assertEqual('Sep 04, 2014', d.end_date_text) + +class DiscussionTopicsTestCase(unittest.TestCase): def test_default_discussion_topics(self): - d = self.get_dummy_course('2012-12-02T12:00') + d = get_dummy_course('2012-12-02T12:00') self.assertEqual({'General': {'id': 'i4x-test_org-test_course-course-test'}}, d.discussion_topics) From 8ef88fa5b0b64748286bbe3dfb802eb629af82d6 Mon Sep 17 00:00:00 2001 From: Jay Zoldak Date: Mon, 6 May 2013 10:24:38 -0400 Subject: [PATCH 51/94] Fix tests that randomly fail when run in concurrent jobs on jenkins. --- lms/djangoapps/courseware/tests/tests.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lms/djangoapps/courseware/tests/tests.py b/lms/djangoapps/courseware/tests/tests.py index 4c9f592797..d5064ec5e5 100644 --- a/lms/djangoapps/courseware/tests/tests.py +++ b/lms/djangoapps/courseware/tests/tests.py @@ -1,13 +1,13 @@ ''' Test for lms courseware app ''' - import logging import json import time import random from urlparse import urlsplit, urlunsplit +from uuid import uuid4 from django.contrib.auth.models import User, Group from django.test import TestCase @@ -62,7 +62,7 @@ def mongo_store_config(data_dir): 'default_class': 'xmodule.raw_module.RawDescriptor', 'host': 'localhost', 'db': 'test_xmodule', - 'collection': 'modulestore', + 'collection': 'modulestore_%s' % uuid4().hex, 'fs_root': data_dir, 'render_template': 'mitxmako.shortcuts.render_to_string', } @@ -81,7 +81,7 @@ def draft_mongo_store_config(data_dir): 'default_class': 'xmodule.raw_module.RawDescriptor', 'host': 'localhost', 'db': 'test_xmodule', - 'collection': 'modulestore', + 'collection': 'modulestore_%s' % uuid4().hex, 'fs_root': data_dir, 'render_template': 'mitxmako.shortcuts.render_to_string', } @@ -92,7 +92,7 @@ def draft_mongo_store_config(data_dir): 'default_class': 'xmodule.raw_module.RawDescriptor', 'host': 'localhost', 'db': 'test_xmodule', - 'collection': 'modulestore', + 'collection': 'modulestore_%s' % uuid4().hex, 'fs_root': data_dir, 'render_template': 'mitxmako.shortcuts.render_to_string', } From 457b678af714dd50ffe56e1efdf95101aa1409ae Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Thu, 2 May 2013 13:32:25 -0400 Subject: [PATCH 52/94] Wrote a proper README file So that no one else will have to go through what I went through. Hopefully. --- README | 1 - README.md | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+), 1 deletion(-) delete mode 100644 README create mode 100644 README.md diff --git a/README b/README deleted file mode 100644 index 2ed50ba063..0000000000 --- a/README +++ /dev/null @@ -1 +0,0 @@ -See doc/ for documentation. diff --git a/README.md b/README.md new file mode 100644 index 0000000000..1642539c6b --- /dev/null +++ b/README.md @@ -0,0 +1,120 @@ +This is edX, a platform for online higher education. The project is primarily +written in [Python](http://python.org/), using the +[Django](https://www.djangoproject.com/) framework. We also use some +[Ruby](http://www.ruby-lang.org/) and some [NodeJS](http://nodejs.org/). + +Installation +============ +The installation process is a bit messy at the moment. Here's a high-level +overview of what you should do to get started. + +**TLDR:** There is a `create-dev-env.sh` script that will attempt to set all +of this up for you. If you're in a hurry, run that script. Otherwise, I suggest +that you understand what the script is doing, and why, by reading this document. + +Directory Hierarchy +------------------- +This code assumes that it is checked out in a directory that has three sibling +directories: `data` (used for application data?), `db` (used to hold a +[sqlite](https://sqlite.org/) database), and `log` (used to hold logs). If you +clone the repository into a directory called `edx` inside of a directory +called `dev`, here's an example of how the directory hierarchy should look: + + * dev + \ + * data + * db + * log + * edx + \ + README.md + +Language Runtimes +----------------- +You'll need to be sure that you have Python 2.7, Ruby 1.9.3, and NodeJS +(latest stable) installed on your system. Some of these you can install +using your system's package manager: [homebrew](http://mxcl.github.io/homebrew/) +for Mac, [apt](http://wiki.debian.org/Apt) for Debian-based systems +(including Ubuntu), [rpm](http://www.rpm.org/) or [yum](http://yum.baseurl.org/) +for Red Hat based systems (including CentOS). + +If your system's package manager gives you the wrong version of a language +runtime, then you'll need to use a versioning tool to install the correct version. +Usually, you'll need to do this for Ruby: you can use +[`rbenv`](https://github.com/sstephenson/rbenv) or [`rvm`](https://rvm.io/), but +typically `rbenv` is simpler. For Python, you can use +[`pythonz`](http://saghul.github.io/pythonz/), +and for Node, you can use [`nvm`](https://github.com/creationix/nvm). + +Virtual Environments +-------------------- +Often, different projects will have conflicting dependencies: for example, two +projects depending on two different, incompatible versions of a library. Clearly, +you can't have both versions installed and used on your machine simultaneously. +Virtual environments were created to solve this problem: by installing libraries +into an isolated environment, only projects that live inside the environment +will be able to see and use those libraries. Incompatible dependencies? Use +different virtual environments, and your problem is solved. + +Once again, each language has a different implementation. Python has +[virtualenv](http://www.virtualenv.org/), Ruby has +[`bundler`](http://gembundler.com/), and Node has +[`nave`](https://github.com/isaacs/nave). For each language, decide +if you want to use a virtual environment, or if you want to install all the +language dependencies globally (and risk conflicts). I suggest you start with +installing things globally until and unless things break; you can always +switch over to a virtual environment later on. + +Language Packages +----------------- +The Python libraries we use are listed in `requirements.txt`. The Ruby libraries +we use are listed in `Gemfile`. The Node libraries we use are listed in +`packages.json`. Python has a library installer called +[`pip`](http://www.pip-installer.org/), Ruby has a library installer called +[`gem`](https://rubygems.org/) (or `bundle` if you're using a virtual +environment), and Node has a library installer called +[`npm`](https://npmjs.org/). +Once you've got your languages and virtual environments set up, install +the libraries like so: + + $ pip install -r requirements.txt + $ bundle install + $ npm install + +Configuring Your Project +------------------------ +We use [`rake`](http://rake.rubyforge.org/) to execute common tasks in our +project. The `rake` tasks are defined in the `rakefile`, or you can run `rake -T` +to view a summary. + +Before you run your project, you need to create a sqlite database and create +tables in that database. Fortunately, `rake` will do it for you! Just run: + + $ rake django-admin[syncdb] + $ rake django-admin[migrate] + +If you are running these commands using the [`zsh`](http://www.zsh.org/) shell, +zsh will assume that you are doing +[shell globbing](https://en.wikipedia.org/wiki/Glob_(programming)), search for +a file in your directory named `django-adminsyncdb` or `django-adminmigrate`, +and fail. To fix this, just surround the argument with quotation marks, so that +you're running `rake "django-admin[syncdb]"`. + +Run Your Project +---------------- +To *finally* get up and running, just run: + + $ rake cms + +And `rake` will start up your Django project on the localhost, port 8001. To +view your running project, type `127.0.0.1:8001` into your web browser, and +you should see edX in all its glory! + + +Further Documentation +===================== +Once you've got your project up and running, you can check out the `docs` +directory to see more documentation about how edX is structured. + + + From a58f39695aa55bf80012f9e8a920c9724d456b04 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Thu, 2 May 2013 13:50:22 -0400 Subject: [PATCH 53/94] Remove install.txt, because all that information is in the README.md file now --- install.txt | 74 ----------------------------------------------------- 1 file changed, 74 deletions(-) delete mode 100644 install.txt diff --git a/install.txt b/install.txt deleted file mode 100644 index 801036af6b..0000000000 --- a/install.txt +++ /dev/null @@ -1,74 +0,0 @@ -This document describes how to set up the MITx development environment -for both Linux (Ubuntu) and MacOS (OSX Lion). - -There is also a script "create-dev-env.sh" that automates these steps. - -1) Make an mitx_all directory and clone the repos - (download and install git and mercurial if you don't have them already) - - mkdir ~/mitx_all - cd ~/mitx_all - git clone git@github.com:MITx/mitx.git - hg clone ssh://hg-content@gp.mitx.mit.edu/data - -2) Install OSX dependencies (Mac users only) - - a) Install the brew utility if necessary - /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)" - - b) Install the brew package list - cat ~/mitx_all/mitx/brew-formulas.txt | xargs brew install - - c) Install python pip if necessary - sudo easy_install pip - - d) Install python virtualenv if necessary - sudo pip install virtualenv virtualenvwrapper - - e) Install coffee script - curl http://npmjs.org/install.sh | sh - npm install -g coffee-script - -3) Install Ubuntu dependencies (Linux users only) - - sudo apt-get install curl python-virtualenv build-essential python-dev gfortran liblapack-dev libfreetype6-dev libpng12-dev libxml2-dev libxslt-dev yui-compressor coffeescript - - -4) Install rvm, ruby, and libraries - - echo "export rvm_path=$HOME/mitx_all/ruby" > $HOME/.rvmrc - curl -sL get.rvm.io | bash -s stable - source ~/mitx_all/ruby/scripts/rvm - rvm install 1.9.3 - gem install bundler - cd ~/mitx_all/mitx - bundle install - -5) Install python libraries - - source ~/mitx_all/python/bin/activate - cd ~/mitx_all - pip install -r mitx/pre-requirements.txt - pip install -r mitx/requirements.txt - -6) Create log and db dirs - - mkdir ~/mitx_all/log - mkdir ~/mitx_all/db - -7) Start the dev server - - To start using Django you will need - to activate the local Python and Ruby - environment: - - $ source ~/mitx_all/ruby/scripts/rvm - $ source ~/mitx_all/python/bin/activate - - To initialize and start a local instance of Django: - - $ cd ~/mitx_all/mitx - $ django-admin.py syncdb --settings=envs.dev --pythonpath=. - $ django-admin.py migrate --settings=envs.dev --pythonpath=. - $ django-admin.py runserver --settings=envs.dev --pythonpath=. - From a0727ac2261ce5e557a22ce504b20e64abdf1ede Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Thu, 2 May 2013 13:53:42 -0400 Subject: [PATCH 54/94] Virtualenv is a tool, and should be surrounded by backticks --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1642539c6b..db839cfbfb 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ will be able to see and use those libraries. Incompatible dependencies? Use different virtual environments, and your problem is solved. Once again, each language has a different implementation. Python has -[virtualenv](http://www.virtualenv.org/), Ruby has +[`virtualenv`](http://www.virtualenv.org/), Ruby has [`bundler`](http://gembundler.com/), and Node has [`nave`](https://github.com/isaacs/nave). For each language, decide if you want to use a virtual environment, or if you want to install all the From 1bda218e17d2ca6d7212f947e7544c85cce9535c Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Thu, 2 May 2013 16:27:19 -0400 Subject: [PATCH 55/94] Clarify purpose of `data` dir --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index db839cfbfb..498277d646 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ that you understand what the script is doing, and why, by reading this document. Directory Hierarchy ------------------- This code assumes that it is checked out in a directory that has three sibling -directories: `data` (used for application data?), `db` (used to hold a +directories: `data` (used for XML course data), `db` (used to hold a [sqlite](https://sqlite.org/) database), and `log` (used to hold logs). If you clone the repository into a directory called `edx` inside of a directory called `dev`, here's an example of how the directory hierarchy should look: From fccee7a1e320be73b8506d71f5a507bc83ce60e4 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Thu, 2 May 2013 16:29:26 -0400 Subject: [PATCH 56/94] Node does virtual environments using npm --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 498277d646..7d8a61e7b4 100644 --- a/README.md +++ b/README.md @@ -58,12 +58,12 @@ different virtual environments, and your problem is solved. Once again, each language has a different implementation. Python has [`virtualenv`](http://www.virtualenv.org/), Ruby has -[`bundler`](http://gembundler.com/), and Node has -[`nave`](https://github.com/isaacs/nave). For each language, decide -if you want to use a virtual environment, or if you want to install all the -language dependencies globally (and risk conflicts). I suggest you start with -installing things globally until and unless things break; you can always -switch over to a virtual environment later on. +[`bundler`](http://gembundler.com/), and Node's virtual environment support +is built into [`npm`](https://npmjs.org/), it's library management tool. +For each language, decide if you want to use a virtual environment, or if you +want to install all the language dependencies globally (and risk conflicts). +I suggest you start with installing things globally until and unless things +break; you can always switch over to a virtual environment later on. Language Packages ----------------- From 06ade12f6a782e5cb0ca2f47d4f1fde16554b1c6 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Thu, 2 May 2013 16:42:51 -0400 Subject: [PATCH 57/94] Also need to install Mongo --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index 7d8a61e7b4..05f1eff406 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,18 @@ the libraries like so: $ bundle install $ npm install +Other Dependencies +------------------ +You'll also need to install [MongoDB](http://www.mongodb.org/), since our +application uses it in addition to sqlite. You can install it through your +system package manager, and I suggest that you configure it to start +automatically when you boot up your system, so that you never have to worry +about it again. For Mac, use +[`launchd`](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/launchd.8.html) +(running `brew info mongodb` will give you some commands you can copy-paste.) +For Linux, you can use [`upstart`](http://upstart.ubuntu.com/), `chkconfig`, +or any other process management tool. + Configuring Your Project ------------------------ We use [`rake`](http://rake.rubyforge.org/) to execute common tasks in our From 03470fc48e09eef7b2ba7ba72013fd6799114705 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Thu, 2 May 2013 09:43:18 -0400 Subject: [PATCH 58/94] Add a mention of create-dev-env.sh --- doc/development.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/development.md b/doc/development.md index 95cc32329c..a6a1de4ef7 100644 --- a/doc/development.md +++ b/doc/development.md @@ -31,6 +31,14 @@ Check out the course data directories that you want to work with into the rake resetdb +## Installing + +To create your development environment, run the shell script in the root of +the repo: + + create-dev-env.sh + + ## Starting development servers Both the LMS and Studio can be started using the following shortcut tasks From 98243b2b53f77aca569e50b8d7936f4ae01148d5 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Fri, 3 May 2013 10:55:28 -0400 Subject: [PATCH 59/94] Document django-admin[update_templates] step --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 05f1eff406..2c4d76f8fd 100644 --- a/README.md +++ b/README.md @@ -99,11 +99,13 @@ We use [`rake`](http://rake.rubyforge.org/) to execute common tasks in our project. The `rake` tasks are defined in the `rakefile`, or you can run `rake -T` to view a summary. -Before you run your project, you need to create a sqlite database and create -tables in that database. Fortunately, `rake` will do it for you! Just run: +Before you run your project, you need to create a sqlite database, create +tables in that database, run database migrations, and populate templates for +CMS templates. Fortunately, `rake` will do all of this for you! Just run: $ rake django-admin[syncdb] $ rake django-admin[migrate] + $ rake django-admin[update_templates] If you are running these commands using the [`zsh`](http://www.zsh.org/) shell, zsh will assume that you are doing From fa87cccb9ba7cf99fda9a9785a52b18d866efc95 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Fri, 3 May 2013 11:16:05 -0400 Subject: [PATCH 60/94] Document old-style `rake lms` command --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 2c4d76f8fd..9f5d7ba1c1 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,13 @@ And `rake` will start up your Django project on the localhost, port 8001. To view your running project, type `127.0.0.1:8001` into your web browser, and you should see edX in all its glory! +If you need to run old XML-only LMS (which doesn't use the database), run this +instead: + + $ rake lms + +And `rake` will start up the old project on localhost port 8000. + Further Documentation ===================== From 2a09f6bac10fa3bb04479dbb0c5429b2b82d5dd8 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Fri, 3 May 2013 11:28:05 -0400 Subject: [PATCH 61/94] Clarified based on @shnayder's comment --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9f5d7ba1c1..80e534730d 100644 --- a/README.md +++ b/README.md @@ -124,8 +124,8 @@ And `rake` will start up your Django project on the localhost, port 8001. To view your running project, type `127.0.0.1:8001` into your web browser, and you should see edX in all its glory! -If you need to run old XML-only LMS (which doesn't use the database), run this -instead: +If you need to run old XML-only LMS (which doesn't use the mongo database for +course content), run this instead: $ rake lms From ee6d68e2e0ecc701f3f97c2110cc671c67c58ed3 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Fri, 3 May 2013 14:41:58 -0400 Subject: [PATCH 62/94] grammar --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 80e534730d..5ac5f91632 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ different virtual environments, and your problem is solved. Once again, each language has a different implementation. Python has [`virtualenv`](http://www.virtualenv.org/), Ruby has [`bundler`](http://gembundler.com/), and Node's virtual environment support -is built into [`npm`](https://npmjs.org/), it's library management tool. +is built into [`npm`](https://npmjs.org/), its library management tool. For each language, decide if you want to use a virtual environment, or if you want to install all the language dependencies globally (and risk conflicts). I suggest you start with installing things globally until and unless things From 234ca0e07616490a0b7f5bc565036abebe4cf2e4 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Fri, 3 May 2013 14:51:56 -0400 Subject: [PATCH 63/94] Responding to @jzoldak's comments --- README.md | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 5ac5f91632..f1532d53b6 100644 --- a/README.md +++ b/README.md @@ -116,21 +116,27 @@ you're running `rake "django-admin[syncdb]"`. Run Your Project ---------------- -To *finally* get up and running, just run: +edX has two components: Studio, the course authoring system; and the LMS +(leaning management system) used by students. These two systems communicate +through the MongoDB database, which stores course information. + +To run Studio, run: $ rake cms -And `rake` will start up your Django project on the localhost, port 8001. To -view your running project, type `127.0.0.1:8001` into your web browser, and -you should see edX in all its glory! +To run the LMS, run: -If you need to run old XML-only LMS (which doesn't use the mongo database for -course content), run this instead: + $ rake lms[cms.dev] - $ rake lms +Studio runs on port 8001, while LMS runs on port 8000, so you can run both of +these commands simultaneously, using two different terminal windows. To view +Studio, visit `127.0.0.1:8001` in your web browser; to view the LMS, visit +`127.0.0.1:8000`. -And `rake` will start up the old project on localhost port 8000. +There's also an older version of the LMS that saves its information in XML files +in the `data` directory, instead of in Mongo. To run this older version, run: +$ rake lms Further Documentation ===================== From 7b3646b39c798dc6642bcfae61b2c35b9d13a236 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Mon, 6 May 2013 11:05:06 -0400 Subject: [PATCH 64/94] Need to install `pre-requirements.txt` first --- README.md | 3 ++- pre-requirements.txt | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f1532d53b6..76dbe4b150 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ This is edX, a platform for online higher education. The project is primarily written in [Python](http://python.org/), using the -[Django](https://www.djangoproject.com/) framework. We also use some +[Django](https://www.djangoproject.com/) framework. We also use some [Ruby](http://www.ruby-lang.org/) and some [NodeJS](http://nodejs.org/). Installation @@ -77,6 +77,7 @@ environment), and Node has a library installer called Once you've got your languages and virtual environments set up, install the libraries like so: + $ pip install -r pre-requirements.txt $ pip install -r requirements.txt $ bundle install $ npm install diff --git a/pre-requirements.txt b/pre-requirements.txt index 7ecead0ce7..d39199a741 100644 --- a/pre-requirements.txt +++ b/pre-requirements.txt @@ -1,2 +1,10 @@ +# We use `scipy` in our project, which relies on `numpy`. `pip` apparently +# installs packages in a two-step process, where it will first try to build +# all packages, and then try to install all packages. As a result, if we simply +# added these packages to the top of `requirements.txt`, `pip` would try to +# build `scipy` before `numpy` has been installed, and it would fail. By +# separating this out into a `pre-requirements.txt` file, we can make sure +# that `numpy` is built *and* installed before we try to build `scipy`. + numpy==1.6.2 distribute>=0.6.28 From 06846d918702da23f856b0e22097a605b6694577 Mon Sep 17 00:00:00 2001 From: Victor Shnayder Date: Mon, 6 May 2013 11:06:05 -0400 Subject: [PATCH 65/94] update EPFL profile. LH # 374 --- .../images/university/epfl/epfl-cover.jpg | Bin 271990 -> 122825 bytes lms/templates/university_profile/epflx.html | 9 ++++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lms/static/images/university/epfl/epfl-cover.jpg b/lms/static/images/university/epfl/epfl-cover.jpg index 42b188c9252842a11be9f325aea47a7185f1bd5a..e585966e7be8ea49bd5e66682d14640c935d8937 100644 GIT binary patch literal 122825 zcmeFYbx@qmwl_Lhu;7;95OlC$!9BRc3=Rnaf-|@U7=i=>1Sb&OWspE{cL@pZ?(Xhz zhrI9JXYab_e6?@Y{r)@8OjS?Y>h9I+>HaO5hslRU0Iq_JybJ&V5dbiSe*h1=0KC^O zCe|JR1OPGs0APR@En&%9I6K=5a&Xu=u^XF0-kGtRKx{eOjqN!&*qw`(^6ZSiqLBFD!){=mol@kl=E~n)AUpUnRr^82$<4}iDC%53%c9d z+nPBWQ@h*R*f|Nhi_rcdE(rhqSj<67{ilhuwFs@m<~wD4o(390gjhk99&#%@D^-N9(K;g?re5WFCIz!MdP)ZlZm6H zy|X36j{1?N@jHl%vj{CMyq@}R;-)75q;2owX!D1%sR@UfjhU^PowF01Z=4+e+8)jc z4NG$iXQzL5`)^t8_@~Xk^|ZHuI76H)Aol-#&wp0`*{XjXQr_O#gas`|KJr=6#@NnWgw~zS z)a<>ni;Xia$KO3T9(Uy*U4%LQo!}#V6Gt;+XNcp!44`S|@b3fs8?ArT{-O1+ogaxg zTRPjA{R^po4E(pW{C}S7f6){EFHVA;jLpqJW{$Q_|9_42KhhTd*L@e1`ioUk5cqpw z;w*3X9`Z-b|GkZ+gsG#nyR)&W<3C=5|98EVrL)KXT&n>;IsVAN|3F>M1Y!yo)4v4x zzaj4I_&*T`nb~MV9N}lkf7@5u*4Xm@R1bFiN9`Yh5dI@t|8fApcjK=z_`w1{(>VTl zsQoQXf1f}9w~{~H`oBf|A9VkBkbiLEKT7|XUH=iA{?X`v+4T=j{732kvglof6<2)03I451L_tM0xbX$4*>}e;h_W23IHG?A|b%1`OgOd5eXUP2`a+h&p*rI z>f>VtE&u@u5g8HX2?jDIDl!5xyfY#a9x@FlK8l38u>&o^laEnlLtKOzt&$p!(J#1( zP?z5M5oi7wmeMqFqT>Pa9=7?%yrw5PT9yWzW{o&AylOAUgVR7jL`FtIL_tDAMnr-$ z4G&QrpN12OK*HF8>thtH266`XVOgu>yCFxyBR{F7=ocuNKiV{T9;N|LA7_Avga;4< zEXOPca5(+8kVivykdP&!^ThGhe*jn|-);d64nhsTcak7QnfRcLy5q%8eZCqlQSDHf zSPsn;%R%~$xDj+Ac=iBr%OjON{RG<_U)Stb$H);lN>#XBPOnyx33$N^V)T=1%l{M* z`7t*$@ku}=E*cE?;}|*(5{$(Up9xRteP%+Rv zEE1d_zQQbyDymUg{n}0+rot5t%|tLG!s-T?&mvYw_f6_1OUN{&Y;d%RObODWh`M|6 z1yW1n95UAP;~aOGN+=~W`8_ngoA;!j;$UIeXyv759hPKHLfvETpIsuZpFi1}V(s3Z z=$G8GZSMHhL+pix>0fb@rv3GenAS?Y&~^9q*G4k~!D_OkCg}? zYW@Kc3ZBrv3fmv^-HN@|W~s!|ubLH@Eg#fYz6ysn=u~HF9>(=U9Ysigoo5YjoH|a> zS%pEhh6+!Rr~Fef~mKzoPONz8_$HzsXE*a_O~dG%D< z22cnik-fv))h?J-Q7um-&M2g-05ylLIlj6CgCe$V(tm^wcA4Y=-(q z$iHvpvKVByaZ`D9U%Y_7L_WuTUL$wEm-d-p5yO#0pti{5J zfICVMwr&C4Eeus=oednB@|!8a#0npv*uowvL#^HJ{jug~g(y($f<^sjxRICl{=(#j ze8*XK6n~CJBQ`o+oH_`n0EI{{77LvQmxhiu5g&$&CP|3peE-xUXDgQ%(p4Kc>drmc zcr7)kC73z|$=P@M5oYIU#zGlNYp^d?2@I@RdusL@ko{7QuoaA*2h0{1@YRG75!F4T z`1mES2j&u&R340-B^~uzjc$dKlj?=@4(prtVs|Tuy5ixa3ZgDxN7q>;RHQ+4QfGio z$K0&iy>s;}w;d_$Fh+^P-N} z_L*o@#z|HCK78YOZ6VkaaGX^8Ee@fy6xL z0%**f{VN`UuwHjT>~C3=RH5qn+Qy1-;InT8bCN8w#?swr)tjACdV-}!{>yKnxS=>lmTQ;GuiGW-eyF%OI@;y; z@^i;lQ!8)qWj<&qj_Obx6@BtCKCo%s|2`bxrJ^hIihOcp6@vi{+oAe*-g}>wdQt*0 zt_uWZ+pv>DMQ>}M*zb+o8k!edHB`$*+-4R|!5*U&m6JmJ_k??9MI3Haua?rjeeIsE zqAI8NX2S$>{8p}=pKI{n{F)ZVZa70ZeXxEH0IM9X&pM(siRW31y{HW@nM)O!oE4JP zI;-$f(dO=&r*w5gNt4f8HuCb~wmhbH^2+uk#Q8KUy1%t@o}32}A@LDx9@$ zDal&aeY)`K^GmZ?+4K0A`u2|N7S|)6_ zZGTqq`JI4BUN1@LJw*dIZTk(tlQ3a!p9^3s&$COC6CNTXf3G;gf8R;+afvaS>sK>VYOk3JU9B<>;8? z{v@$VSD-r_GN`AvY83#8olZA=_GZ= zjKa4SLTjgZGp%*4=c)VG6S!#0=&KcCSAuwZ(;r9A-t$YaA7Orith;>cU$`{Z5#u`F zf3<(TdzLQ*Vi#%tCM4hg9CeTTO2OoW?7dju&kghANSAzr{M+^^oS%{2Z`PP2eq#mS z9>FI@AxQE{*rPP<>(LFcb;aBF0U*3|Lytd)Nc^RV>+tFUP>`ojv8{zeeChQ77)KbN zcmU87)kuy;5bmO~ba|xQ#?dSrhQX`2m(FPHr)jK%f?sKyc~GS&LGf6!HIM&SMii3{$YB1( z4b=&!x9j!L!MWJ_y9YqRf?nWv$*hH4=e=pUACOj7UodQL! zf8BPxF>I>%u$Oif+*I#v!6BKqVDkXTi-0$X@T#~^6)RcL!;CDrsDHDSb-j0%cc9fg zB6}88jFJ!jFjjr~`?`HRtzqT?pfFH`s}uO9LE`R(XsIj|Mf9jyhdLwPLGWsP*;WJK z)AO{Tqo}fP3T8r8J8D8Dlic+|_a@#J23&)s;b#?L2Q=_mO?=f;ZXzX$k1 zMu8!2LI}xw>bGy~s0ONkdn>2InPe1g)LO$i!-MhYsB_k2-o3?f|EWuD@dp6$-j^puUz6pG z4dOaSqkqwz9})A0bG>Z%qT~7z0fM&S`TWCsVRQeXkxuuUTZd&29m=0(PLwJ^uU_%J zP{HtDh7$ku{R-uWq?foh81+Xv$(Z6W8L{pybjDx^$`_2V1f|209{~8j_C)S=jWpNO z7^|LVJntD=!@y~%Fs~H0-EpTPJ(4nOYMzetP>jf-3a|@5&xVYl4u7YhYv%v(;^GTT z%x<6N##jSR#fJ6#dnTpccUm&6oyG#+ZEMiX($?iHzl$2Z+4)b03#rkC6&$Q`p>s-D z+Gn)~0L7(c(5<}Nkfo80u(12A*bWiR(xwk+K&)cTb?rQN*JmTW{sgnVmdfZ;IABuQdOJ8hNS-KO6C-p0eP)Yg^lF>P!(jYx!a>)O)Yj>WI)b)br5LCxUHB)iBt-rrLc=rlBipZNCBzA(@iT{DF8b&QPuN_SD z{3YXDcdP&J@78R_LQ&bJs$mWKOmuxLdc(ZLz9W*BeKv0ONt>*?%+@(ywE=Gkeo<+# z?5V-lO{9xE0jT0j*M0gFzvN4OL$r!6bt)rN(+Hr?mfG_CqoZzGed5K9phc1OVpDQb zbwc;i2*dgX&YB;5#M4s}ZgPa0lwa6ZN9_h@U2{h0mFhz}prLH!iGa)T>3o>0!? zpp=H|-q-`c;{)>@jOiZr#r^TJtW)9FC1Bxn_rQ9}&*LlJ7wzK<%$;-Yg=A$qVKZ-N zCu3tO!#~|t8dqDE*(n2uj4fury#Y3&ms3??U0DMIi%WZ7=FCc+Af_^9)|<#FrkM5S z8Q@Dx?tTiOLFgn`z!z5Yg!qvuf2A6aa?mfYyo}y_02uiINZgj5Y)-KOmbY(NeCu2r zueTN^8m{751r)!(xmf9CyyhJy?K$b|e9hoMcN!bAx%MPcJ{>oJ8vZ3vBz#P8Lo$#g z<-~_t>8Pa8efoPZ!C4yvBu628d>r*jg)3I8uUsDhcWw~#(|89ApOJX|+Qd%g zEh_X!OuyC(ox7vSJyNXLbrVsBw2`Ei<8U1`yxkL`yW`^VqOoUN8Le}^E1{Z;Z)K$X zRsK^w`?=F1QUAH&C>OZ;IgXl^N4r{CYhW~<*_q<5N}gD&@V;&cHI0N0e+wFiLrujig7ooxcL*^E>b#L``Ofe|EC#L^RU z)y1krsY+JIDml_bU;-F0GbF=u3^^Yxm>!P|mL+rm31$}1NB|c@@-qmx6Thf~XnsuU z7kbaY^{!QR@+YLI)nsf&W>R-z`Y+*m5oEA`g!);Jal~97}RtaH3KdE7dUWsC@ z-MBvhYWob+s(MhGiuMidq{5=EG6g_j0x@ zn+bR9-o%X1TnH@@tBx-WtrxRZ9kt3Q68hdOq6`{yK6E;Qs}JziWIQS_nFW$A3OVpG zkYOSDV}j`}DllGYHH8K|FllB!x9czTYL;=`HYtOnf&l^EEI#&64}jMG$}jQ6+)4h= zpS+hBms?)f2u=9WnA+<)t6#75iRWKz5uxg}jwfh{qoAL>gq} z=LePsse|xgR=hIV=|hhUpo8;-NKGMM9riXeyDkmoZth@&GO)Mgduy7LC-lv-&i0M| z)`uo+JI#xY>yaZEuq1ve{zmht$g{YcfonZd1A|Bd#WL0}ju1fu1t}9GiA$(Vq>xXC zkpK>SX%S85{~G3(!(1HReV>CfjHyT5ZSnxn@ZSnd&8zYzZJ)ym`rJJF;{NA+T&Dg2 z0W@FsF6y)xOUu(|5>l|w1(!$z;z@;kSct`^5W0|bOBy=tV8sj~aYA)qUI?;O4Jp&t zpHkW&wL)B(Ck;`?^OG;D?LG#H?qY=J~emypf%WJsawzF%ko|4`_ z3?DlWg>zY7g*Cw=Wat%oN(_1)5ee_EpaGLC^3-R?&7jY$*zX`L)<>*`)-xYA=QpMG z+DH%25z=%F67&afygMgGAnB}Y0j~{M&G`B%j>wfYRD17%-kW-@TL!n3`N|q)m3cvm-<6g)pWZDA-R_@ddvVQ^uv2POTV%SH4epy2 zzV_nTCs8@c_TpuN!(cJQ1$Ff4j(yWXpS{_`n)Y)L)UD)F^^kA04uerzNareLwjuGE zE6b3u*$FCd2{!eo#1Trxyra&zj^UXfQ`b@zynF2`k^Cr9sM9#WO<_d~C0rv^Q=Q@d z(%j!Bz;Uu}=7dyj9ATfay0U$1I+XOmw_GRm`$E4QomBNv3!F8Oiq7)iRZey5n!xWb ziT#kJ3o&>PfKOTv0MhpA8nuNg>TswIcc@@1HegjbFxw zhPayO3YF(=5ADoew&IL>3eEkxZD2e%Ju9A5eyksUUd?e_nnsseQNQ== zHkhj6Y+wA(j(FefrYcVU;HMTv4*Lm-GW9kKc ziiwNi#UnC;DU8Qa4*(aj-xWTiX}$Vw3ZLo!nqKx$eR2Zop8RbNQ*pIh&)i$$>I(f5 z1tHa+B1IvyqXnJ*+wO=d3F9ieTPUtOwO&F8cx7Q;B^Jc~TA!>IsSI^oik~LA?oN@n z9E$UxYTj9w#n{wCK25RsOELY#<{xg(u{OKuW`sOHvU2LBWf!PDXm>NYUGX7&0ASAX z_bzbFFNbMXMkKm99$Pe{&Nk;*93wvfp3JH^@oiU+Rwv|zxR#v=)q247c01JjjI4A0 zZP`Wb20PR-NC8AGrO0cfK0fBPmzcX#-6h$!>V@aVm!T8B(dvA-=sfoGN)(&hx||bQ zl-=J=TTj{0@1+enFT1DPH(MRL-={j^IEmw!YwcQk0O%Bt;r}gf$~Uzn&lk>8c2qCy z7Q((?_n#GaVmPae|B=$}AY0jAZpqhU<2P6pj;Or*`5Dh@NJpKEzaS=|;KZ!Jg_-Pl zY?Bu4ec6{ErNVBuxfySwE4rq~vNXdZMKvpYtJPMFNiezw#0}Q32VJL<60j-b2GFYI zzs+EVR;_QaLUltJHZ1L)=rpV>8+`o~=EpQI;WC9SbUZeeG#C5MEObfzR?(EIzx0Z{ z)(TtdcM2-ay0$69)!0bNhPj;v(&z+X_+2F*Kz`f!jQyQ|v#VTj_~eeRAJYuJ0HU^U@3JxKwlaS73^E~qr^3jw^Bs?sw9;Mm$EVCeA z_gxAufq0oDUNmBG9wChyZLl(8CR0dyI&&wXBqG39mzv*i=uOes6r}3V=V05$))Fhs z50Kx&F4!1*&m7(`VI-9F&DOO6061e~hyoXsE4?pRN!h zPYsd_q{shA8!U<9XGtSYn=i={Cy874B!FI8;xH=_m%pgDo3HTFxbBs;Xr^|u)mXg& z|JuBQc8-mS%z*U}o*3fEGb{+B+j-s+ODcKN&i(C`j1p%wf4b?%Z(D}s!!X=L1UeeE z!Dw6_x&SORNyK1DL|;i<`1d1W4IyE~56{@RAdd>}`-!sdlafixQH3o&L?zX0<#=G`%qm<53hb>o;7j*R=W1addQsdOloed>i6Q%+2bI?)7B}vPh(@K^ph9 zrvw!SMHWACJf^!PRUM+jz@bd9YNGnY3|W{j`@vflP3l0jAU3v#K0hsGF|QOc zNZeItQ!>}1TulwUn*wTI4 z1e*_!p0447!K>+hMpf<~)-qDxgh?{D8O-`=-)GWZO1|`7)Hb|f)1Kec)>ock`;Pgv z->&)Nqm-Y?sM*mO?rze84n?UT6aw|cQUgkwCt5nQ+u-VX! z+u5x`Vo55tMw})r1Q-&h4kpdO`-3a<3&x1lVZh)xNf$L~jezY(B&Dv2VyXkTWq6V+ zwp?n_YiZ4euULr{L2~5RSa6i40L0;2ar3^FH&?kcKAt$)talN&c=uxq_!I8IBbH5K zdkIEf9(5ag4%CZ+e&}+CnP8)8Bync^I5m|*+oeGYukF=mXgjbGziLsk2LKu4AZ1+G zl|nZk#5iU^&R`=%^=?@-SYeA5)$9Qv$8OTecz-${OacdkQy<9J?9pJs{K#NW%T{0} z90J2<90#|(XVQbfaJzqQAZZ>53y$1i=-|gyrKf1?FAf||1fAW}_kdmQpFRLk+@VFH zfdhqmmvzpK3#gnlyTT6uJs)1lvW?w^5$4M=7C6vPwH)Jx`wNB{jhOw?6EWcoL*DiS zi>r@GQ(FNu=?LKdhPRoy7*>E~_;5C^VrNXE33_W~lZBVDR7$KHducL<7qW$79S?wQ z_$6-Y%_3Rd#P|SEGe4IduAnPAy(^v2oV5hgvAu-jcp4t;e1&}R;ZC?=|5+9xn06IQ zFrS3b3OHoBEmw~;3bG0(+EnwT$bH3$Z9^G20Lj`-Cr_2!v_&I+8RPquNK|?N0(TnW zD1~=F0HoXV`W8f$`LUK!zj1Yu`%B5#Vg1VEB|UurJb!5&Xu+Ij!l+g&7+vH@9E<-UwC_1p}A! zIaQOQ`@25n-Uv#ybWYAE&`;1o(ZG#^rO`&jH;4V#sDll6w}M{<4c2A~_AayhYLt zfJ`S1m^7kh#B|+TOUexAuui`ec z+1=a=tF}J>j?y#JEBVyfu{Vg9=DZ*|Xt#0`I3Yn9*N$y>(o0?yYpJmsX%v)D5nzb{ zMr%cO4(LJPlFYRZUT#T^EgQUayJcOu9{B7Ml~x|qQ;UNoH__^(nkGkKyk`zOp|`G{q%{s-WM8F8?o-VimV4SJ9rCbyt2k`$4Bq{Q zMv&m2Ohs%4>LoSpi)E(QwI`p@(a@@+Xh>`DiuZm|i?bIWhT)43fuhzVej|s(;mYz> z(rHFpWTK^;tC$Hg3~BRi;V8uP>b1{B6p6g=E~}8buId+SHPW{Y&2!uC@ml?^asKL^ zk8M_SaKn$8eLITlpe1^z_UJS72SAe8`M}9nG2||J@)!hXQ-%OAE)5z8z6A(8ksmYY z2GQhs5OMuJ((uG;Fbhq(X;_l$$qExj3$zcrj{EL?Ob(q}x7M0Jxyn6>Y6dut>tGn} z{=Ohr`&aoH4AF^Al9@-?HEGg`T5R<`IRjL z-(S7;#(P0%8}SA8QzBNu&z_brrYdNtlD!m&@ykVDv2;o?u(Iz|$|L)<%otWKVAjb_ zDgA8KCJe{cLZVO9TT#wDBFawqmEO$Hf zjpY=D4m~&@VSSy`u9zE8O^!B$4C}q_!38OWPp5mL&l=tMaoQBt$nTZSc7F{Uy@j^O z2sAYVbjj>apw+T;ucFs`o>IYf~>Q0MI82qoeCrC@9DVbDO{ zDcQEE)ZD@sugG&ULCeS=X%tX1_-4xD}{Y!$bBFe6N4d`qDe zP7a=@n=8J!kYaVs9bd+k%AvzwI#K4|7^^lzq&78=YR8t}irT0} zEaxpg**@aN>GP91td#0v)DFqsw0W_Jne4NA&6if4cXVG&^z;6NV;HR6lP6GgOlcjP2{r27S~gDCb`No$2b) zq}ZypSo3xalX=E)##)&@PoW*eGc1`ANDYE3`)F_*OR$F8OHB-*c>3?@vZer>)P)t4 z$$Mi`ecQeb=1Wo%njcvDDK&R+OWQN{>XWBSReaaoo`@@H`|ozBDn(0xs}BJ8m@Qzb zX3YZtk7F3vK%%p{>LRTH1AZJY$PU2Hhk>Ql1k(v&A?ff^NmS4%{JzQo$5&F_;808_sz;f#$w{rC0`on?CpQ6E37(;&5O(b30nmv5OWocE~ zly>v&Q_x||uaD-HCKvI#LMpQbWk(}sv5SdQ@xQOvJ$rOIE;QJg@D>;u4g@6Vn8t_} z{lH3b7yzT8yC7P3`21>!g>HG!E<7lh4K0` zN6uRx@`iea?>^s;-dZIVQu?&t(_D^$4Qcv4azL$Wut*lATr3c*5PeMgaT}Q6x3-Q* zoHBT!?+RC(h#KsoY57`-Ib4C%4-wc~9Nq!lSM%mAf=$^_ZNq9;>5th`zlE*1jjfZ*MhX>W zQRnV{kiWld<(RDTmRfgOn}~u=a-W5$lec0;P0RSQs#S_$sf3HDS|0VmaGb%An&q2u zOVNPP#94IS9m;Hgh#1C<&9kb*d-yeKg#w+7(3o-eI){kHz;D&NAF_O!jF)cSIG;UE zE;%G(ZiSkHIvTE3Fw+#1>(0E(w*TCzpZ`X%G-E{aXu4zQ3?XofF)o-V3IvWyo!k}; z9D_{mDv5BGs0UT9KIYsny@PIe2gF?2=h!vY-ruyP=W$eltqTLPLjqvYv^umfCIwKm zw0Z%OJexeehOdS~!59-9N2x__Sqg)m#@X<4@mf6qaNS((_xu%Lw)G?+L?4Wb>hE^(4@7v?$$IT!^7 zLrg}83`Es6%~m-aEclD}zZk%rjRH#fPo%XXM>64(hM$QKe}x{yIVjQo-ZnMAt_t!w zY3e@qXA{D8aT3a@gU8o|ac(olW0kEE5w1+aq4ITpt~b##(GG0=u{`?4u@lzS*9ca8 z>UX`n&QuCZK>}{~la~Uoqka;??_}D1&|Kq@ex1xa$M3)+#S%K{KF$O7+3wn~TqMC_ z=i|oJnj?i0Z~2ZRAV*1<<6^^(_z<$O>Du&8VxjvD?G-Jy>spa#Q0r?os&d zlviK8=p}*LUf{amC^X?Z-%WWLFl;h=d)(EYqWDz__2jO(a}|wI@S}WZsS?f*Y`Q{| z%gjp9bK+szhP(_v@?S&7M^ig^chz&SeDza07w(^w{(TjF5qyaltG5dDUTPp+j;w|B zF>AzQ4i;Q|I%d9U7a+`BveE(GTz2!IX9@_WSdGSGYN+E__V^`+ByqY$&HL4VaQfc% z`vGt{?_1+aP~<`-Vc0Y?eOND6YJY?LS@aoWdD-@Wpz4=KCT~>bTDJq-r`*LN9NSVR;sQaOO9_TdRd^ zwA1|Ow8gw3VMls364Fc(&O=oRBsdDe)T^?3J>|A`H01LlKr>;+p^{{8xRt(+GQ;yj zW3 z64oWA{m#_XCN2n%60qzgS@2%f>_~eeBKHd;GhcETkO+6iunq=LW8sD~Q$Gg4F+_=n z;HqV|7u+_$HIzvs_g8ZZn2BY#AQ$(lMMr0o-(&Gtjx3FaLZP;Y$F+s19kSY?C3SQb zC%jJG3-MVV$6FPSa4*?)|7l#^RM3TnM|6dqNFLR=TXymNpjd5ncHFRszyO0%OXSOy zRt>2ifRO^TypUhS?di{#eyRX3{3CUF$feaKdT6J)jh_a^D6Bt`aIR+fI-IJ+^6fcx zPJ;)XQw$6@F!u{D;dP`OGh#Y08v~soGvT#OgD6YAJ~jk$6t8*}aBx6oBBr~sXfW~V zQ}OnwPt9pb=n33!1)V`voOs&oDnikG)cyU;VPr+PW}*UYrIA(@vqgk5_IofO^6}yi zcpV8h_<(`AzS0`9gimuo)allIaOGC3;(m~ov}iB>PHXbmMayxGO_tyD)4+Wim143F zeuWRC+nwLW7gLMxaS+$UFLk8vCB)G6a0o#*1W0>sVFk}kz#HvzlqHR-*5R&JjC6B} z5pkZgC=QpA*k~n8YJ$bpK@72Whp#6z1QhGXZ}(_3tcXY2-49&n5H>F9&Bbi4c_a8e z=_5)HaXsh#R2Ym zlFXF*%Qcl*00u7lxxi!ZfccCduuMJ-t|tTGt|^tmibJ<+>8bm&2S6w0XB5|Y9Ib*rcaU*g978tRCs zZ|#{#`R3Nhg%n?>*!GJXf-Qq9L(~wlQQ31b(m|rsv?|i=nKaH?w9%!f`W%Pw>+KIPIIOM~&SuGgFAM?a++?tJ0T=qI z`hM^`pK4m?=C-4ygn+MC`*;euJE;qfp1=4?_nB3KMTw3kWsl)30ZKatITYkM%uYQN zH`1*sZM`93?GBKoDo0~|4tRMd{&GDtOJPLVlX#)M)+k~elFlamgfQbSvg)3)#VGvi zt%CVpY`9&)7LYU2wN3gzaJDM-y5lh^s%Rjtv3CMk{0T5Yl}le8h{$aeOk7b)OQz zy5I;;Xua?$>sqf~cQViQtb?$VwqBw^_jp-*z6DWL-py~Qya&at(dY8C2S65f@S80I zl=k+Vmc{joiJtnsAS$G^-E5-|+`&#vVo7$C(&jTq);Bb|3>8c!vlEEiPYU>Pkt($c zc;{eo&ut8AB3q_i!@V(q<9p?!Z^`-D$dV1#qO45Ae}n7B7)$qlDEg#3KRP#Hy)Ye_m7aK;m?5dCNwR`RcwEM!-5KpZ&&*4&8 zO$3kdjGt7j;XWg^?ta-wItst&wgH!r+0@$#3azr6t*e{OtpX}3 zn%0Ig8)RC*7ySe``vA`!HVXAQoN`~@B!^ybFl>GR8a^%6>$?~qQasIqbP%I-e-ajO zGP2NfT z)9rk9Eoa*IWXy#7_;?!glY#y|j>wFE0Q~=v!YzgrO?%~rCbl&*iUv)CNb4+gbuXnp zbVVP$55V;d!Q&<%AfHTXEV`%%_vJLDUcY}*t)6ASWgvCS+}v()PG)q}?Q^$yL6V;BAt5@w^T`|7YXN0Fj+b1^q6x|E9hi9e4X}(3zy@-}- zIZe4FJ<2Yu@xoPkY9U^3l30LFaMc*FG3wnAESk^w~c-hEyBcU3Xp&) z!S*kiOm*@NILk~&rccvy1rR4@-Ju_jP;sO@EyWG+(@oLMKw5PVkz3A?YC z1D~tBCMpalkonBK$uy|Z!72GQHuyCi<7;(&bXLtwJauh7KJYBo#tUy?9cxNu<*coK zzsxoK?qvz^R^L7?lz0I6#K*dFR`(nHVB{i8(4mmC*rJ^Npz@553Ya-?=XiVDLk(#= zi=&sXy2{xvSn)ORB0G#w-Ck~RTz13MIu1?~Fj#SX?qG=eMcK_lzZc;!vI1*q&9H0@ zoB#5jRktq6=P)yMl=}TQBo3C}Jd`-gb(x84TT9Y>Y?j$ociHs7YoEII&33{$g za@#tJjy**Q7wCGH)T6wPy5S|<1AhGkiv!QEJW7Jv_HNK41fFpom%J0Ick^`tSbbnb ztfP9mAoDA@>JIs*3zL%(j_DJ>5={c~r|;|v7CJAYDU}>2+=r&U*q2VS1E7S(p*Ztt zqnB-C?uT24J7oRt-3f5`mF)TLhVk;qoan`+bL{CeJ$pUW}*gfEsQ5z{4^0#I8L<-Wtsb-rq7(i-A}k&*~#vUG7S3-L(z zJ6;~*LmM>KeC2P5jmWp)<`u1lT$_Z4vLUWoB{0IZx^ z_S@~aWtT))QO#zFSSN3cd$Z)uNV8^c8#2bk9-C$eQnUWRB~Vt6@U*n#ypycWh%{ta zb)HfjlkO`v=?QnVkR(n-&rT3;ivvko&?Sagyt*f$x+ql56=C_Xasqc`&*=B?-_lzO zGtKFbeV4kYuRGco8lM-CQEk)y1MZ-Iz}>O;$^ah`;lf_cX&lj5&vrm$h=n{xMs74A z7E%s67&$VlK)$gEPa#-o>CshSzWc7eh=NGe>?62r5<2!`)4CB;z%fla-2QYg{{b+w zcdg@1?{v>1b}sARrR8OvK3zJq*A&#HEwtPY#~Db;MVAw4IL=-ag2~DL$qdsR{z9(?3(1p=!xhZ-3y=WO z05cQd1}s9j$wxdhpWcAPVF^zaXEqfQbD3d3W;hV|@^Gy6&Jr3zLfKrsyfbv6nib}7 zzdMk-rVcc}<;K|&0E4Fm1XTZEIo@m?j5x5d@}sps@byRCV`DqduQl(hxS@d}iURIW zajkNRBy?uSh-oW+$`ZcwYgwy2+$!04L~s>Lwhesud4GX9?{A)h&Uc5C?)f7Qe+&)o z^*NAR-TSNu0P2dt7K(Y!-lw{zgOA&)8lRXtogGy*c$pafjupyRc?`^g1;S&6Nbyzj zpJ^Zsre|Y|O4A!}j#Dkt-2e6@5n4vLo5tD05&P`?>YqgfiaO}`k*7{Zc4=avL!;*v z{)Lyl23*Hq+<_f_u_Y8%dQ;h7#I@n>rFjDynm6a;-yD|3!qZJHL?Q5PVRQHNmz13Agx^^^HThZ^ZCVzC~CMY#D`# z{y}sEltUDZ!(~Go?2T_AonUp)+vxq16m^gvu3#Q0@*~{v!-HtWs|*hlL?d-km&7D} z1adoka9yiQ4+;*AGJiDujPEC0>Uck47q}@sbKAVE)s2{@q74M)idlI2!3rxJ?PE(d zV8Q6|JV4@X@aw2V_@8CqwmpUXP+*ig3|*Q?p#VS5UIGZSlPUB--7XlDQ5l7hPlFP4 z);G4@3ybAR@Y2RH5(T<^O@6*XwzHnRlPtC$ou_f%n%hhze*oMvx2(u09&(7*Mwf)h zglN55YNy|%B;Ir9Qu9y}McKfwi)y_~&~9Iz^Twt4T+F?iDX0;49_Yx=0vs3UV}r#l zw~-bkXy771n=kl?Q4RIZ;^`!MwP@~I`f3Y)KI2mk*nD^Nv9-aq1Md)CYXXhA3 zV_)Sj4r7So(JCAY4OfJR%z;V24hd#95b`p~(^vrBsu&_L6GsCITD7(=c|b6v(CuaW zMMA$Z`lRFyjl2kCW6j>^EhMB z46{p%35(E-0jf3@GJA@oGI&TF2fOH&=gL$>Yb&C2wiUMq<-m=T{LUB->%eo9Hw63r zSrs+!h$AaVK+7t0>s4eaLOrbxM5yJh#!AoHkc2B)g0#bp!V`{}q=C{-xe6+%QZ<@> zVT>dW&z8W9ktQPw&P9~$SuG!n8XGJ+>WJe#+D;YU92N_IHgZ_hj<<7T>uYQQ9JK^) zj;Ael4>OBmIoA#xEiN~xpstYkr}`hVy)cxDh%bP6sfitEzmX1oz0~oZBrk6-LPqfZ z>JmyHOgX4#QkwTo?t_HoPk599zBEW4E@EIwbVf>*9d#-Gv-EOgy4;@kky@`v5WZp9 zzt&>rkBgH;M@1y2;ZLp9LM$+f2T;NRi9hA-SRP{HaD#PW%?|r$$5~Rg1c)GC@!H53psr?$u9Wabox+l*|Km{JI z-(?i$!98&|`v91WKhahI9SQ{6Kp1~GEqdfX4F)G;0@e$Y7+|$uXx%iTfQ)#OnQc)Q zU#NJP^CL;cF~t2~@{|~0bz#C-6t#ddHP1-PTuc8KvSw?-!z^7Fw96aDFZ3Cu5-~b! zrd>n7rn%4T&10KOWAqjyzQq~zmvUH4!T$tU-Q8D4wy$mKR z?havf!~Bq+LU{0YKRZ$8?rV8V$SsRYo$W=E*Z0|~Abu(CLMOXfar>*+jx2n(E~z_k z#bB9oCyX&f=3M8VkUYBKD*3WQYo41@OoUYSGQR6;iABStNm_V*>8L;mSh+cYQ^wN! z$DDpDeRkBL?+@3z=^cx@2&*}9QwRJ>JA@9N8{YM?VG^rnk>|-0FVtv^IF~_629EK3 zIO`;VW;|XoGn5*#Zvu!){X0dU)ue|y2dOX7>v&_b+m>6^Agh`{7*$;nPKur9u?{Oc zU2ONv+`E<+B<-Rzsz0sw+dm~yQ#A0WqoN>cdyY+0S0{lws7=qY_WjeWV!C%{eGPFv zSa?m%3(3O{S_2vBcp}l+PBq0`=ltrbo_6ACE2VS${A{x9jdO|6A@sK*=iP$4ZO`Hq zmg=FO&ja8p-ZpI9_2Oe~bdDuhQy#YO=lvuVuJ^tNB_-Q!a&UA1QY(q^+FAgIc?{>H#i!0xWho~Oq7n!Zct~1;=Bnf%9 z@j2qZ3L4gWI*+t4Wwcc~i;WVI*U^ZQXxhd2L!zZ@SL}dc)AV`i)#p=|Iv0g6l!juT z_->#LGixHOSwT5(70ukR3G{!F3>zD@ke{0>iXyvxcg1!s`#D+I8{rK!f^#xTY(JGN7nCTHcS!e7osbBQAQmFaoEzJGHa zaVL8VooiYq7~GSBhr>gVrOiEvW=T4iY30IY5Z*AsRJ8GHRx}B0bHat1whxkKtNRL! zww}GO3Lu#0EQwn2wd{!w)faeI*O0PG<>h41!vEw%`N-gvXz zl;?MB4j>UW6M=pSh2#VmghN=^c=;XBmIWs=2Ckece}<80<0apS^LuI`FMPeg;`O)x zGP?8vQ?-ReFkbPCfeF7>13WaOY3n9O0^8{srYiA7ba#9UC2g2@(!12S&WIc@xWxy} zM!#gHPUPaeKQP<^VLdQAJW}EHM5i6Eo6Su@Q!rHeK>UdVUz%rY@2eu0s1IQ)nXh0Z7OTHczPio|(VG~0 z-+VP%xG*m^p7lPt9?|jw)9`p<6fnMy0b|k)i;KTNrU67LKcmK1rc(=e5fUH-`6V;H z;pn#AK_cX{XGGiV#%w0mWyrUd(Cz4^WU}bEwog&$(d>2>LlyWdRdjb|AeCy*nx8%Q zXGKM@PrgBEXI6nrRdG&($(iI9yXMcg=tF|Yhq`8@jIR%+agFU7lb%y_qYTve*%KNP zA3S#*b710st()&OT06|7b+l@-EcXXdXZvcPGx$ncyoLzBxUaN5y{E4{nks>ZyNKHG zp49%*U+kLj2+DxRz@XR&+e7cWAwz)ExOR@YOCjh=_gGIom#2c<9h0F!8v!~HnKmEI zFaI&%0vDsF9Gn~%83u}z-l))kQSA{C;=`ugp%g=ncn!ChT2)PC-7ZMi1!5suPUi!e zD}7t_=GWfM=g{W{8==tQX9B+$zBniO5aU8kYtu;5ZVV{6alY7Z-DHi86#V>2s?`Xj z3#84uCMoD>R={#kUjsRavke3sEs))X4&+!iOKu6%JoR3!MrpPg$p~K^=ES5>wW*AN z2Pa*y?XY}0LVo}>*ojGhbkh=Zoc~dyic59Vv@tqZ<9xSYdqb1Utj?VXY*az^3(3s? z_$-4^JUv3(NxlM=puHTMkIuVs%ZpA13h{<>i<8!pKuN8?N_m2EZ3SwS<1*#drR6GhrKOtlpVc5~l;zO74WGnn)J#Uu@a!8Z z%G6BTMP;=Mb^QE8U)T@zFT#$QjW;C<$so>pevimP{tyFO&$9v!=2L5rDAiku%p5jXsa_o0=~+Cs6suE#IF zRG5~1>A49J)wee_ed#&~imIBH24$tC`{m_~NzA4Dv5e)=@1rS;{<{1)A}P-ff1Hr< zI3l+$52!iMra@5KryW<_?kM~Zpo#R{R4tgj7+3wk%)`Wg|@bV6_oK!m=$NX)D2+_sPhI|;sBtPnP00Kkx@y;y$vY1@+Nqo z#qDE9OaX#k262C|wFqIW^~bWp4_Wp^+5Syme(;_-&Pq9ya2*~!tEbqs6=}q4P6w42 z?WTh6Jb)2c6Xo6Fs1O>0%vsGib(u>=K=Ig+&TT0I?TdJ&r$(|TYY2vG@vR_q=g~BZ zvXlPO{#b4ZLea)On%W+(b0=lZ#C5UwQC}+kADTD@iCC z0v?B^c#MRfQMMFh%gaMI2!UU}8(x=Z<*LRWaKzEZLfJ&@@#Y#4btOQA$gZ4s)jm2y z+w0ttq(P_q4zg!OqCA+4Er+D~7vEd_@h8oT3XQk4(pi|4Lc3$hq7-`K1G_8`jM=g@lJyWT`E>y`^|;nD+Im z+Pg+teuXsZUHbPH*&n!oz8C}R!Spx{86N6j@z{)XQYh@wb@>h3?{f0nIlxR zpY(Yc=II10L7A4H%hYs@KlA(FclO3OL709Hcv|@X15EFlj46`~scB~^4fnNQ{sT0? z6EtLUY<41DKkcoUck@Puk_kb_cSaIV-@{Z2PX?N)J^oH6%nJS=_-$Rp)mTNwc#?-h zNp!ou=YHpLJVoMFB`KEh+ZkfB39_{Ds;UkH(lnGBBISsRmQW&GMJymmQ>q9Q=b31v zJI#%)Ap%Dolk52*{7k{@=b`FmL|j1NIzzfvfsoagqybFIEM$DMrfS6C{HQA3h2}$l zK@_&lpQK8`K>cN10}cKDB?xEWY4;&RH${`F?G8M9(61S==z{tj(*WqJf#v|R4l90odZSFMMY!WNJ;iqLe^C-LqQ$PKX%q_PfcS-!cx4!2EqZZ z^0a(jbdz>ZLW7+LW*^K>*?SCTk};DLdXL7?<7<9~#74KYkWscv__tL#kdQ+TQVcOx zCCBcW*Nkl2BwPYr)MVbBNc6Rwy^!{SO*PKz8T59FULnFd_#3#6BaR9<3i%%ksW*ro(@|d@LQfP{#}#kq4K6dx7uyK+=?|Cv%oq)tm+%Y^ z;l^+U(b8jY$n2{#I_r*CuV$sOwkwA_{I+Cez$NKxt3_eYVs?Q=P5d@Sv|ov)7V(bc zSM8+NpiAbMC1a_8{8mLEJbxv^5N+o&R&NuIti2H1BznOeHG&~>&zHrs_XyKD-S~(5 z2%+Vw-J!)z8e6ZQz9uDN0ToW&w?$$amc5X@Y1wja3HdZQBe_f|4PC4;?FPNGF>2H< z@$f?mm*i^q66UJLQP4^l5sw`+F6wNV&eqV+6mH;X;&2Us8!?!4REk6{aHdo1pwE}A z#mc$q)0_i~3A0c#gf+lh;Q7He1#Y|=G221w;YprfU{x@zP#)3bzFLrJN;=@o)Gm!R z8|f~(CO`74G`;b^0$ zU#pMTLiYrNw$T1=k$qqH7esX_c8As?ZbV{TDt36sLfGqVZ(rJ;G-nm|<@Ou03p=+r zV=ZCkTJ?`rIV@MY>Dq{ZBRp!-FmaA>s@_=Gkhl-pU=#IV~D@nmQb z=|Luhxlr9yRzSts5CypYb?=>VJS`zDOW#;*u~%`0ppOf z_Q*GRwsXAq=rN;U7Qs?&t}!U9iVTw7PXmgSyECN^h8;V&acS6Dx(h8NMoKZ6e3@+t z`QpCmm77Swmo%AY@hP82VOD1+X`o-v@DiqnhC%l*`zsrJhj*&UzAA+^QF&6n>0WYN zKbI_15aDXM5*)C7wL@qvdnq>iD$#IQI)~xw z$mgFC>0$e|?CL-#Ax5LK?8aX!_ZWRY>eH`BB?8w5>O>T&IiD0ae~p67^8Yk;wAH35 zTX5vY|7K{#dG6j+XP&=> zVTxQoE#C=eve<%ZyDpA<=-Gik4VOC6JuW@XV+gQsCA8VM{{e1SR443pkIsa926-h~ z?FpeiK|S$4Q>gM9W|pCn%6{shLg_o?*b#m+R+lLd8*Z-64_PZA!c~?!TLNJWOYOLW z;z8}U9m<1xnOAzWGm*7geAOp?i#cl}mCSQX5&kjBxY^uiu;@&6(7-~%>ix`ja28Tn z_*2$XA6BMZB3Yb)vgng424hk=L{uNQOpyjgLlcGEMJ!q+A{Ds$Xn}>I;MaJI(0gsL z7|M3(T>`BVVlnVlJwBQ_5Q?FXKc9MEEYc3l_}$kxcOh5h8p`0&{6j&(zPYeetm3}gf$(z$Q_lXS_-fW&}X(CqQVCx|1KUkYm6}Rlad`v#{qa~6e8^&X9O0EZu7=|Y1G-`rr+8Z9c_0j`1!Y2>W z0@_mmL=M(}3g#B@1|j<2wtY<6pM{ve&a4Wl@WjaeI&lC;BMHehj~Fn-ZR=ZGhLbAW zpu(0Q5{%G`OPTU9h?16pkQ)D})26hx=_`uR)g=5{4e>XvFjDZ8tJNN$JqcnGZzT9G zP16`&6yI3F#-6{RJ3KS>&bwx?OW> z`=&PG)eH#-6C`_?;rL%z#sKq6jZ;U^e(a#V9UTC=1fojO=*K`;j}mi#Q+3XE!vNH@}$DA=pr ztm4FE2>Izf)LJ0j&`9$)>nkLxs3it1vQcK14pv~^FyqOS!PK3{?T$pUV&v{se)b=L zg;X)?Qh>&yx4YGampimgI2MV!Es(VtMnM8fB`?G^t;|}ro>M(fY5l5x^fG=8`v=$? zoyW$5!=Gx{6QxX#h>)Zn38#m47ic1f1jkE|{)8J{Q3KBuKkSI*E(9dQBGcjJaBX{O zX{a#3T9za9CJo4cEus(9-2BOSBB3bgw?%;YZCmb91BA#`Ov)q%cN`HKd=I%l6%{;n&2Ki;?AIzp>1t)>EK2J}W?;=5z@yZ+vE zd+m(V-+wh%u+2$#&2jQ0SwYlvcPq+s9q29+?f)JW&Ofw z#qf{gM_OA*L!~=rj3^-xfyIQ8mUXk54DZoyJ8R+qrUnUj_7akVF`v2pOTUj*+z_=t z)nthdKh-Xv@6f-NY;yzsH-kmW zq?A}1^^b^8*rXTRD5alqF?^HVCPFs2MGVh*?)=MA7A8z&ZSxYV0<1b$2B#yWeQaHn zk4)jF(mJoA;Le&}^x`mo zVTGHFKe_!7+HnY94O&r-s*VuGJH<7*@LAep(%%R-mu$0D_nE)NJX}d9PB= zHkwqJWu>L>p~I&_UFf`cHl1-7<1%c27b#Su?9Um(5tc%%SfAMI9rqI4+aGgA@3U7i_u}4zZ zc}TGy4LhZ6mn-k}cx`PW$JAOU-Q2CultD^Dnxi?RA>3W(+#L6t(VssjmCg57uqW#; za(r?#C-yK^(zdKWJW&t|$54j7l)`b%rKG7sd^Zw076BVnG58*nXRlSpIV4#tlMyJJwHD-jT zlK}XmTuS2fASrIDLIphNgXKb0exSN0g7!@Z@QDA4EPUShUbX=$8IX9tHON-Q+J^M{ zx%!Y;EQMZGWNt!ekErnbVE(u`iG`_s%B@n%hi}dXUEVx|N7XL~w&C5!5)zTz5M5Q0 z{I>DA?G@BDB^=pGvnOwBd3bC(QEgfhBmFB$>EdAWW(UspP&^%46L`%S0u6azzyF<| z6}7jp=^<&r9-QLGzyRJ9z7+EuCDyrf^&t$#VsG?gNZ5M}=|NhyjW1$pt}a z_^0N(St|#2=@+ZCU_BRjb;K9GWeg;-O>gNYy}w2ai)ixxMtDwBzUl;P?^M}Z1hV$n z@apv{K4|K0>-xG6;%C%Y3q!=++f$99@}J!6Q(R}`ssnO^G{3^*&Yxl?P|ZLz#k%=%1GT${$mi zcJSUN`kj)J=Oq{{6y8T!Dfa|S-#^&H9keOsbiHCTK#oZ++# zxY&gWr4e`(jO3Cuj5HEBV#&DqaA79~6Fs3p=E4=Mc@C@6y63K+1U|4%LHky(W3>%a zd2bz+O4@tod>9)|p%7C(^mUndcWyZ!Hc^byC0}AQS#zX*AlP&VX3+5Q$`vg$NP zS}C=SD4SLIfkF5ebhNQao__532Uy*E@5xSRtxunnUP7CHfIj~zoQ;oz6D0uub=F1{ zCgekxCJGT+Trot{Op7y6g?j7-sPJ0H(|7H^Rl>w6n?`swujIDlsJlAS_8&kg=!LBn z+N%=~`eGDTL#MoU<>{Hd$g8csd~N-P(y-97HS_G(mMicZHqFC|cQ%^ANDlg5B<$^( zR~{HzfXk718!^LZN6ky=!tqXd&{AZX!xu*rw7c)Z)Wx^I;8J`^$k3ou_t5-~ZMLRv~DSqU?I|WZncc zb3GYJT%qU7(sds>y2b)$x)8f6_h;}nf2G|wc<2VERUE)u%Uja zePioTy3n~qYqVJj^3WecN@L~fa{KnBWg#YU^T%!M=#D|X6LEFXEh}eN&zhQoz@%=B z`UytA58lap5kASTatepYqzzEqAj=V+VP#e5i=h8KDFc;9`SM3y(6kiOPxx9o^tl1{ z9tn^DDU4_)>D1saoFzg?T~j)(*aGib!Bw@dc94I!BkJD^8W*@)s=97AgI~uIyyn4e z`th2f7Q$vIMxk|s`{1#vfGEty4QJlDa+wO}VC<@-Qm$@1i9Tz_Dp>zQB(tLYayp5} zJZ4KkB{+;KPb-ZP^Q9ND$;r>^>QlzXl^WE?F?r3A_A_0QDS~m+K_x!g0h2b^OboOok$oSatx^(Uk}p0Pfq^ zGMozq*lC2G(_xciKWlOV;lU6*OxJQCwu}QD^<4`;u^6J0QmHC+t|!D%8mJzWiHt-_ zA6{de$F&=Hd^3R1L!l6Xj7%Ma0-{p=13+de5tAUMkK)qE@2C?Q2{M!q<3;#vwI?r$ z;gK8XiYhWIFbBvxQKLr}D9fz{cu?xvr@ zqEUYWS`L$cMgoX-2Qmr)aTmTsSz_2DHmG2ctN#(5XC*-e1g6y_rhh9%%BE21Q)C)| zSNRsLfii~=^k=V@v+Zptm4uPfB%V^%D|KYRD|IcEri77+R|G(Zf| zfKdZLKHY3{#VPF6-ef5D9qx)2D{6b}>*^1HRn1R3eZXb~SCJG_AQ@uec^75mMUyHy zQ5yr+poVfpK}6S6lYw4HpseKr+fCIU7F&QLD1;~ZV?Afeg{h3+m-KHu5fx753R2Pd zLZ6qbDV$SD_FAgZ&sTR!0^m`BaTj=(Uc1{M@Vm;92DY#&@<;c#u zy+L`mbnEb;l}O@e{AMse5%bU1zbiOe#LtDd^xLtQk*j6VM8xQ^z=^FMt0gDugYy^A-0Xp^DaZpPa?I@*gaF?&U{ zmxwvu*h~9zEFdYWIR#z1gS!$%Z>zAE9_WAf+0Ck$udBocGZ4ONlC2r_v60bAp}yiP zF88QcSg>p~D+n!25HSsjOXq%)6=2^w@~I$b>d=wb{M3GBs#kXJ`XIVP)GC?qsYsD5p&#WlB+WH`nmsY{I>GY3FJ%ji<4=NF(e>c&~H5Sna$Fo7vAm2k(kpqI8$d z&YyE`O>k}9!njrUu4)mowshShJOW{DS{z6pwD zLn2v&I`~=N7%Zk8$v~ZlFJ@;R?=kk>&`F|A`?^8F>C#*KVev!$*>u;g>KJn=p*q5(w|!;@Ehy7B^V^faS$=eR29xH3 z?30h{$9wKt9*4OZtfFu2-5Dp!CR3wxXF|z~tud9Z*Ryv{b`>#16jgwEyA9}8CZ_yA zLF3-ISt;wve9iIo(|5SM!e?OA)dH@=s4No-lxZg1SQ~srA<8bYcV9q7Pol;fgj4LO z%q>Dg)#mJj z#V>FS*eE3MSYz;}JD>@&4p$Z&r|k@`-JJLeYZHY>*Xy$g_?Qf6GA516RLC$pIXEf7 z<8&8E-Z9@m)aVitbr1OEL53IU(`q#zeV%{>b@8{Ti7D(8-vrIVvIx7kVl1_VX3hnS z?3q0OYVv3+N$+RQg@^C4GpXTHe2xN&AR2(1mmDrNelLx*1f-o93{Hmzn!S%mj#iBb z8hGj-Ob-b7KstS`Zp$Als9!Sta(x(owf7|z;+03>;FjYmFoIBJx5JW*e8^_dtXhN4 z|K8{hORo$H>o8ZJykq;2L%oL*F>D|PvJ_(o!9{P*@h=~`XV@8p_RE~-LNYmJ5&h@& zKey1bhpj}YM{~#PS8Gu;n#q)Z<@a2;hCOujXtp5%E9WM{D z3vNZ8&cZ)7@;iEOE_R>oZmSKjoZIhw;*W>Ka1BEGLD<0}(D`4JkOCPs4_Sn= zi~=E^tkFXEY%Mkj>mOi9D7mliq4LC_kNpygsy!aew79fx9bZfxurQh~lSwd+WVSX# z8+dM|=}`8u3n?e$3-x!z#4@3A7H*EQ#;3&Dyf-t>CPCJGr=K$G#jaD;bUmahcULO?;xJaFYJ?? zmStmipI*YYBEAqd66wQGr#EFf7rNK(pnpk>Rsoa>@Z1&3!pSA0eJlO*?u`%RnVYBW z_%&x7&xq+Tyc=Y0zY+Q&AgI)ZCC8TXwCCdstayGWIg2Yl+C3lru9vtz43bK5V!|Oa z;o}xq*?gQj!r{o^SzX|pzGw0T##?IVZ?1tZQ%PKv9c^4k>TORAS%aT~($vdJ2^HnF zC3UJaaOtSnrJ8C$RTvq1{v1TI^JciapRbxZUhkjo5UMY~zI=?I>3ap%b^Zf<*d<4ax?s2IL~xaRHt__6x2jYyOE6rOlPMv_|4u z$>deE%hCSm^3l{c#h6K#9?V(fpx(~@Npf@JdqQJ<>P zxLRvYo7!NCDKzaCy!z0FF^12d)QblS7h?F(|DeRAo|f2ee>WB{k?neYAoEbMC#b-L`5_E*zHpluv2uB zMg-g_I#V7#hcJi=tzpGuGI zg8pu(q{JPR293`!Kzp3=8?bN;@CIq03E~2JoR21FN#hoGp>;vfI^Gl1Qiw^hTwSvr zb%GVS1pTxuWq_l6gcUwuT(=x$I|xhFszMgt5q@5ebf-n^Om$68*h^vN!mZo6>Kc?@ zZnMmq>GnY|n69Kziis_55T%aNN)aZo`HcP18KgW3?=8=sF}O$%lN!&H>F-vh7i@uq z>YwH~SWsF{#Q6iDbI+Hi!Q0gc);%^6pA*%PSCh!n*cu?o>rR}@HyBfeLky)J;7bx6 zLQkls|5O664#f6Uhx(w{5fRP>nyBy}V`xAkT&n%48k@O9u97Agico zb((FE95<^dou{LVJQV4#$-NYJJLN(yIi%&0i<()xHIpwM6ea*n_tN>HqDO#E!l*8vr&Y8xh&2Fy7PZ-w&o_BiM9|ZH!q-Pk2*P<0nqJm-8)blJiLi#UD|j%%w#tM`-#pm}Cr?Al|WlO;YWXRA?YWD7;djkTCZZfCI9Y}bQ5(LM4jW@_tX8!V zvegI&#&O_`?~ZMViV`IuFVFs<@YsBopu*pN7+x$9e}u-!-_9#^zD=i{*t>8xwRG;P zka9d9ofXv95`E?G!X2Beq>OQDKQhARJ`0=5q_P}{sf1JtVQo0lrP|6WPC`!sImTFU ziP*6Jf`a#}_W6gnsh)DW>b~H9?MeiVl=~Tl1i07zZhg2b<~9|CR)~-T~>GB7&%Yh>WkSX4qyP!D-TNO zcpKkQecygJUwmm2%9)loQUtE)4)vE^oBr8c%j!E_jl=<3r~0p6~Gv%m781ks|NV7t?`Q++XL-vgEMV2za%M8^d)5G&7c zU$@t0NY(>A!{^oFjQP909yF-#i$eavF1aY+)Gi`OJ>oWfg!d^44Rm4sC7ZTNcH%oz z0HK89l_neQ+O2B@duQHAV1;^%ZM*N@+RJFUNsX({v0Ce;-rsJ@5`02q-oXtvoz@t6 zc00v&oRyqYWe!g^#?(jlobk2z+m&Z+{Szi_3&LyTf=8DU#1`La==V`sJbeAc)BMPH z>a#YdbOO(4w8gyC)f1sqqP}hL=a>DTbSW25X;$Yd3$bT697X7c`(jRBLEoZ*vsd0Tv$Na;$!IRxTL}Zn7(OH*7gXbc+LNs(`96&ld)A!0z z(R-U`VbG0jAJK&}e?lkYQVkeRpI&#FR8wDQuhtF&SDu(PZjvK=AHcY-?})&sj+3-} zNBNyH?sBaHF30mqJ7}%Xkc_7~x&}?MX~@Igjw)eYiXbt=N1n}~wQE+NZ`ntF@`=zq zN6jKTJB9;~6nBMfXQ2wg`e&=evNh*5FkyV;@BXDg#b~NL&t-guM!3%Uo9!Ew_m;-n zAWUM<*O+WwSzDvU>4WWu&f)G<|8ggacnGh%{#x3Whw4H z`d3??_0)(|Rjx1JNs$s?h(6%{cX3bXP6X{J>a?#KCDT?)jV%a|BR$5-tr*Z_Aen zw8{&ZKP~*r@ej@S&Cwpi>7jgdrwr#BIM$=z{Q&hA@ojKETvt6ws zevH(i24%V<%s#deeP7Wdrcxivoy}$WI`+UGY0X&F7ne+6v85Lv)J@1uRh*P4ixu@Iw_m0~We?Fsx+}5ih}-N+t(#uajR?I2 z%pcz*d7vK7iwF12Lm$<^#&P05fGOF_XqEw1WY4RbC)|UonNY$3X0`N~mZ#w`xZ)yF z0fE>#@sF+2xB)HiA(|*fA1JPkch$YIbil?BAtU(ghT0VzgZt|VyJfycDN^{->vwi< zY%i;@%992QmoXrga^jWt(QF}yQ5xI@ciwYMuW#K$!3a!uUD?Vs{D!Zz;Vzsm3|rBs zMT7g5rLF^zh~`h2nQRlHUEg7fmWG)i#gkj6B;0ACYZoJ$K`a2lc{|}Cj6smy6`yUI zy!|U&kCt`C`iT6y@iF4ib@Fx?dP8(O_R@Ci{;$KPc4Eo-V<*vzey7OZ!5d0b+Wqpz z@*7H&l&_+kt+}qE@}glXf+ny(miLabif6u4H@3{|cZVsV?lxeny5ZVEv$fhuyyEml z)7RooES?6>`H-in6X}-uH{|{P<*<3Ck@;ScX^+Wv%de~RnfbOXr%7i2bn_*}2e|*C zIC0p|U_JTh(q~jC;`-&;Z3ddt(-sPCGkDG(zB5G%Os}kv67@7c_^+lygo2MU4A*KJ zU;ck)UsG^GGOkEmFhCBa?_v6lyxraL()9N)XdwbExx|(B0m6!|>E@!}H>eY(&$oI7 zMZBF-fvm#14YjR3fA8h2p6~nv43nYB zZF1+`C;C>cZs#;;`#f2kp6|r^&K_9lW4>BB{aDwoht_2l{>TYZJF)6v7cwnaTx6#V+ b6qkZ9{ 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

    Ka{;cb~4p)zo)P=r%7KgG?`eHc%VfF{Q)vD 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%0DVAK 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

    waZ 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 diff --git a/lms/templates/university_profile/epflx.html b/lms/templates/university_profile/epflx.html index 5119a223de..8153bd62b9 100644 --- a/lms/templates/university_profile/epflx.html +++ b/lms/templates/university_profile/epflx.html @@ -18,10 +18,13 @@ <%block name="university_description"> -

    EPFL is one of the two Swiss Federal Institutes of Technology. With the status of a national school since 1969, the young engineering school has grown in many dimensions, to the extent of becoming one of the most famous European institutions of science and technology. It has three core missions: training, research and technology transfer.

    -

    EPFL is located in Lausanne in Switzerland, on the shores of the largest lake in Europe, Lake Geneva and at the foot of the Alps and Mont-Blanc. Its main campus brings together over 11,000 persons, students, researchers and staff in the same magical place. Because of its dynamism and rich student community, EPFL has been able to create a special spirit imbued with curiosity and simplicity. Daily interactions amongst students, researchers and entrepreneurs on campus give rise to new scientific, technological and architectural projects. -

    +

    EPFL is the Swiss Federal Institute of Technology in Lausanne. The past decade has seen EPFL ascend to the very top of European institutions of science and technology: it is ranked #1 in Europe in the field of engineering by the Times Higher Education (based on publications and citations), Leiden Rankings, and the Academic Ranking of World Universities.

    + +

    EPFL's main campus brings together 12,600 students, faculty, researchers, and staff in a high-energy, dynamic learning and research environment. It directs the Human Brain Project, an undertaking to simulate the entire human brain using supercomputers, in order to gain new insights into how it operates and to better diagnose brain disorders. The university is building Solar Impulse, a long-range solar-powered plane that aims to be the first piloted fixed-wing aircraft to circumnavigate the Earth using only solar power. EPFL was part of the Alinghi project, developing advanced racing boats that won the America's Cup multiple times. The university operates, for education and research purposes, a Tokamak nuclear fusion reactor. EPFL also houses the Musée Bolo museum and hosts several music festivals, including Balelec, that draws over 15,000 guests every year.

    + +

    EPFL is a major force in entrepreneurship, with 2012 bringing in $100M in funding for ten EPFL startups. Both young spin-offs (like Typesafe and Pix4D) and companies that have long grown past the startup stage (like Logitech) actively transfer the results of EPFL's scientific innovation to industry.

    + ${parent.body()} From 683906cdaf050ee94fa1e0b3972d6853d1dff8b5 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Mon, 6 May 2013 11:17:28 -0400 Subject: [PATCH 66/94] "One again" -> "Remember" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 76dbe4b150..cd6a95cb0a 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ into an isolated environment, only projects that live inside the environment will be able to see and use those libraries. Incompatible dependencies? Use different virtual environments, and your problem is solved. -Once again, each language has a different implementation. Python has +Remember, each language has a different implementation. Python has [`virtualenv`](http://www.virtualenv.org/), Ruby has [`bundler`](http://gembundler.com/), and Node's virtual environment support is built into [`npm`](https://npmjs.org/), its library management tool. From b99584287484bf2c8e21ca064388282438d509df Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Mon, 6 May 2013 11:21:05 -0400 Subject: [PATCH 67/94] LMS is not a leaning management system That would be a chair. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cd6a95cb0a..27494fe6fa 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ you're running `rake "django-admin[syncdb]"`. Run Your Project ---------------- edX has two components: Studio, the course authoring system; and the LMS -(leaning management system) used by students. These two systems communicate +(learning management system) used by students. These two systems communicate through the MongoDB database, which stores course information. To run Studio, run: From 58bc0452eba5dc60abd69b63011b472c94cf6195 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Mon, 6 May 2013 11:25:52 -0400 Subject: [PATCH 68/94] Describe edX better --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 27494fe6fa..4ffbaf9642 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -This is edX, a platform for online higher education. The project is primarily +This is edX, a platform for online course delivery. The project is primarily written in [Python](http://python.org/), using the [Django](https://www.djangoproject.com/) framework. We also use some [Ruby](http://www.ruby-lang.org/) and some [NodeJS](http://nodejs.org/). From a779f6271692c1b68ea602fb972e1bc3aff065b8 Mon Sep 17 00:00:00 2001 From: David Baumgold Date: Mon, 6 May 2013 11:27:06 -0400 Subject: [PATCH 69/94] Make rhetorical question a bit clearer --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4ffbaf9642..ec17d7c9a4 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ projects depending on two different, incompatible versions of a library. Clearly you can't have both versions installed and used on your machine simultaneously. Virtual environments were created to solve this problem: by installing libraries into an isolated environment, only projects that live inside the environment -will be able to see and use those libraries. Incompatible dependencies? Use +will be able to see and use those libraries. Got incompatible dependencies? Use different virtual environments, and your problem is solved. Remember, each language has a different implementation. Python has From 87072a9a58db8f42761392c3f26c536998cde4d7 Mon Sep 17 00:00:00 2001 From: Greg Price Date: Thu, 25 Apr 2013 17:03:10 -0400 Subject: [PATCH 70/94] Add an endpoint for submission of Zendesk tickets by end users This functionality requires the Zendesk URL, user, and API key to be specified in django.conf.settings. Also, add a flag to MITX_FEATURES (enabled by default) to control the endpoint and the front-end feature (yet to be added). --- common/djangoapps/util/tests.py | 284 ++++++++++++++++++++++++++++++-- common/djangoapps/util/views.py | 167 ++++++++++++++++--- github-requirements.txt | 1 + lms/envs/aws.py | 5 + lms/envs/common.py | 14 +- lms/urls.py | 3 +- 6 files changed, 435 insertions(+), 39 deletions(-) diff --git a/common/djangoapps/util/tests.py b/common/djangoapps/util/tests.py index 501deb776c..d829676eaf 100644 --- a/common/djangoapps/util/tests.py +++ b/common/djangoapps/util/tests.py @@ -1,16 +1,280 @@ -""" -This file demonstrates writing tests using the unittest module. These will pass -when you run "manage.py test". - -Replace this with more appropriate tests for your application. -""" +"""Tests for the util package""" +from django.conf import settings +from django.contrib.auth.models import AnonymousUser +from django.http import Http404 from django.test import TestCase +from django.test.client import RequestFactory +from django.test.utils import override_settings +from student.tests.factories import UserFactory +from util import views +from zendesk import ZendeskError +import json +import mock -class SimpleTest(TestCase): - def test_basic_addition(self): +@mock.patch.dict("django.conf.settings.MITX_FEATURES", {"ENABLE_FEEDBACK_SUBMISSION": True}) +@override_settings(ZENDESK_URL="dummy", ZENDESK_USER="dummy", ZENDESK_API_KEY="dummy") +@mock.patch("util.views._ZendeskApi", autospec=True) +class SubmitFeedbackViaZendeskTest(TestCase): + def setUp(self): + """Set up data for the test case""" + self._request_factory = RequestFactory() + self._anon_user = AnonymousUser() + self._auth_user = UserFactory.create( + email="test@edx.org", + username="test", + profile__name="Test User" + ) + # This contains a tag to ensure that tags are submitted correctly + self._anon_fields = { + "email": "test@edx.org", + "name": "Test User", + "subject": "a subject", + "details": "some details", + "tag": "a tag" + } + # This does not contain a tag to ensure that tag is optional + self._auth_fields = {"subject": "a subject", "details": "some details"} + + def _test_request(self, user, fields): """ - Tests that 1 + 1 always equals 2. + Generate a request and invoke the view, returning the response. + + The request will be a POST request from the given `user`, with the given + `fields` in the POST body. """ - self.assertEqual(1 + 1, 2) + req = self._request_factory.post( + "/submit_feedback", + data=fields, + HTTP_REFERER="test_referer", + HTTP_USER_AGENT="test_user_agent" + ) + req.user = user + return views.submit_feedback_via_zendesk(req) + + def _assert_bad_request(self, response, field, zendesk_mock_class): + """ + Assert that the given `response` contains correct failure data. + + It should have a 400 status code, and its content should be a JSON + object containing the specified `field` and an `error`. + """ + self.assertEqual(response.status_code, 400) + resp_json = json.loads(response.content) + self.assertTrue("field" in resp_json) + self.assertEqual(resp_json["field"], field) + self.assertTrue("error" in resp_json) + # There should be absolutely no interaction with Zendesk + self.assertFalse(zendesk_mock_class.return_value.mock_calls) + + def _test_bad_request_omit_field(self, user, fields, omit_field, zendesk_mock_class): + """ + Invoke the view with a request missing a field and assert correctness. + + The request will be a POST request from the given `user`, with POST + fields taken from `fields` minus the entry specified by `omit_field`. + The response should have a 400 (bad request) status code and specify + the invalid field and an error message, and the Zendesk API should not + have been invoked. + """ + filtered_fields = {k: v for (k, v) in fields.items() if k != omit_field} + resp = self._test_request(user, filtered_fields) + self._assert_bad_request(resp, omit_field, zendesk_mock_class) + + def _test_bad_request_empty_field(self, user, fields, empty_field, zendesk_mock_class): + """ + Invoke the view with an empty field and assert correctness. + + The request will be a POST request from the given `user`, with POST + fields taken from `fields`, replacing the entry specified by + `empty_field` with the empty string. The response should have a 400 + (bad request) status code and specify the invalid field and an error + message, and the Zendesk API should not have been invoked. + """ + altered_fields = fields.copy() + altered_fields[empty_field] = "" + resp = self._test_request(user, altered_fields) + self._assert_bad_request(resp, empty_field, zendesk_mock_class) + + def _test_success(self, user, fields): + """ + Generate a request, invoke the view, and assert success. + + The request will be a POST request from the given `user`, with the given + `fields` in the POST body. The response should have a 200 (success) + status code. + """ + resp = self._test_request(user, fields) + self.assertEqual(resp.status_code, 200) + + def test_bad_request_anon_user_no_name(self, zendesk_mock_class): + """Test a request from an anonymous user not specifying `name`.""" + self._test_bad_request_omit_field(self._anon_user, self._anon_fields, "name", zendesk_mock_class) + self._test_bad_request_empty_field(self._anon_user, self._anon_fields, "name", zendesk_mock_class) + + def test_bad_request_anon_user_no_email(self, zendesk_mock_class): + """Test a request from an anonymous user not specifying `email`.""" + self._test_bad_request_omit_field(self._anon_user, self._anon_fields, "email", zendesk_mock_class) + self._test_bad_request_empty_field(self._anon_user, self._anon_fields, "email", zendesk_mock_class) + + def test_bad_request_anon_user_no_subject(self, zendesk_mock_class): + """Test a request from an anonymous user not specifying `subject`.""" + self._test_bad_request_omit_field(self._anon_user, self._anon_fields, "subject", zendesk_mock_class) + self._test_bad_request_empty_field(self._anon_user, self._anon_fields, "subject", zendesk_mock_class) + + def test_bad_request_anon_user_no_details(self, zendesk_mock_class): + """Test a request from an anonymous user not specifying `details`.""" + self._test_bad_request_omit_field(self._anon_user, self._anon_fields, "details", zendesk_mock_class) + self._test_bad_request_empty_field(self._anon_user, self._anon_fields, "details", zendesk_mock_class) + + def test_valid_request_anon_user(self, zendesk_mock_class): + """ + Test a valid request from an anonymous user. + + The response should have a 200 (success) status code, and a ticket with + the given information should have been submitted via the Zendesk API. + """ + zendesk_mock_instance = zendesk_mock_class.return_value + zendesk_mock_instance.create_ticket.return_value = 42 + self._test_success(self._anon_user, self._anon_fields) + expected_calls = [ + mock.call.create_ticket( + { + "ticket": { + "requester": {"name": "Test User", "email": "test@edx.org"}, + "subject": "a subject", + "comment": {"body": "some details"}, + "tags": ["a tag"] + } + } + ), + mock.call.update_ticket( + 42, + { + "ticket": { + "comment": { + "public": False, + "body": + "Additional information:\n\n" + "HTTP_USER_AGENT: test_user_agent\n" + "HTTP_REFERER: test_referer" + } + } + } + ) + ] + self.assertEqual(zendesk_mock_instance.mock_calls, expected_calls) + + def test_bad_request_auth_user_no_subject(self, zendesk_mock_class): + """Test a request from an authenticated user not specifying `subject`.""" + self._test_bad_request_omit_field(self._auth_user, self._auth_fields, "subject", zendesk_mock_class) + self._test_bad_request_empty_field(self._auth_user, self._auth_fields, "subject", zendesk_mock_class) + + def test_bad_request_auth_user_no_details(self, zendesk_mock_class): + """Test a request from an authenticated user not specifying `details`.""" + self._test_bad_request_omit_field(self._auth_user, self._auth_fields, "details", zendesk_mock_class) + self._test_bad_request_empty_field(self._auth_user, self._auth_fields, "details", zendesk_mock_class) + + def test_valid_request_auth_user(self, zendesk_mock_class): + """ + Test a valid request from an authenticated user. + + The response should have a 200 (success) status code, and a ticket with + the given information should have been submitted via the Zendesk API. + """ + zendesk_mock_instance = zendesk_mock_class.return_value + zendesk_mock_instance.create_ticket.return_value = 42 + self._test_success(self._auth_user, self._auth_fields) + expected_calls = [ + mock.call.create_ticket( + { + "ticket": { + "requester": {"name": "Test User", "email": "test@edx.org"}, + "subject": "a subject", + "comment": {"body": "some details"}, + "tags": [] + } + } + ), + mock.call.update_ticket( + 42, + { + "ticket": { + "comment": { + "public": False, + "body": + "Additional information:\n\n" + "username: test\n" + "HTTP_USER_AGENT: test_user_agent\n" + "HTTP_REFERER: test_referer" + } + } + } + ) + ] + self.assertEqual(zendesk_mock_instance.mock_calls, expected_calls) + + def test_get_request(self, zendesk_mock_class): + """Test that a GET results in a 405 even with all required fields""" + req = self._request_factory.get("/submit_feedback", data=self._anon_fields) + req.user = self._anon_user + resp = views.submit_feedback_via_zendesk(req) + self.assertEqual(resp.status_code, 405) + self.assertIn("Allow", resp) + self.assertEqual(resp["Allow"], "POST") + # There should be absolutely no interaction with Zendesk + self.assertFalse(zendesk_mock_class.mock_calls) + + def test_zendesk_error_on_create(self, zendesk_mock_class): + """ + Test Zendesk returning an error on ticket creation. + + We should return a 500 error with no body + """ + err = ZendeskError(msg="", error_code=404) + zendesk_mock_instance = zendesk_mock_class.return_value + zendesk_mock_instance.create_ticket.side_effect = err + resp = self._test_request(self._anon_user, self._anon_fields) + self.assertEqual(resp.status_code, 500) + self.assertFalse(resp.content) + + def test_zendesk_error_on_update(self, zendesk_mock_class): + """ + Test for Zendesk returning an error on ticket update. + + If Zendesk returns any error on ticket update, we return a 200 to the + browser because the update contains additional information that is not + necessary for the user to have submitted their feedback. + """ + err = ZendeskError(msg="", error_code=500) + zendesk_mock_instance = zendesk_mock_class.return_value + zendesk_mock_instance.update_ticket.side_effect = err + resp = self._test_request(self._anon_user, self._anon_fields) + self.assertEqual(resp.status_code, 200) + + @mock.patch.dict("django.conf.settings.MITX_FEATURES", {"ENABLE_FEEDBACK_SUBMISSION": False}) + def test_not_enabled(self, zendesk_mock_class): + """ + Test for Zendesk submission not enabled in `settings`. + + We should raise Http404. + """ + with self.assertRaises(Http404): + self._test_request(self._anon_user, self._anon_fields) + + def test_zendesk_not_configured(self, zendesk_mock_class): + """ + Test for Zendesk not fully configured in `settings`. + + For each required configuration parameter, test that setting it to + `None` causes an otherwise valid request to return a 500 error. + """ + def test_case(missing_config): + with mock.patch(missing_config, None): + with self.assertRaises(Exception): + self._test_request(self._anon_user, self._anon_fields) + + test_case("django.conf.settings.ZENDESK_URL") + test_case("django.conf.settings.ZENDESK_USER") + test_case("django.conf.settings.ZENDESK_API_KEY") diff --git a/common/djangoapps/util/views.py b/common/djangoapps/util/views.py index cece37757b..c087e99cb5 100644 --- a/common/djangoapps/util/views.py +++ b/common/djangoapps/util/views.py @@ -1,5 +1,6 @@ import datetime import json +import logging import pprint import sys @@ -7,15 +8,21 @@ from django.conf import settings from django.contrib.auth.models import User from django.core.context_processors import csrf from django.core.mail import send_mail -from django.http import Http404 -from django.http import HttpResponse +from django.core.validators import ValidationError, validate_email +from django.http import Http404, HttpResponse, HttpResponseBadRequest, HttpResponseNotAllowed, HttpResponseServerError from django.shortcuts import redirect +from django_future.csrf import ensure_csrf_cookie from mitxmako.shortcuts import render_to_response, render_to_string +from urllib import urlencode +import zendesk import capa.calc import track.views +log = logging.getLogger(__name__) + + def calculate(request): ''' Calculator in footer of every page. ''' equation = request.GET['equation'] @@ -29,36 +36,142 @@ def calculate(request): return HttpResponse(json.dumps({'result': str(result)})) -def send_feedback(request): - ''' Feeback mechanism in footer of every page. ''' - try: - username = request.user.username +class _ZendeskApi(object): + def __init__(self): + """ + Instantiate the Zendesk API. + + All of `ZENDESK_URL`, `ZENDESK_USER`, and `ZENDESK_API_KEY` must be set + in `django.conf.settings`. + """ + self._zendesk_instance = zendesk.Zendesk( + settings.ZENDESK_URL, + settings.ZENDESK_USER, + settings.ZENDESK_API_KEY, + use_api_token=True, + api_version=2 + ) + + def create_ticket(self, ticket): + """ + Create the given `ticket` in Zendesk. + + The ticket should have the format specified by the zendesk package. + """ + ticket_url = self._zendesk_instance.create_ticket(data=ticket) + return zendesk.get_id_from_url(ticket_url) + + def update_ticket(self, ticket_id, update): + """ + Update the Zendesk ticket with id `ticket_id` using the given `update`. + + The update should have the format specified by the zendesk package. + """ + self._zendesk_instance.update_ticket(ticket_id=ticket_id, data=update) + + +def submit_feedback_via_zendesk(request): + """ + Create a new user-requested Zendesk ticket. + + If Zendesk submission is not enabled, any request will raise `Http404`. + If any configuration parameter (`ZENDESK_URL`, `ZENDESK_USER`, or + `ZENDESK_API_KEY`) is missing, any request will raise an `Exception`. + The request must be a POST request specifying `subject` and `details`. + If the user is not authenticated, the request must also specify `name` and + `email`. If the user is authenticated, the `name` and `email` will be + populated from the user's information. If any required parameter is + missing, a 400 error will be returned indicating which field is missing and + providing an error message. If Zendesk returns any error on ticket + creation, a 500 error will be returned with no body. Once created, the + ticket will be updated with a private comment containing additional + information from the browser and server, such as HTTP headers and user + state. Whether or not the update succeeds, if the user's ticket is + successfully created, an empty successful response (200) will be returned. + """ + if not settings.MITX_FEATURES.get('ENABLE_FEEDBACK_SUBMISSION', False): + raise Http404() + if request.method != "POST": + return HttpResponseNotAllowed(["POST"]) + if ( + not settings.ZENDESK_URL or + not settings.ZENDESK_USER or + not settings.ZENDESK_API_KEY + ): + raise Exception("Zendesk enabled but not configured") + + def build_error_response(status_code, field, err_msg): + return HttpResponse(json.dumps({"field": field, "error": err_msg}), status=status_code) + + additional_info = {} + + required_fields = ["subject", "details"] + if not request.user.is_authenticated(): + required_fields += ["name", "email"] + required_field_errs = { + "subject": "Please provide a subject.", + "details": "Please provide details.", + "name": "Please provide your name.", + "email": "Please provide a valid e-mail.", + } + + for field in required_fields: + if field not in request.POST or not request.POST[field]: + return build_error_response(400, field, required_field_errs[field]) + + subject = request.POST["subject"] + details = request.POST["details"] + tags = [] + if "tag" in request.POST: + tags = [request.POST["tag"]] + + if request.user.is_authenticated(): + realname = request.user.profile.name email = request.user.email - except: - username = "anonymous" - email = "anonymous" + additional_info["username"] = request.user.username + else: + realname = request.POST["name"] + email = request.POST["email"] + try: + validate_email(email) + except ValidationError: + return build_error_response(400, "email", required_field_errs["email"]) + for header in ["HTTP_REFERER", "HTTP_USER_AGENT"]: + additional_info[header] = request.META.get(header) + + zendesk_api = _ZendeskApi() + + additional_info_string = ( + "Additional information:\n\n" + + "\n".join("%s: %s" % (key, value) for (key, value) in additional_info.items() if value is not None) + ) + + new_ticket = { + "ticket": { + "requester": {"name": realname, "email": email}, + "subject": subject, + "comment": {"body": details}, + "tags": tags + } + } try: - browser = request.META['HTTP_USER_AGENT'] - except: - browser = "Unknown" + ticket_id = zendesk_api.create_ticket(new_ticket) + except zendesk.ZendeskError as err: + log.error("%s", str(err)) + return HttpResponse(status=500) - feedback = render_to_string("feedback_email.txt", - {"subject": request.POST['subject'], - "url": request.POST['url'], - "time": datetime.datetime.now().isoformat(), - "feedback": request.POST['message'], - "email": email, - "browser": browser, - "user": username}) + # Additional information is provided as a private update so the information + # is not visible to the user. + ticket_update = {"ticket": {"comment": {"public": False, "body": additional_info_string}}} + try: + zendesk_api.update_ticket(ticket_id, ticket_update) + except zendesk.ZendeskError as err: + log.error("%s", str(err)) + # The update is not strictly necessary, so do not indicate failure to the user + pass - send_mail("MITx Feedback / " + request.POST['subject'], - feedback, - settings.DEFAULT_FROM_EMAIL, - [settings.DEFAULT_FEEDBACK_EMAIL], - fail_silently=False - ) - return HttpResponse(json.dumps({'success': True})) + return HttpResponse() def info(request): diff --git a/github-requirements.txt b/github-requirements.txt index 3b71d228e7..048f3cee68 100644 --- a/github-requirements.txt +++ b/github-requirements.txt @@ -5,6 +5,7 @@ -e git://github.com/edx/django-pipeline.git#egg=django-pipeline -e git://github.com/edx/django-wiki.git@e2e84558#egg=django-wiki -e git://github.com/dementrock/pystache_custom.git@776973740bdaad83a3b029f96e415a7d1e8bec2f#egg=pystache_custom-dev +-e git://github.com/eventbrite/zendesk.git@d53fe0e81b623f084e91776bcf6369f8b7b63879#egg=zendesk # Our libraries: -e git+https://github.com/edx/XBlock.git@5ce6f70a#egg=XBlock diff --git a/lms/envs/aws.py b/lms/envs/aws.py index aa30315eca..70e75f1f0d 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -80,6 +80,8 @@ META_UNIVERSITIES = ENV_TOKENS.get('META_UNIVERSITIES', {}) COMMENTS_SERVICE_URL = ENV_TOKENS.get("COMMENTS_SERVICE_URL", '') COMMENTS_SERVICE_KEY = ENV_TOKENS.get("COMMENTS_SERVICE_KEY", '') CERT_QUEUE = ENV_TOKENS.get("CERT_QUEUE", 'test-pull') +ZENDESK_URL = ENV_TOKENS.get("ZENDESK_URL") +FEEDBACK_SUBMISSION_EMAIL = ENV_TOKENS.get("FEEDBACK_SUBMISSION_EMAIL") ############################## SECURE AUTH ITEMS ############### # Secret things: passwords, access keys, etc. @@ -115,3 +117,6 @@ DATADOG_API = AUTH_TOKENS.get("DATADOG_API") # Analytics dashboard server ANALYTICS_SERVER_URL = ENV_TOKENS.get("ANALYTICS_SERVER_URL") ANALYTICS_API_KEY = AUTH_TOKENS.get("ANALYTICS_API_KEY", "") + +ZENDESK_USER = AUTH_TOKENS.get("ZENDESK_USER") +ZENDESK_API_KEY = AUTH_TOKENS.get("ZENDESK_API_KEY") diff --git a/lms/envs/common.py b/lms/envs/common.py index 32a213f06e..b804ae2a7a 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -90,7 +90,10 @@ MITX_FEATURES = { # Give a UI to show a student's submission history in a problem by the # Staff Debug tool. - 'ENABLE_STUDENT_HISTORY_VIEW': True + 'ENABLE_STUDENT_HISTORY_VIEW': True, + + # Provide a UI to allow users to submit feedback from the LMS + 'ENABLE_FEEDBACK_SUBMISSION': False, } # Used for A/B testing @@ -323,6 +326,14 @@ WIKI_LINK_DEFAULT_LEVEL = 2 PEARSONVUE_SIGNINPAGE_URL = "https://www1.pearsonvue.com/testtaker/signin/SignInPage/EDX" # TESTCENTER_ACCOMMODATION_REQUEST_EMAIL = "exam-help@edx.org" +##### Feedback submission mechanism ##### +FEEDBACK_SUBMISSION_EMAIL = None + +##### Zendesk ##### +ZENDESK_URL = None +ZENDESK_USER = None +ZENDESK_API_KEY = None + ################################# open ended grading config ##################### #By setting up the default settings with an incorrect user name and password, @@ -582,3 +593,4 @@ INSTALLED_APPS = ( # Discussion forums 'django_comment_client', ) + diff --git a/lms/urls.py b/lms/urls.py index 082004c1be..7458d49025 100644 --- a/lms/urls.py +++ b/lms/urls.py @@ -116,8 +116,9 @@ urlpatterns = ('', # Favicon (r'^favicon\.ico$', 'django.views.generic.simple.redirect_to', {'url': '/static/images/favicon.ico'}), + url(r'^submit_feedback$', 'util.views.submit_feedback_via_zendesk'), + # TODO: These urls no longer work. They need to be updated before they are re-enabled - # url(r'^send_feedback$', 'util.views.send_feedback'), # url(r'^reactivate/(?P[^/]*)$', 'student.views.reactivation_email'), ) From 00729a8c13342654ed510ad5a09d056cd49d45e2 Mon Sep 17 00:00:00 2001 From: Greg Price Date: Wed, 24 Apr 2013 12:06:48 -0400 Subject: [PATCH 71/94] Add an omnipresent help tab to the LMS The help tab opens a modal dialog that directs the user at various resources (e.g. the site FAQ and course forums) and allows the user to submit feedback to the feedback endpoint (which will ultimately create a ticket for the student support team). --- .../xmodule/modulestore/tests/factories.py | 16 +- lms/djangoapps/courseware/tabs.py | 33 +++- lms/djangoapps/courseware/tests/test_tabs.py | 63 +++++++ lms/static/sass/base/_base.scss | 57 ++++++ lms/templates/help_modal.html | 167 ++++++++++++++++++ lms/templates/navigation.html | 2 + 6 files changed, 324 insertions(+), 14 deletions(-) create mode 100644 lms/templates/help_modal.html diff --git a/common/lib/xmodule/xmodule/modulestore/tests/factories.py b/common/lib/xmodule/xmodule/modulestore/tests/factories.py index 7788e23980..31237af7b9 100644 --- a/common/lib/xmodule/xmodule/modulestore/tests/factories.py +++ b/common/lib/xmodule/xmodule/modulestore/tests/factories.py @@ -37,11 +37,17 @@ class XModuleCourseFactory(Factory): new_course.display_name = display_name new_course.lms.start = gmtime() - new_course.tabs = [{"type": "courseware"}, - {"type": "course_info", "name": "Course Info"}, - {"type": "discussion", "name": "Discussion"}, - {"type": "wiki", "name": "Wiki"}, - {"type": "progress", "name": "Progress"}] + new_course.tabs = kwargs.get( + 'tabs', + [ + {"type": "courseware"}, + {"type": "course_info", "name": "Course Info"}, + {"type": "discussion", "name": "Discussion"}, + {"type": "wiki", "name": "Wiki"}, + {"type": "progress", "name": "Progress"} + ] + ) + new_course.discussion_link = kwargs.get('discussion_link') # Update the data in the mongo datastore store.update_metadata(new_course.location.url(), own_metadata(new_course)) diff --git a/lms/djangoapps/courseware/tabs.py b/lms/djangoapps/courseware/tabs.py index 9f9a4e3e96..ea6f2fc556 100644 --- a/lms/djangoapps/courseware/tabs.py +++ b/lms/djangoapps/courseware/tabs.py @@ -294,6 +294,27 @@ def get_course_tabs(user, course, active_page): return tabs +def get_discussion_link(course): + """ + Return the URL for the discussion tab for the given `course`. + + If they have a discussion link specified, use that even if we disable + discussions. Disabling discsussions is mostly a server safety feature at + this point, and we don't need to worry about external sites. Otherwise, + if the course has a discussion tab or uses the default tabs, return the + discussion view URL. Otherwise, return None to indicate the lack of a + discussion tab. + """ + if course.discussion_link: + return course.discussion_link + elif not settings.MITX_FEATURES.get('ENABLE_DISCUSSION_SERVICE'): + return None + elif hasattr(course, 'tabs') and course.tabs and not any([tab['type'] == 'discussion' for tab in course.tabs]): + return None + else: + return reverse('django_comment_client.forum.views.forum_form_discussion', args=[course.id]) + + def get_default_tabs(user, course, active_page): # When calling the various _tab methods, can omit the 'type':'blah' from the @@ -308,15 +329,9 @@ def get_default_tabs(user, course, active_page): tabs.extend(_textbooks({}, user, course, active_page)) - ## If they have a discussion link specified, use that even if we feature - ## flag discussions off. Disabling that is mostly a server safety feature - ## at this point, and we don't need to worry about external sites. - if course.discussion_link: - tabs.append(CourseTab('Discussion', course.discussion_link, active_page == 'discussion')) - elif settings.MITX_FEATURES.get('ENABLE_DISCUSSION_SERVICE'): - link = reverse('django_comment_client.forum.views.forum_form_discussion', - args=[course.id]) - tabs.append(CourseTab('Discussion', link, active_page == 'discussion')) + discussion_link = get_discussion_link(course) + if discussion_link: + tabs.append(CourseTab('Discussion', discussion_link, active_page == 'discussion')) tabs.extend(_wiki({'name': 'Wiki', 'type': 'wiki'}, user, course, active_page)) diff --git a/lms/djangoapps/courseware/tests/test_tabs.py b/lms/djangoapps/courseware/tests/test_tabs.py index 928b9ae0df..04c46a7820 100644 --- a/lms/djangoapps/courseware/tests/test_tabs.py +++ b/lms/djangoapps/courseware/tests/test_tabs.py @@ -1,11 +1,15 @@ from django.test import TestCase from mock import MagicMock +from mock import patch import courseware.tabs as tabs from django.test.utils import override_settings from django.core.urlresolvers import reverse +from courseware.tests.tests import TEST_DATA_MONGO_MODULESTORE +from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase +from xmodule.modulestore.tests.factories import CourseFactory class ProgressTestCase(TestCase): @@ -257,3 +261,62 @@ class ValidateTabsTestCase(TestCase): self.assertRaises(tabs.InvalidTabsException, tabs.validate_tabs, self.courses[2]) self.assertIsNone(tabs.validate_tabs(self.courses[3])) self.assertRaises(tabs.InvalidTabsException, tabs.validate_tabs, self.courses[4]) + + +@override_settings(MODULESTORE=TEST_DATA_MONGO_MODULESTORE) +class DiscussionLinkTestCase(ModuleStoreTestCase): + + def setUp(self): + self.tabs_with_discussion = [ + {'type':'courseware'}, + {'type':'course_info'}, + {'type':'discussion'}, + {'type':'textbooks'}, + ] + self.tabs_without_discussion = [ + {'type':'courseware'}, + {'type':'course_info'}, + {'type':'textbooks'}, + ] + + @staticmethod + def _patch_reverse(course): + def patched_reverse(viewname, args): + if viewname == "django_comment_client.forum.views.forum_form_discussion" and args == [course.id]: + return "default_discussion_link" + else: + return None + return patch("courseware.tabs.reverse", patched_reverse) + + @patch.dict("django.conf.settings.MITX_FEATURES", {"ENABLE_DISCUSSION_SERVICE": False}) + def test_explicit_discussion_link(self): + """Test that setting discussion_link overrides everything else""" + course = CourseFactory.create(discussion_link="other_discussion_link", tabs=self.tabs_with_discussion) + self.assertEqual(tabs.get_discussion_link(course), "other_discussion_link") + + @patch.dict("django.conf.settings.MITX_FEATURES", {"ENABLE_DISCUSSION_SERVICE": False}) + def test_discussions_disabled(self): + """Test that other cases return None with discussions disabled""" + for i, t in enumerate([None, self.tabs_with_discussion, self.tabs_without_discussion]): + course = CourseFactory.create(tabs=t, number=str(i)) + self.assertEqual(tabs.get_discussion_link(course), None) + + @patch.dict("django.conf.settings.MITX_FEATURES", {"ENABLE_DISCUSSION_SERVICE": True}) + def test_no_tabs(self): + """Test a course without tabs configured""" + course = CourseFactory.create(tabs=None) + with self._patch_reverse(course): + self.assertEqual(tabs.get_discussion_link(course), "default_discussion_link") + + @patch.dict("django.conf.settings.MITX_FEATURES", {"ENABLE_DISCUSSION_SERVICE": True}) + def test_tabs_with_discussion(self): + """Test a course with a discussion tab configured""" + course = CourseFactory.create(tabs=self.tabs_with_discussion) + with self._patch_reverse(course): + self.assertEqual(tabs.get_discussion_link(course), "default_discussion_link") + + @patch.dict("django.conf.settings.MITX_FEATURES", {"ENABLE_DISCUSSION_SERVICE": True}) + def test_tabs_without_discussion(self): + """Test a course with tabs configured but without a discussion tab""" + course = CourseFactory.create(tabs=self.tabs_without_discussion) + self.assertEqual(tabs.get_discussion_link(course), None) diff --git a/lms/static/sass/base/_base.scss b/lms/static/sass/base/_base.scss index ca56f542d6..d2d4a0564f 100644 --- a/lms/static/sass/base/_base.scss +++ b/lms/static/sass/base/_base.scss @@ -202,5 +202,62 @@ mark { } } +.help-tab { + @include transform(rotate(-90deg)); + @include transform-origin(0 0); + top: 50%; + left: 0; + position: fixed; + z-index: 99; + a:link, a:visited { + cursor: pointer; + border: 1px solid #ccc; + border-top-style: none; + @include border-radius(0px 0px 10px 10px); + background: transparentize(#fff, 0.25); + color: transparentize(#333, 0.25); + font-weight: bold; + text-decoration: none; + padding: 6px 22px 11px; + display: inline-block; + &:hover { + color: #fff; + background: #1D9DD9; + } + } +} + +.help-buttons { + padding: 10px 50px; + + a:link, a:visited { + padding: 15px 0px; + text-align: center; + cursor: pointer; + background: #fff; + text-decoration: none; + display: block; + border: 1px solid #ccc; + + &#feedback_link_problem { + border-bottom-style: none; + @include border-radius(10px 10px 0px 0px); + } + + &#feedback_link_question { + border-top-style: none; + @include border-radius(0px 0px 10px 10px); + } + + &:hover { + color: #fff; + background: #1D9DD9; + } + } +} + +#feedback_form textarea[name="details"] { + height: 150px; +} diff --git a/lms/templates/help_modal.html b/lms/templates/help_modal.html new file mode 100644 index 0000000000..83ea00068f --- /dev/null +++ b/lms/templates/help_modal.html @@ -0,0 +1,167 @@ +<%namespace name='static' file='static_content.html'/> +<%! from django.conf import settings %> +<%! from courseware.tabs import get_discussion_link %> + +% if settings.MITX_FEATURES.get('ENABLE_FEEDBACK_SUBMISSION', False): + + + + + + + +%endif diff --git a/lms/templates/navigation.html b/lms/templates/navigation.html index e4c23e4836..4bb99d1ebd 100644 --- a/lms/templates/navigation.html +++ b/lms/templates/navigation.html @@ -96,3 +96,5 @@ site_status_msg = get_site_status_msg(course_id) <%include file="signup_modal.html" /> <%include file="forgot_password_modal.html" /> %endif + +<%include file="help_modal.html"/> From 203a958e68299831cd9fe23f85643530575b32ec Mon Sep 17 00:00:00 2001 From: Greg Price Date: Thu, 18 Apr 2013 16:07:24 -0400 Subject: [PATCH 72/94] Outline textareas in red on a form submission error This was previously done for input but not textarea. --- lms/static/sass/shared/_modal.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/static/sass/shared/_modal.scss b/lms/static/sass/shared/_modal.scss index bfa803fee2..2da64d54a6 100644 --- a/lms/static/sass/shared/_modal.scss +++ b/lms/static/sass/shared/_modal.scss @@ -155,7 +155,7 @@ display: block; color: #8F0E0E; - + input { + + input, + textarea { border: 1px solid #CA1111; color: #8F0E0E; } From 522751e425af15a1d3b75537ec32c6a1df229881 Mon Sep 17 00:00:00 2001 From: Jay Zoldak Date: Mon, 6 May 2013 14:28:05 -0400 Subject: [PATCH 73/94] Ignore the js files that are compiled from coffeescript when running the xmodule jasmine tests --- common/lib/xmodule/xmodule/js/src/.gitignore | 5 ++++- common/lib/xmodule/xmodule/js/src/annotatable/.gitignore | 1 + common/lib/xmodule/xmodule/js/src/capa/.gitignore | 1 + .../lib/xmodule/xmodule/js/src/combinedopenended/.gitignore | 1 + common/lib/xmodule/xmodule/js/src/conditional/.gitignore | 1 + common/lib/xmodule/xmodule/js/src/discussion/.gitignore | 1 + common/lib/xmodule/xmodule/js/src/html/.gitignore | 1 + common/lib/xmodule/xmodule/js/src/peergrading/.gitignore | 1 + common/lib/xmodule/xmodule/js/src/problem/.gitignore | 1 + common/lib/xmodule/xmodule/js/src/raw/.gitignore | 1 + common/lib/xmodule/xmodule/js/src/sequence/.gitignore | 1 + common/lib/xmodule/xmodule/js/src/vertical/.gitignore | 1 + common/lib/xmodule/xmodule/js/src/video/.gitignore | 2 ++ common/lib/xmodule/xmodule/js/src/videoalpha/.gitignore | 2 ++ common/lib/xmodule/xmodule/js/src/wrapper/.gitignore | 1 + 15 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 common/lib/xmodule/xmodule/js/src/annotatable/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/capa/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/combinedopenended/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/conditional/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/discussion/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/html/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/peergrading/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/problem/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/raw/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/sequence/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/vertical/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/video/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/videoalpha/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/wrapper/.gitignore diff --git a/common/lib/xmodule/xmodule/js/src/.gitignore b/common/lib/xmodule/xmodule/js/src/.gitignore index bbd93c90e3..c2d956ce35 100644 --- a/common/lib/xmodule/xmodule/js/src/.gitignore +++ b/common/lib/xmodule/xmodule/js/src/.gitignore @@ -1 +1,4 @@ -# Please do not ignore *.js files. Some xmodules are written in JS. +# Ignore .js files in this folder as they are compiled from coffeescript +# For each of the xmodules subdirectories, add a .gitignore file that +# will cover any .coffee -> .js files that get compiled. +*.js diff --git a/common/lib/xmodule/xmodule/js/src/annotatable/.gitignore b/common/lib/xmodule/xmodule/js/src/annotatable/.gitignore new file mode 100644 index 0000000000..a6c7c2852d --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/annotatable/.gitignore @@ -0,0 +1 @@ +*.js diff --git a/common/lib/xmodule/xmodule/js/src/capa/.gitignore b/common/lib/xmodule/xmodule/js/src/capa/.gitignore new file mode 100644 index 0000000000..77fdb1cbe9 --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/capa/.gitignore @@ -0,0 +1 @@ +display.js diff --git a/common/lib/xmodule/xmodule/js/src/combinedopenended/.gitignore b/common/lib/xmodule/xmodule/js/src/combinedopenended/.gitignore new file mode 100644 index 0000000000..a6c7c2852d --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/combinedopenended/.gitignore @@ -0,0 +1 @@ +*.js diff --git a/common/lib/xmodule/xmodule/js/src/conditional/.gitignore b/common/lib/xmodule/xmodule/js/src/conditional/.gitignore new file mode 100644 index 0000000000..a6c7c2852d --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/conditional/.gitignore @@ -0,0 +1 @@ +*.js diff --git a/common/lib/xmodule/xmodule/js/src/discussion/.gitignore b/common/lib/xmodule/xmodule/js/src/discussion/.gitignore new file mode 100644 index 0000000000..a6c7c2852d --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/discussion/.gitignore @@ -0,0 +1 @@ +*.js diff --git a/common/lib/xmodule/xmodule/js/src/html/.gitignore b/common/lib/xmodule/xmodule/js/src/html/.gitignore new file mode 100644 index 0000000000..a6c7c2852d --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/html/.gitignore @@ -0,0 +1 @@ +*.js diff --git a/common/lib/xmodule/xmodule/js/src/peergrading/.gitignore b/common/lib/xmodule/xmodule/js/src/peergrading/.gitignore new file mode 100644 index 0000000000..a6c7c2852d --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/peergrading/.gitignore @@ -0,0 +1 @@ +*.js diff --git a/common/lib/xmodule/xmodule/js/src/problem/.gitignore b/common/lib/xmodule/xmodule/js/src/problem/.gitignore new file mode 100644 index 0000000000..a6c7c2852d --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/problem/.gitignore @@ -0,0 +1 @@ +*.js diff --git a/common/lib/xmodule/xmodule/js/src/raw/.gitignore b/common/lib/xmodule/xmodule/js/src/raw/.gitignore new file mode 100644 index 0000000000..7cc629ca26 --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/raw/.gitignore @@ -0,0 +1 @@ +edit/*.js diff --git a/common/lib/xmodule/xmodule/js/src/sequence/.gitignore b/common/lib/xmodule/xmodule/js/src/sequence/.gitignore new file mode 100644 index 0000000000..a6c7c2852d --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/sequence/.gitignore @@ -0,0 +1 @@ +*.js diff --git a/common/lib/xmodule/xmodule/js/src/vertical/.gitignore b/common/lib/xmodule/xmodule/js/src/vertical/.gitignore new file mode 100644 index 0000000000..a6c7c2852d --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/vertical/.gitignore @@ -0,0 +1 @@ +*.js diff --git a/common/lib/xmodule/xmodule/js/src/video/.gitignore b/common/lib/xmodule/xmodule/js/src/video/.gitignore new file mode 100644 index 0000000000..39c7b67ac1 --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/video/.gitignore @@ -0,0 +1,2 @@ +*.js +display/*.js diff --git a/common/lib/xmodule/xmodule/js/src/videoalpha/.gitignore b/common/lib/xmodule/xmodule/js/src/videoalpha/.gitignore new file mode 100644 index 0000000000..39c7b67ac1 --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/videoalpha/.gitignore @@ -0,0 +1,2 @@ +*.js +display/*.js diff --git a/common/lib/xmodule/xmodule/js/src/wrapper/.gitignore b/common/lib/xmodule/xmodule/js/src/wrapper/.gitignore new file mode 100644 index 0000000000..a6c7c2852d --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/wrapper/.gitignore @@ -0,0 +1 @@ +*.js From 594d28a6537170ea28d32c2684a940ca24bc319b Mon Sep 17 00:00:00 2001 From: cahrens Date: Mon, 6 May 2013 16:03:41 -0400 Subject: [PATCH 74/94] Pass default value through. --- cms/templates/widgets/metadata-edit.html | 10 +-- .../xmodule/modulestore/inheritance.py | 13 +++- .../lib/xmodule/xmodule/tests/test_import.py | 58 +++++++++++++++++ .../xmodule/xmodule/tests/test_xml_module.py | 62 ++++++++++++------- common/lib/xmodule/xmodule/x_module.py | 21 ++++--- github-requirements.txt | 2 +- 6 files changed, 124 insertions(+), 42 deletions(-) diff --git a/cms/templates/widgets/metadata-edit.html b/cms/templates/widgets/metadata-edit.html index 9693c18e9c..aada438f38 100644 --- a/cms/templates/widgets/metadata-edit.html +++ b/cms/templates/widgets/metadata-edit.html @@ -8,7 +8,7 @@ % for field_name, field_value in editable_metadata_fields.items():
  • % if field_name == 'source_code': - % if field_value['is_default'] is False: + % if field_value['explicitly_set'] is True: Edit High Level Source % endif % else: @@ -26,8 +26,10 @@ % if False: - - + + + + % if field_value['field'].values: % for value in field_value['field'].values: @@ -40,7 +42,7 @@ % endfor - % if 'source_code' in editable_metadata_fields and not editable_metadata_fields['source_code']['is_default']: + % if 'source_code' in editable_metadata_fields and editable_metadata_fields['source_code']['explicitly_set']: <%include file="source-edit.html" /> % endif diff --git a/common/lib/xmodule/xmodule/modulestore/inheritance.py b/common/lib/xmodule/xmodule/modulestore/inheritance.py index 62b351999d..a816aa9776 100644 --- a/common/lib/xmodule/xmodule/modulestore/inheritance.py +++ b/common/lib/xmodule/xmodule/modulestore/inheritance.py @@ -31,15 +31,22 @@ def inherit_metadata(descriptor, model_data): Only metadata specified in self.inheritable_metadata will be inherited """ + # The inherited values that are actually being used. if not hasattr(descriptor, '_inherited_metadata'): setattr(descriptor, '_inherited_metadata', {}) + # All inheritable metadata values (for which a value exists in model_data). + if not hasattr(descriptor, '_inheritable_metadata'): + setattr(descriptor, '_inheritable_metadata', {}) + # Set all inheritable metadata from kwargs that are # in self.inheritable_metadata and aren't already set in metadata for attr in INHERITABLE_METADATA: - if attr not in descriptor._model_data and attr in model_data: - descriptor._inherited_metadata[attr] = model_data[attr] - descriptor._model_data[attr] = model_data[attr] + if attr in model_data: + descriptor._inheritable_metadata[attr] = model_data[attr] + if attr not in descriptor._model_data: + descriptor._inherited_metadata[attr] = model_data[attr] + descriptor._model_data[attr] = model_data[attr] def own_metadata(module): diff --git a/common/lib/xmodule/xmodule/tests/test_import.py b/common/lib/xmodule/xmodule/tests/test_import.py index 9d73fdcc17..aedca1d058 100644 --- a/common/lib/xmodule/xmodule/tests/test_import.py +++ b/common/lib/xmodule/xmodule/tests/test_import.py @@ -151,6 +151,10 @@ class ImportTestCase(BaseCourseTestCase): # Check that the child inherits due correctly child = descriptor.get_children()[0] self.assertEqual(child.lms.due, Date().from_json(v)) + self.assertEqual(child._inheritable_metadata, child._inherited_metadata) + self.assertEqual(2, len(child._inherited_metadata)) + self.assertEqual('1970-01-01T00:00:00Z', child._inherited_metadata['start']) + self.assertEqual(v, child._inherited_metadata['due']) # Now export and check things resource_fs = MemoryFS() @@ -184,6 +188,60 @@ class ImportTestCase(BaseCourseTestCase): self.assertEqual(chapter_xml.tag, 'chapter') self.assertFalse('due' in chapter_xml.attrib) + def test_metadata_no_inheritance(self): + """ + Checks that default value of None (for due) does not get marked as inherited. + """ + system = self.get_system() + url_name = 'test1' + start_xml = ''' + + + Two houses, ... + + '''.format(org=ORG, course=COURSE, url_name=url_name) + descriptor = system.process_xml(start_xml) + compute_inherited_metadata(descriptor) + + self.assertEqual(descriptor.lms.due, None) + + # Check that the child does not inherit a value for due + child = descriptor.get_children()[0] + self.assertEqual(child.lms.due, None) + self.assertEqual(child._inheritable_metadata, child._inherited_metadata) + self.assertEqual(1, len(child._inherited_metadata)) + self.assertEqual('1970-01-01T00:00:00Z', child._inherited_metadata['start']) + + def test_metadata_override_default(self): + """ + Checks that due date can be overriden at child level. + """ + system = self.get_system() + course_due = 'March 20 17:00' + child_due = 'April 10 00:00' + url_name = 'test1' + start_xml = ''' + + + Two houses, ... + + '''.format(due=course_due, org=ORG, course=COURSE, url_name=url_name) + descriptor = system.process_xml(start_xml) + child = descriptor.get_children()[0] + child._model_data['due'] = child_due + compute_inherited_metadata(descriptor) + + self.assertEqual(descriptor.lms.due, Date().from_json(course_due)) + self.assertEqual(child.lms.due, Date().from_json(child_due)) + # Test inherited metadata. Due does not appear here (because explicitly set on child). + self.assertEqual(1, len(child._inherited_metadata)) + self.assertEqual('1970-01-01T00:00:00Z', child._inherited_metadata['start']) + # Test inheritable metadata. This has the course inheritable value for due. + self.assertEqual(2, len(child._inheritable_metadata)) + self.assertEqual(course_due, child._inheritable_metadata['due']) + def test_is_pointer_tag(self): """ Check that is_pointer_tag works properly. diff --git a/common/lib/xmodule/xmodule/tests/test_xml_module.py b/common/lib/xmodule/xmodule/tests/test_xml_module.py index 06d5b0b0a3..e41bcdd73a 100644 --- a/common/lib/xmodule/xmodule/tests/test_xml_module.py +++ b/common/lib/xmodule/xmodule/tests/test_xml_module.py @@ -9,13 +9,13 @@ from mock import Mock class TestFields(object): # Will be returned by editable_metadata_fields. - max_attempts = StringyInteger(scope=Scope.settings) + max_attempts = StringyInteger(scope=Scope.settings, default=1000) # Will not be returned by editable_metadata_fields because filtered out by non_editable_metadata_fields. due = Date(scope=Scope.settings) # Will not be returned by editable_metadata_fields because is not Scope.settings. student_answers = Object(scope=Scope.user_state) # Will be returned, and can override the inherited value from XModule. - display_name = String(scope=Scope.settings) + display_name = String(scope=Scope.settings, default='local default') class EditableMetadataFieldsTest(unittest.TestCase): @@ -25,27 +25,45 @@ class EditableMetadataFieldsTest(unittest.TestCase): # Tests that the xblock fields (currently tags and name) get filtered out. # Also tests that xml_attributes is filtered out of XmlDescriptor. self.assertEqual(1, len(editable_fields), "Expected only 1 editable field for xml descriptor.") - self.assert_display_name_default(editable_fields) + self.assert_field_values(editable_fields, 'display_name', XModuleFields.display_name, + explicitly_set=False, inheritable=False, value=None, default_value=None) def test_override_default(self): - # Tests that is_default is correct when a value overrides the default. + # Tests that explicitly_set is correct when a value overrides the default (not inheritable). editable_fields = self.get_xml_editable_fields({'display_name': 'foo'}) - display_name = editable_fields['display_name'] - self.assertFalse(display_name['is_default']) - self.assertEqual('foo', display_name['value']) + self.assert_field_values(editable_fields, 'display_name', XModuleFields.display_name, + explicitly_set=True, inheritable=False, value='foo', default_value=None) def test_additional_field(self): - editable_fields = self.get_module_editable_fields({'max_attempts' : '7'}) + descriptor = self.get_descriptor({'max_attempts' : '7'}) + editable_fields = descriptor.editable_metadata_fields self.assertEqual(2, len(editable_fields)) - self.assert_field_values(editable_fields, 'max_attempts', TestFields.max_attempts, False, False, 7) - self.assert_display_name_default(editable_fields) + self.assert_field_values(editable_fields, 'max_attempts', TestFields.max_attempts, + explicitly_set=True, inheritable=False, value=7, default_value=1000) + self.assert_field_values(editable_fields, 'display_name', XModuleFields.display_name, + explicitly_set=False, inheritable=False, value='local default', default_value='local default') - editable_fields = self.get_module_editable_fields({}) - self.assert_field_values(editable_fields, 'max_attempts', TestFields.max_attempts, True, False, None) + editable_fields = self.get_descriptor({}).editable_metadata_fields + self.assert_field_values(editable_fields, 'max_attempts', TestFields.max_attempts, + explicitly_set=False, inheritable=False, value=1000, default_value=1000) def test_inherited_field(self): - editable_fields = self.get_module_editable_fields({'display_name' : 'inherited'}) - self.assert_field_values(editable_fields, 'display_name', XModuleFields.display_name, False, True, 'inherited') + model_val = {'display_name' : 'inherited'} + descriptor = self.get_descriptor(model_val) + # Mimic an inherited value for display_name (inherited and inheritable are the same in this case). + descriptor._inherited_metadata = model_val + descriptor._inheritable_metadata = model_val + editable_fields = descriptor.editable_metadata_fields + self.assert_field_values(editable_fields, 'display_name', XModuleFields.display_name, + explicitly_set=False, inheritable=True, value='inherited', default_value='inherited') + + descriptor = self.get_descriptor({'display_name' : 'explicit'}) + # Mimic the case where display_name WOULD have been inherited, except we explicitly set it. + descriptor._inheritable_metadata = {'display_name' : 'inheritable value'} + descriptor._inherited_metadata = {} + editable_fields = descriptor.editable_metadata_fields + self.assert_field_values(editable_fields, 'display_name', XModuleFields.display_name, + explicitly_set=True, inheritable=True, value='explicit', default_value='inheritable value') # Start of helper methods def get_xml_editable_fields(self, model_data): @@ -53,7 +71,7 @@ class EditableMetadataFieldsTest(unittest.TestCase): system.render_template = Mock(return_value="
    Test Template HTML
    ") return XmlDescriptor(system=system, location=None, model_data=model_data).editable_metadata_fields - def get_module_editable_fields(self, model_data): + def get_descriptor(self, model_data): class TestModuleDescriptor(TestFields, XmlDescriptor): @property @@ -64,16 +82,12 @@ class EditableMetadataFieldsTest(unittest.TestCase): system = test_system() system.render_template = Mock(return_value="
    Test Template HTML
    ") - descriptor = TestModuleDescriptor(system=system, location=None, model_data=model_data) - descriptor._inherited_metadata = {'display_name' : 'inherited'} - return descriptor.editable_metadata_fields + return TestModuleDescriptor(system=system, location=None, model_data=model_data) - def assert_display_name_default(self, editable_fields): - self.assert_field_values(editable_fields, 'display_name', XModuleFields.display_name, True, False, None) - - def assert_field_values(self, editable_fields, name, field, is_default, is_inherited, value): + def assert_field_values(self, editable_fields, name, field, explicitly_set, inheritable, value, default_value): test_field = editable_fields[name] self.assertEqual(field, test_field['field']) - self.assertEqual(is_default, test_field['is_default']) - self.assertEqual(is_inherited, test_field['is_inherited']) + self.assertEqual(explicitly_set, test_field['explicitly_set']) + self.assertEqual(inheritable, test_field['inheritable']) self.assertEqual(value, test_field['value']) + self.assertEqual(default_value, test_field['default_value']) diff --git a/common/lib/xmodule/xmodule/x_module.py b/common/lib/xmodule/xmodule/x_module.py index 749ca66258..7c24d593e3 100644 --- a/common/lib/xmodule/xmodule/x_module.py +++ b/common/lib/xmodule/xmodule/x_module.py @@ -624,27 +624,28 @@ class XModuleDescriptor(XModuleFields, HTMLSnippet, ResourceTemplates, XBlock): Can be limited by extending `non_editable_metadata_fields`. """ inherited_metadata = getattr(self, '_inherited_metadata', {}) + inheritable_metadata = getattr(self, '_inheritable_metadata', {}) metadata = {} for field in self.fields: if field.scope != Scope.settings or field in self.non_editable_metadata_fields: continue - inherited = False - default = False + inheritable = False value = getattr(self, field.name) - if field.name in self._model_data: - default = False + default_value = field.default + explicitly_set = field.name in self._model_data + if field.name in inheritable_metadata: + inheritable = True + default_value = field.from_json(inheritable_metadata.get(field.name)) if field.name in inherited_metadata: - if self._model_data.get(field.name) == inherited_metadata.get(field.name): - inherited = True - else: - default = True + explicitly_set = False metadata[field.name] = {'field': field, 'value': value, - 'is_inherited': inherited, - 'is_default': default} + 'default_value': default_value, + 'inheritable': inheritable, + 'explicitly_set': explicitly_set } return metadata diff --git a/github-requirements.txt b/github-requirements.txt index 3b71d228e7..ca2669789a 100644 --- a/github-requirements.txt +++ b/github-requirements.txt @@ -7,4 +7,4 @@ -e git://github.com/dementrock/pystache_custom.git@776973740bdaad83a3b029f96e415a7d1e8bec2f#egg=pystache_custom-dev # Our libraries: --e git+https://github.com/edx/XBlock.git@5ce6f70a#egg=XBlock +-e git+https://github.com/edx/XBlock.git@483e0cb1#egg=XBlock From c2cd75469b94fb5eadf3b151036177dfc1173487 Mon Sep 17 00:00:00 2001 From: Jay Zoldak Date: Mon, 6 May 2013 16:48:37 -0400 Subject: [PATCH 75/94] Change the methodology to ignore .js files by default. Any .js files that are coded can be handled individually. --- common/lib/xmodule/xmodule/js/src/.gitignore | 2 +- common/lib/xmodule/xmodule/js/src/annotatable/.gitignore | 1 - common/lib/xmodule/xmodule/js/src/capa/.gitignore | 3 ++- common/lib/xmodule/xmodule/js/src/combinedopenended/.gitignore | 1 - common/lib/xmodule/xmodule/js/src/conditional/.gitignore | 1 - common/lib/xmodule/xmodule/js/src/discussion/.gitignore | 1 - .../xmodule/xmodule/js/src/graphical_slider_tool/.gitignore | 1 + common/lib/xmodule/xmodule/js/src/html/.gitignore | 1 - common/lib/xmodule/xmodule/js/src/peergrading/.gitignore | 1 - common/lib/xmodule/xmodule/js/src/poll/.gitignore | 1 + common/lib/xmodule/xmodule/js/src/problem/.gitignore | 1 - common/lib/xmodule/xmodule/js/src/raw/.gitignore | 1 - common/lib/xmodule/xmodule/js/src/sequence/.gitignore | 1 - common/lib/xmodule/xmodule/js/src/sequence/display/.gitignore | 1 + common/lib/xmodule/xmodule/js/src/vertical/.gitignore | 1 - common/lib/xmodule/xmodule/js/src/video/.gitignore | 2 -- common/lib/xmodule/xmodule/js/src/videoalpha/.gitignore | 2 -- .../lib/xmodule/xmodule/js/src/videoalpha/display/.gitignore | 1 + common/lib/xmodule/xmodule/js/src/wrapper/.gitignore | 1 - 19 files changed, 7 insertions(+), 17 deletions(-) delete mode 100644 common/lib/xmodule/xmodule/js/src/annotatable/.gitignore delete mode 100644 common/lib/xmodule/xmodule/js/src/combinedopenended/.gitignore delete mode 100644 common/lib/xmodule/xmodule/js/src/conditional/.gitignore delete mode 100644 common/lib/xmodule/xmodule/js/src/discussion/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/graphical_slider_tool/.gitignore delete mode 100644 common/lib/xmodule/xmodule/js/src/html/.gitignore delete mode 100644 common/lib/xmodule/xmodule/js/src/peergrading/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/poll/.gitignore delete mode 100644 common/lib/xmodule/xmodule/js/src/problem/.gitignore delete mode 100644 common/lib/xmodule/xmodule/js/src/raw/.gitignore delete mode 100644 common/lib/xmodule/xmodule/js/src/sequence/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/sequence/display/.gitignore delete mode 100644 common/lib/xmodule/xmodule/js/src/vertical/.gitignore delete mode 100644 common/lib/xmodule/xmodule/js/src/video/.gitignore delete mode 100644 common/lib/xmodule/xmodule/js/src/videoalpha/.gitignore create mode 100644 common/lib/xmodule/xmodule/js/src/videoalpha/display/.gitignore delete mode 100644 common/lib/xmodule/xmodule/js/src/wrapper/.gitignore diff --git a/common/lib/xmodule/xmodule/js/src/.gitignore b/common/lib/xmodule/xmodule/js/src/.gitignore index c2d956ce35..456e71bf8b 100644 --- a/common/lib/xmodule/xmodule/js/src/.gitignore +++ b/common/lib/xmodule/xmodule/js/src/.gitignore @@ -1,4 +1,4 @@ # Ignore .js files in this folder as they are compiled from coffeescript # For each of the xmodules subdirectories, add a .gitignore file that -# will cover any .coffee -> .js files that get compiled. +# will version any *.js file that is specifically written, not compiled. *.js diff --git a/common/lib/xmodule/xmodule/js/src/annotatable/.gitignore b/common/lib/xmodule/xmodule/js/src/annotatable/.gitignore deleted file mode 100644 index a6c7c2852d..0000000000 --- a/common/lib/xmodule/xmodule/js/src/annotatable/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.js diff --git a/common/lib/xmodule/xmodule/js/src/capa/.gitignore b/common/lib/xmodule/xmodule/js/src/capa/.gitignore index 77fdb1cbe9..13b8deb002 100644 --- a/common/lib/xmodule/xmodule/js/src/capa/.gitignore +++ b/common/lib/xmodule/xmodule/js/src/capa/.gitignore @@ -1 +1,2 @@ -display.js +!imageinput.js +!schematic.js diff --git a/common/lib/xmodule/xmodule/js/src/combinedopenended/.gitignore b/common/lib/xmodule/xmodule/js/src/combinedopenended/.gitignore deleted file mode 100644 index a6c7c2852d..0000000000 --- a/common/lib/xmodule/xmodule/js/src/combinedopenended/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.js diff --git a/common/lib/xmodule/xmodule/js/src/conditional/.gitignore b/common/lib/xmodule/xmodule/js/src/conditional/.gitignore deleted file mode 100644 index a6c7c2852d..0000000000 --- a/common/lib/xmodule/xmodule/js/src/conditional/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.js diff --git a/common/lib/xmodule/xmodule/js/src/discussion/.gitignore b/common/lib/xmodule/xmodule/js/src/discussion/.gitignore deleted file mode 100644 index a6c7c2852d..0000000000 --- a/common/lib/xmodule/xmodule/js/src/discussion/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.js diff --git a/common/lib/xmodule/xmodule/js/src/graphical_slider_tool/.gitignore b/common/lib/xmodule/xmodule/js/src/graphical_slider_tool/.gitignore new file mode 100644 index 0000000000..d4aa116a26 --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/graphical_slider_tool/.gitignore @@ -0,0 +1 @@ +!*.js diff --git a/common/lib/xmodule/xmodule/js/src/html/.gitignore b/common/lib/xmodule/xmodule/js/src/html/.gitignore deleted file mode 100644 index a6c7c2852d..0000000000 --- a/common/lib/xmodule/xmodule/js/src/html/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.js diff --git a/common/lib/xmodule/xmodule/js/src/peergrading/.gitignore b/common/lib/xmodule/xmodule/js/src/peergrading/.gitignore deleted file mode 100644 index a6c7c2852d..0000000000 --- a/common/lib/xmodule/xmodule/js/src/peergrading/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.js diff --git a/common/lib/xmodule/xmodule/js/src/poll/.gitignore b/common/lib/xmodule/xmodule/js/src/poll/.gitignore new file mode 100644 index 0000000000..d4aa116a26 --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/poll/.gitignore @@ -0,0 +1 @@ +!*.js diff --git a/common/lib/xmodule/xmodule/js/src/problem/.gitignore b/common/lib/xmodule/xmodule/js/src/problem/.gitignore deleted file mode 100644 index a6c7c2852d..0000000000 --- a/common/lib/xmodule/xmodule/js/src/problem/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.js diff --git a/common/lib/xmodule/xmodule/js/src/raw/.gitignore b/common/lib/xmodule/xmodule/js/src/raw/.gitignore deleted file mode 100644 index 7cc629ca26..0000000000 --- a/common/lib/xmodule/xmodule/js/src/raw/.gitignore +++ /dev/null @@ -1 +0,0 @@ -edit/*.js diff --git a/common/lib/xmodule/xmodule/js/src/sequence/.gitignore b/common/lib/xmodule/xmodule/js/src/sequence/.gitignore deleted file mode 100644 index a6c7c2852d..0000000000 --- a/common/lib/xmodule/xmodule/js/src/sequence/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.js diff --git a/common/lib/xmodule/xmodule/js/src/sequence/display/.gitignore b/common/lib/xmodule/xmodule/js/src/sequence/display/.gitignore new file mode 100644 index 0000000000..d4aa116a26 --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/sequence/display/.gitignore @@ -0,0 +1 @@ +!*.js diff --git a/common/lib/xmodule/xmodule/js/src/vertical/.gitignore b/common/lib/xmodule/xmodule/js/src/vertical/.gitignore deleted file mode 100644 index a6c7c2852d..0000000000 --- a/common/lib/xmodule/xmodule/js/src/vertical/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.js diff --git a/common/lib/xmodule/xmodule/js/src/video/.gitignore b/common/lib/xmodule/xmodule/js/src/video/.gitignore deleted file mode 100644 index 39c7b67ac1..0000000000 --- a/common/lib/xmodule/xmodule/js/src/video/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.js -display/*.js diff --git a/common/lib/xmodule/xmodule/js/src/videoalpha/.gitignore b/common/lib/xmodule/xmodule/js/src/videoalpha/.gitignore deleted file mode 100644 index 39c7b67ac1..0000000000 --- a/common/lib/xmodule/xmodule/js/src/videoalpha/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.js -display/*.js diff --git a/common/lib/xmodule/xmodule/js/src/videoalpha/display/.gitignore b/common/lib/xmodule/xmodule/js/src/videoalpha/display/.gitignore new file mode 100644 index 0000000000..c7a88ce092 --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/videoalpha/display/.gitignore @@ -0,0 +1 @@ +!html5_video.js diff --git a/common/lib/xmodule/xmodule/js/src/wrapper/.gitignore b/common/lib/xmodule/xmodule/js/src/wrapper/.gitignore deleted file mode 100644 index a6c7c2852d..0000000000 --- a/common/lib/xmodule/xmodule/js/src/wrapper/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.js From 1b0b365fa6816b32b3f625709bcb21b8a5f6235f Mon Sep 17 00:00:00 2001 From: Will Daly Date: Mon, 6 May 2013 17:08:46 -0400 Subject: [PATCH 76/94] Added unit tests for safe_key() to resolve bug 392. Updated safe_key() so that it: (a) avoids creating keys that are too long for memcache, and (b) handles unicode in keys, prefixes, and versions Added __init__.py, which should have been in the last commit Pep8/Pylint fixes --- common/djangoapps/util/memcache.py | 43 +++++-- common/djangoapps/util/tests/__init__.py | 1 + common/djangoapps/util/tests/test_memcache.py | 114 ++++++++++++++++++ .../util/{tests.py => tests/test_zendesk.py} | 2 +- 4 files changed, 152 insertions(+), 8 deletions(-) create mode 100644 common/djangoapps/util/tests/__init__.py create mode 100644 common/djangoapps/util/tests/test_memcache.py rename common/djangoapps/util/{tests.py => tests/test_zendesk.py} (99%) diff --git a/common/djangoapps/util/memcache.py b/common/djangoapps/util/memcache.py index 540cf96539..db921d9845 100644 --- a/common/djangoapps/util/memcache.py +++ b/common/djangoapps/util/memcache.py @@ -8,15 +8,44 @@ import urllib def fasthash(string): - m = hashlib.new("md4") - m.update(string) - return m.hexdigest() + """ + Hashes `string` into a string representation of a 128-bit digest. + """ + md4 = hashlib.new("md4") + md4.update(string) + return md4.hexdigest() + + +def cleaned_string(val): + """ + Converts `val` to unicode and URL-encodes special characters + (including quotes and spaces) + """ + return urllib.quote_plus(smart_str(val)) def safe_key(key, key_prefix, version): - safe_key = urllib.quote_plus(smart_str(key)) + """ + Given a `key`, `key_prefix`, and `version`, + return a key that is safe to use with memcache. - if len(safe_key) > 250: - safe_key = fasthash(safe_key) + `key`, `key_prefix`, and `version` can be numbers, strings, or unicode. + """ - return ":".join([key_prefix, str(version), safe_key]) + # Clean for whitespace and control characters, which + # cause memcache to raise an exception + key = cleaned_string(key) + key_prefix = cleaned_string(key_prefix) + version = cleaned_string(version) + + # Attempt to combine the prefix, version, and key + combined = ":".join([key_prefix, version, key]) + + # If the total length is too long for memcache, hash the key + # and combine the parts again + if len(combined) > 250: + key = fasthash(key) + combined = ":".join([key_prefix, version, key]) + + # Return the result + return combined diff --git a/common/djangoapps/util/tests/__init__.py b/common/djangoapps/util/tests/__init__.py new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/common/djangoapps/util/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/common/djangoapps/util/tests/test_memcache.py b/common/djangoapps/util/tests/test_memcache.py new file mode 100644 index 0000000000..85b60c75f1 --- /dev/null +++ b/common/djangoapps/util/tests/test_memcache.py @@ -0,0 +1,114 @@ +""" +Tests for memcache in util app +""" + +from django.test import TestCase +from django.core.cache import get_cache +from util.memcache import safe_key + + +class MemcacheTest(TestCase): + """ + Test memcache key cleanup + """ + + # Test whitespace, control characters, and some non-ASCII UTF-16 + UNICODE_CHAR_CODES = ([c for c in range(0, 30)] + [127] + + [129, 500, 2 ** 8 - 1, 2 ** 8 + 1, 2 ** 16 - 1]) + + def setUp(self): + self.cache = get_cache('default') + + def test_safe_key(self): + key = safe_key('test', 'prefix', 'version') + self.assertEqual(key, 'prefix:version:test') + + def test_numeric_inputs(self): + + # Numeric key + self.assertEqual(safe_key(1, 'prefix', 'version'), 'prefix:version:1') + + # Numeric prefix + self.assertEqual(safe_key('test', 5, 'version'), '5:version:test') + + # Numeric version + self.assertEqual(safe_key('test', 'prefix', 5), 'prefix:5:test') + + def test_safe_key_long(self): + + # Choose lengths close to memcached's cutoff (250) + for length in [248, 249, 250, 251, 252]: + + # Generate a key of that length + key = 'a' * length + + # Make the key safe + key = safe_key(key, '', '') + + # The key should now be valid + self.assertTrue(self._is_valid_key(key), + msg="Failed for key length {0}".format(length)) + + def test_long_key_prefix_version(self): + + key = safe_key('a' * 300, 'prefix', 'version') + self.assertEqual(key[0:15], 'prefix:version:') + + def test_safe_key_unicode(self): + + for unicode_char in self.UNICODE_CHAR_CODES: + + # Generate a key with that character + key = unichr(unicode_char) + + # Make the key safe + key = safe_key(key, '', '') + + # The key should now be valid + self.assertTrue(self._is_valid_key(key), + msg="Failed for unicode character {0}".format(unicode_char)) + + def test_safe_key_prefix_unicode(self): + + for unicode_char in self.UNICODE_CHAR_CODES: + + # Generate a prefix with that character + prefix = unichr(unicode_char) + + # Make the key safe + key = safe_key('test', prefix, '') + + # The key should now be valid + self.assertTrue(self._is_valid_key(key), + msg="Failed for unicode character {0}".format(unicode_char)) + + def test_safe_key_version_unicode(self): + + for unicode_char in self.UNICODE_CHAR_CODES: + + # Generate a version with that character + version = unichr(unicode_char) + + # Make the key safe + key = safe_key('test', '', version) + + # The key should now be valid + self.assertTrue(self._is_valid_key(key), + msg="Failed for unicode character {0}".format(unicode_char)) + + def _is_valid_key(self, key): + """ + Test that a key is memcache-compatible. + Based on Django's validator in core.cache.backends.base + """ + + # Check the length + if len(key) > 250: + return False + + # Check that there are no spaces or control characters + for char in key: + if ord(char) < 33 or ord(char) == 127: + return False + + return True diff --git a/common/djangoapps/util/tests.py b/common/djangoapps/util/tests/test_zendesk.py similarity index 99% rename from common/djangoapps/util/tests.py rename to common/djangoapps/util/tests/test_zendesk.py index d829676eaf..51d06a92ed 100644 --- a/common/djangoapps/util/tests.py +++ b/common/djangoapps/util/tests/test_zendesk.py @@ -1,4 +1,4 @@ -"""Tests for the util package""" +"""Tests for the Zendesk""" from django.conf import settings from django.contrib.auth.models import AnonymousUser From 258aebed2031280c83dc065dd73224eae75a4248 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 7 May 2013 12:58:49 -0400 Subject: [PATCH 77/94] Fix anonymoususer 500 error --- .../open_ended_grading/open_ended_notifications.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lms/djangoapps/open_ended_grading/open_ended_notifications.py b/lms/djangoapps/open_ended_grading/open_ended_notifications.py index 6d5f2a3eb4..0f97ea2a85 100644 --- a/lms/djangoapps/open_ended_grading/open_ended_notifications.py +++ b/lms/djangoapps/open_ended_grading/open_ended_notifications.py @@ -11,6 +11,7 @@ from util.cache import cache import datetime from xmodule.x_module import ModuleSystem from mitxmako.shortcuts import render_to_string +import datetime log = logging.getLogger(__name__) @@ -121,17 +122,20 @@ def combined_notifications(course, user): success, notification_dict = get_value_from_cache(student_id, course_id, notification_type) if success: return notification_dict + if user.is_authenticated(): + last_login = user.last_login + else: + last_login = datetime.datetime.now() - min_time_to_query = user.last_login last_module_seen = StudentModule.objects.filter(student=user, course_id=course_id, - modified__gt=min_time_to_query).values('modified').order_by( + modified__gt=last_login).values('modified').order_by( '-modified') last_module_seen_count = last_module_seen.count() if last_module_seen_count > 0: last_time_viewed = last_module_seen[0]['modified'] - datetime.timedelta(seconds=(NOTIFICATION_CACHE_TIME + 60)) else: - last_time_viewed = user.last_login + last_time_viewed = last_login pending_grading = False From 2dde742f383359a8da88f22538d405b5b986eaf7 Mon Sep 17 00:00:00 2001 From: Giulio Gratta Date: Thu, 2 May 2013 10:45:26 -0700 Subject: [PATCH 78/94] made login form labels and close modal button accessible friendly --- lms/static/sass/shared/_modal.scss | 2 +- lms/templates/login_modal.html | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/lms/static/sass/shared/_modal.scss b/lms/static/sass/shared/_modal.scss index bfa803fee2..2bd0dd18c8 100644 --- a/lms/static/sass/shared/_modal.scss +++ b/lms/static/sass/shared/_modal.scss @@ -149,7 +149,7 @@ } label { - color: #999; + color: #646464; &.field-error { display: block; diff --git a/lms/templates/login_modal.html b/lms/templates/login_modal.html index 1587cca767..4bd887a248 100644 --- a/lms/templates/login_modal.html +++ b/lms/templates/login_modal.html @@ -9,14 +9,17 @@
  • + data-element="${idx+1}" + href="javascript:void(0);">

    ${item['title']}

  • From f7719a60c791d01c5c82e42ac591475c5b92f005 Mon Sep 17 00:00:00 2001 From: Giulio Gratta Date: Tue, 7 May 2013 11:20:47 -0700 Subject: [PATCH 82/94] changed offending javascript:void() hrefs on anchors to preventDefault() --- lms/templates/forgot_password_modal.html | 2 +- lms/templates/login_modal.html | 2 +- lms/templates/signup_modal.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lms/templates/forgot_password_modal.html b/lms/templates/forgot_password_modal.html index cf4fe77bee..70467d2dd0 100644 --- a/lms/templates/forgot_password_modal.html +++ b/lms/templates/forgot_password_modal.html @@ -20,7 +20,7 @@ - +

    diff --git a/lms/templates/login_modal.html b/lms/templates/login_modal.html index b6e3c47e00..4c190bf024 100644 --- a/lms/templates/login_modal.html +++ b/lms/templates/login_modal.html @@ -37,7 +37,7 @@ % endif -
    +

    diff --git a/lms/templates/signup_modal.html b/lms/templates/signup_modal.html index daab1d04ef..fd3b0bb902 100644 --- a/lms/templates/signup_modal.html +++ b/lms/templates/signup_modal.html @@ -115,7 +115,7 @@ -
    +

    From 9e03280f5065124fd2b8edcc8ecb835f80f82e0c Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 7 May 2013 15:33:15 -0400 Subject: [PATCH 83/94] Make peer grading fields stringy and fix js to avoid strange error --- .../js/src/peergrading/peer_grading.coffee | 23 ++++++++++--------- .../peergrading/peer_grading_problem.coffee | 1 - .../xmodule/xmodule/peer_grading_module.py | 12 +++++----- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading.coffee b/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading.coffee index 45c678bad9..2ce7a09b92 100644 --- a/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading.coffee +++ b/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading.coffee @@ -8,20 +8,21 @@ class @PeerGrading @use_single_location = @peer_grading_container.data('use-single-location') @peer_grading_outer_container = $('.peer-grading-container') @ajax_url = @peer_grading_container.data('ajax-url') - @error_container = $('.error-container') - @error_container.toggle(not @error_container.is(':empty')) - - @message_container = $('.message-container') - @message_container.toggle(not @message_container.is(':empty')) - - @problem_button = $('.problem-button') - @problem_button.click @show_results - - @problem_list = $('.problem-list') - @construct_progress_bar() if @use_single_location @activate_problem() + else + @error_container = $('.error-container') + @error_container.toggle(not @error_container.is(':empty')) + + @message_container = $('.message-container') + @message_container.toggle(not @message_container.is(':empty')) + + @problem_button = $('.problem-button') + @problem_button.click @show_results + + @problem_list = $('.problem-list') + @construct_progress_bar() construct_progress_bar: () => problems = @problem_list.find('tr').next() diff --git a/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading_problem.coffee b/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading_problem.coffee index 9483932f80..001ef93001 100644 --- a/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading_problem.coffee +++ b/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading_problem.coffee @@ -27,7 +27,6 @@ class @PeerGradingProblemBackend else # if this post request fails, the error callback will catch it $.post(@ajax_url + cmd, data, callback) - .error => callback({success: false, error: "Error occured while performing this operation"}) mock: (cmd, data) -> if cmd == 'is_student_calibrated' diff --git a/common/lib/xmodule/xmodule/peer_grading_module.py b/common/lib/xmodule/xmodule/peer_grading_module.py index 35f2fa2d76..cf10e7c87c 100644 --- a/common/lib/xmodule/xmodule/peer_grading_module.py +++ b/common/lib/xmodule/xmodule/peer_grading_module.py @@ -11,7 +11,7 @@ from xmodule.raw_module import RawDescriptor from xmodule.modulestore.django import modulestore from .timeinfo import TimeInfo from xblock.core import Object, Integer, Boolean, String, Scope -from xmodule.fields import Date, StringyFloat +from xmodule.fields import Date, StringyFloat, StringyInteger, StringyBoolean from xmodule.open_ended_grading_classes.peer_grading_service import PeerGradingService, GradingServiceError, MockPeerGradingService from open_ended_grading_classes import combined_open_ended_rubric @@ -28,14 +28,14 @@ EXTERNAL_GRADER_NO_CONTACT_ERROR = "Failed to contact external graders. Please class PeerGradingFields(object): - use_for_single_location = Boolean(help="Whether to use this for a single location or as a panel.", + use_for_single_location = StringyBoolean(help="Whether to use this for a single location or as a panel.", default=USE_FOR_SINGLE_LOCATION, scope=Scope.settings) link_to_location = String(help="The location this problem is linked to.", default=LINK_TO_LOCATION, scope=Scope.settings) - is_graded = Boolean(help="Whether or not this module is scored.", default=IS_GRADED, scope=Scope.settings) + is_graded = StringyBoolean(help="Whether or not this module is scored.", default=IS_GRADED, scope=Scope.settings) due_date = Date(help="Due date that should be displayed.", default=None, scope=Scope.settings) grace_period_string = String(help="Amount of grace to give on the due date.", default=None, scope=Scope.settings) - max_grade = Integer(help="The maximum grade that a student can receieve for this problem.", default=MAX_SCORE, + max_grade = StringyInteger(help="The maximum grade that a student can receieve for this problem.", default=MAX_SCORE, scope=Scope.settings) student_data_for_location = Object(help="Student data for a given peer grading problem.", scope=Scope.user_state) @@ -93,9 +93,9 @@ class PeerGradingModule(PeerGradingFields, XModule): if not self.ajax_url.endswith("/"): self.ajax_url = self.ajax_url + "/" - if not isinstance(self.max_grade, (int, long)): + if not isinstance(self.max_grade, int): #This could result in an exception, but not wrapping in a try catch block so it moves up the stack - self.max_grade = int(self.max_grade) + raise TypeError("max_grade needs to be an integer.") def closed(self): return self._closed(self.timeinfo) From 1398b55713433adc0baca4bb5e957e1fe51602ee Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 7 May 2013 15:48:19 -0400 Subject: [PATCH 84/94] Comment touched modules --- .../js/src/peergrading/peer_grading.coffee | 2 + .../xmodule/xmodule/peer_grading_module.py | 2 +- .../open_ended_notifications.py | 40 ++++++++++++++----- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading.coffee b/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading.coffee index 2ce7a09b92..676cc75d11 100644 --- a/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading.coffee +++ b/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading.coffee @@ -10,8 +10,10 @@ class @PeerGrading @ajax_url = @peer_grading_container.data('ajax-url') if @use_single_location + #If the peer grading element is linked to a single location, then activate the backend for that location @activate_problem() else + #Otherwise, activate the panel view. @error_container = $('.error-container') @error_container.toggle(not @error_container.is(':empty')) diff --git a/common/lib/xmodule/xmodule/peer_grading_module.py b/common/lib/xmodule/xmodule/peer_grading_module.py index cf10e7c87c..bb14eec8b5 100644 --- a/common/lib/xmodule/xmodule/peer_grading_module.py +++ b/common/lib/xmodule/xmodule/peer_grading_module.py @@ -93,8 +93,8 @@ class PeerGradingModule(PeerGradingFields, XModule): if not self.ajax_url.endswith("/"): self.ajax_url = self.ajax_url + "/" + #This could result in an exception, but not wrapping in a try catch block so it moves up the stack if not isinstance(self.max_grade, int): - #This could result in an exception, but not wrapping in a try catch block so it moves up the stack raise TypeError("max_grade needs to be an integer.") def closed(self): diff --git a/lms/djangoapps/open_ended_grading/open_ended_notifications.py b/lms/djangoapps/open_ended_grading/open_ended_notifications.py index 0f97ea2a85..1d6fa22929 100644 --- a/lms/djangoapps/open_ended_grading/open_ended_notifications.py +++ b/lms/djangoapps/open_ended_grading/open_ended_notifications.py @@ -105,6 +105,25 @@ def peer_grading_notifications(course, user): def combined_notifications(course, user): + """ + Show notifications to a given user for a given course. Get notifications from the cache if possible, + or from the grading controller server if not. + @param course: The course object for which we are getting notifications + @param user: The user object for which we are getting notifications + @return: A dictionary with boolean pending_grading (true if there is pending grading), img_path (for notification + image), and response (actual response from grading controller server). + """ + #Set up return values so that we can return them for error cases + pending_grading = False + img_path = "" + notifications={} + notification_dict = {'pending_grading': pending_grading, 'img_path': img_path, 'response': notifications} + + #We don't want to show anonymous users anything. + if not user.is_authenticated(): + return notification_dict + + #Define a mock modulesystem system = ModuleSystem( ajax_url=None, track_function=None, @@ -113,44 +132,44 @@ def combined_notifications(course, user): replace_urls=None, xblock_model_data= {} ) + #Initialize controller query service using our mock system controller_qs = ControllerQueryService(settings.OPEN_ENDED_GRADING_INTERFACE, system) student_id = unique_id_for_user(user) user_is_staff = has_access(user, course, 'staff') course_id = course.id notification_type = "combined" + #See if we have a stored value in the cache success, notification_dict = get_value_from_cache(student_id, course_id, notification_type) if success: return notification_dict - if user.is_authenticated(): - last_login = user.last_login - else: - last_login = datetime.datetime.now() + #Get the time of the last login of the user + last_login = user.last_login + + #Find the modules they have seen since they logged in last_module_seen = StudentModule.objects.filter(student=user, course_id=course_id, modified__gt=last_login).values('modified').order_by( '-modified') last_module_seen_count = last_module_seen.count() if last_module_seen_count > 0: + #The last time they viewed an updated notification (last module seen minus how long notifications are cached) last_time_viewed = last_module_seen[0]['modified'] - datetime.timedelta(seconds=(NOTIFICATION_CACHE_TIME + 60)) else: - last_time_viewed = last_login + #If they have not seen any modules since they logged in, then don't refresh + return {'pending_grading': False, 'img_path': img_path, 'response': notifications} - pending_grading = False - - img_path = "" try: + #Get the notifications from the grading controller controller_response = controller_qs.check_combined_notifications(course.id, student_id, user_is_staff, last_time_viewed) - log.debug(controller_response) notifications = json.loads(controller_response) if notifications['success']: if notifications['overall_need_to_check']: pending_grading = True except: #Non catastrophic error, so no real action - notifications = {} #This is a dev_facing_error log.exception( "Problem with getting notifications from controller query service for course {0} user {1}.".format( @@ -161,6 +180,7 @@ def combined_notifications(course, user): notification_dict = {'pending_grading': pending_grading, 'img_path': img_path, 'response': notifications} + #Store the notifications in the cache set_value_in_cache(student_id, course_id, notification_type, notification_dict) return notification_dict From aaa383b8ca714b0f84db959339fe9a1496e76d78 Mon Sep 17 00:00:00 2001 From: Will Daly Date: Tue, 7 May 2013 15:48:51 -0400 Subject: [PATCH 85/94] safe_key() now hashes the prefix/version as well, just in case these are configured to be too long in the settings. --- common/djangoapps/util/memcache.py | 6 ++---- common/djangoapps/util/tests/test_memcache.py | 12 +++++++++++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/common/djangoapps/util/memcache.py b/common/djangoapps/util/memcache.py index db921d9845..ee450e68cb 100644 --- a/common/djangoapps/util/memcache.py +++ b/common/djangoapps/util/memcache.py @@ -41,11 +41,9 @@ def safe_key(key, key_prefix, version): # Attempt to combine the prefix, version, and key combined = ":".join([key_prefix, version, key]) - # If the total length is too long for memcache, hash the key - # and combine the parts again + # If the total length is too long for memcache, hash it if len(combined) > 250: - key = fasthash(key) - combined = ":".join([key_prefix, version, key]) + combined = fasthash(combined) # Return the result return combined diff --git a/common/djangoapps/util/tests/test_memcache.py b/common/djangoapps/util/tests/test_memcache.py index 85b60c75f1..de8d352c38 100644 --- a/common/djangoapps/util/tests/test_memcache.py +++ b/common/djangoapps/util/tests/test_memcache.py @@ -4,6 +4,7 @@ Tests for memcache in util app from django.test import TestCase from django.core.cache import get_cache +from django.conf import settings from util.memcache import safe_key @@ -51,8 +52,17 @@ class MemcacheTest(TestCase): def test_long_key_prefix_version(self): + # Long key key = safe_key('a' * 300, 'prefix', 'version') - self.assertEqual(key[0:15], 'prefix:version:') + self.assertTrue(self._is_valid_key(key)) + + # Long prefix + key = safe_key('key', 'a' * 300, 'version') + self.assertTrue(self._is_valid_key(key)) + + # Long version + key = safe_key('key', 'prefix', 'a' * 300) + self.assertTrue(self._is_valid_key(key)) def test_safe_key_unicode(self): From 91e2a39ec70dfb0775c5f4f43d59b78b6454281a Mon Sep 17 00:00:00 2001 From: Giulio Gratta Date: Tue, 7 May 2013 12:50:59 -0700 Subject: [PATCH 86/94] moving preventDefault() statements to the local script tag --- lms/templates/forgot_password_modal.html | 7 ++++++- lms/templates/login_modal.html | 7 ++++++- lms/templates/signup_modal.html | 7 ++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/lms/templates/forgot_password_modal.html b/lms/templates/forgot_password_modal.html index 70467d2dd0..f0f571a817 100644 --- a/lms/templates/forgot_password_modal.html +++ b/lms/templates/forgot_password_modal.html @@ -20,7 +20,7 @@ -
    +

    @@ -40,5 +40,10 @@ $('#pwd_error').stop().css("display", "block"); } }); + + // removing close link's default behavior + $('#login-modal .close-modal').click(function(e) { + e.preventDefault(); + }); })(this) diff --git a/lms/templates/login_modal.html b/lms/templates/login_modal.html index 4c190bf024..de1c437caf 100644 --- a/lms/templates/login_modal.html +++ b/lms/templates/login_modal.html @@ -37,7 +37,7 @@ % endif -
    +

    @@ -62,5 +62,10 @@ $('#login_error').html(json.value).stop().css("display", "block"); } }); + + // removing close link's default behavior + $('#login-modal .close-modal').click(function(e) { + e.preventDefault(); + }); })(this) diff --git a/lms/templates/signup_modal.html b/lms/templates/signup_modal.html index fd3b0bb902..a68e36e902 100644 --- a/lms/templates/signup_modal.html +++ b/lms/templates/signup_modal.html @@ -115,7 +115,7 @@ -
    +

    @@ -134,5 +134,10 @@ $("[data-field='"+json.field+"']").addClass('field-error') } }); + + // removing close link's default behavior + $('#login-modal .close-modal').click(function(e) { + e.preventDefault(); + }); })(this) From c6f63140a27a517846ce34a9ceb3cf4a5f052203 Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Tue, 7 May 2013 11:42:39 -0400 Subject: [PATCH 87/94] Hide the API key during logging. --- lms/lib/comment_client/utils.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lms/lib/comment_client/utils.py b/lms/lib/comment_client/utils.py index 860035dc06..53bdd462ad 100644 --- a/lms/lib/comment_client/utils.py +++ b/lms/lib/comment_client/utils.py @@ -37,6 +37,10 @@ def perform_request(method, url, data_or_params=None, *args, **kwargs): else: response = requests.request(method, url, params=data_or_params, timeout=5) except Exception as err: + # remove API key if it is in the params + if 'api_key' in data_or_params: + log.info('Deleting API key from params') + del data_or_params['api_key'] log.exception("Trying to call {method} on {url} with params {params}".format( method=method, url=url, params=data_or_params)) # Reraise with a single exception type From e0d1eca6aa387196531300a9c96bcb11ed80e895 Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 7 May 2013 16:56:08 -0400 Subject: [PATCH 88/94] Delete two lines. without this, the xblock fields are never created in cases where the module is "fresh" (ie has no existing data) --- common/lib/xmodule/xmodule/combined_open_ended_module.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/common/lib/xmodule/xmodule/combined_open_ended_module.py b/common/lib/xmodule/xmodule/combined_open_ended_module.py index 239adcaa41..67ff206e89 100644 --- a/common/lib/xmodule/xmodule/combined_open_ended_module.py +++ b/common/lib/xmodule/xmodule/combined_open_ended_module.py @@ -203,9 +203,7 @@ class CombinedOpenEndedModule(CombinedOpenEndedFields, XModule): def save_instance_data(self): for attribute in self.student_attributes: - child_attr = getattr(self.child_module, attribute) - if child_attr != getattr(self, attribute): - setattr(self, attribute, getattr(self.child_module, attribute)) + setattr(self, attribute, getattr(self.child_module, attribute)) class CombinedOpenEndedDescriptor(CombinedOpenEndedFields, RawDescriptor): From 2648a19cc2b6c9e7449c583575539d31c2aba04e Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 7 May 2013 17:08:14 -0400 Subject: [PATCH 89/94] Fix check for use for single location --- .../lib/xmodule/xmodule/js/src/peergrading/peer_grading.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading.coffee b/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading.coffee index 676cc75d11..48980c7d88 100644 --- a/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading.coffee +++ b/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading.coffee @@ -9,7 +9,7 @@ class @PeerGrading @peer_grading_outer_container = $('.peer-grading-container') @ajax_url = @peer_grading_container.data('ajax-url') - if @use_single_location + if @use_single_location.toLowerCase() == "true" #If the peer grading element is linked to a single location, then activate the backend for that location @activate_problem() else From 530ac51c1c2c7fcd784e1c7bfac844feae296f3f Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 7 May 2013 17:33:34 -0400 Subject: [PATCH 90/94] Add .error callback back in --- .../xmodule/js/src/peergrading/peer_grading_problem.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading_problem.coffee b/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading_problem.coffee index 001ef93001..9483932f80 100644 --- a/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading_problem.coffee +++ b/common/lib/xmodule/xmodule/js/src/peergrading/peer_grading_problem.coffee @@ -27,6 +27,7 @@ class @PeerGradingProblemBackend else # if this post request fails, the error callback will catch it $.post(@ajax_url + cmd, data, callback) + .error => callback({success: false, error: "Error occured while performing this operation"}) mock: (cmd, data) -> if cmd == 'is_student_calibrated' From 5cd9641f24ef49e1084b78db3d59cca2370f296a Mon Sep 17 00:00:00 2001 From: Vik Paruchuri Date: Tue, 7 May 2013 17:35:00 -0400 Subject: [PATCH 91/94] Update peer grading comment --- common/lib/xmodule/xmodule/peer_grading_module.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/lib/xmodule/xmodule/peer_grading_module.py b/common/lib/xmodule/xmodule/peer_grading_module.py index bb14eec8b5..1ad31922f5 100644 --- a/common/lib/xmodule/xmodule/peer_grading_module.py +++ b/common/lib/xmodule/xmodule/peer_grading_module.py @@ -93,7 +93,7 @@ class PeerGradingModule(PeerGradingFields, XModule): if not self.ajax_url.endswith("/"): self.ajax_url = self.ajax_url + "/" - #This could result in an exception, but not wrapping in a try catch block so it moves up the stack + #StringyInteger could return None, so keep this check. if not isinstance(self.max_grade, int): raise TypeError("max_grade needs to be an integer.") From 25dd2c7d678574ed1c2b41b998b2e41b8bb8d820 Mon Sep 17 00:00:00 2001 From: Brian Talbot Date: Wed, 8 May 2013 15:30:17 -0400 Subject: [PATCH 92/94] studio - alerts: synced up example HTML to show advanced settings live notification, aria roles, and action classes; integrated typography mixins --- cms/static/sass/elements/_alerts.scss | 24 ++--- cms/static/sass/elements/_typography.scss | 6 +- cms/templates/ux-alerts.html | 111 +++++++++++++++++++--- 3 files changed, 114 insertions(+), 27 deletions(-) diff --git a/cms/static/sass/elements/_alerts.scss b/cms/static/sass/elements/_alerts.scss index 49aa015313..1e8b79b3fe 100644 --- a/cms/static/sass/elements/_alerts.scss +++ b/cms/static/sass/elements/_alerts.scss @@ -6,7 +6,7 @@ @include box-sizing(border-box); .copy { - @include font-size(13); + @extend .t-copy-sub2; } } @@ -184,12 +184,12 @@ } .action-primary { - @include font-size(13); + @extend .t-action3; font-weight: 600; } .action-secondary { - @include font-size(13); + @extend .t-action3; } } } @@ -367,12 +367,12 @@ } .copy { - @include font-size(13); + @extend .t-copy-sub2; width: flex-grid(10, 12); color: $gray-l2; .title { - @include font-size(14); + @extend .t-title-4; margin-bottom: 0; color: $white; } @@ -409,13 +409,13 @@ .action-primary { @include blue-button(); - @include font-size(13); + @extend .t-action3; border-color: $blue-d2; font-weight: 600; } .action-secondary { - @include font-size(13); + @extend .t-action3; } } @@ -504,7 +504,7 @@ // adopted alerts .alert { - @include font-size(14); + @extend .t-copy-sub2; @include box-sizing(border-box); @include clearfix(); margin: 0 auto; @@ -530,7 +530,7 @@ } .copy { - @include font-size(13); + @extend .t-copy-sub2; width: flex-grid(10, 12); color: $gray-l2; @@ -568,12 +568,12 @@ } .action-primary { - @include font-size(13); + @extend .t-action3; font-weight: 600; } .action-secondary { - @include font-size(13); + @extend .t-action3; } } } @@ -730,7 +730,7 @@ body.uxdesign.alerts { border-radius: 3px; background: #fbf6e1; // background: #edbd3c; - font-size: 14px; + @extend .t-copy-sub1; @include clearfix; .alert-message { diff --git a/cms/static/sass/elements/_typography.scss b/cms/static/sass/elements/_typography.scss index 32c4b3928b..a58fe27eb8 100644 --- a/cms/static/sass/elements/_typography.scss +++ b/cms/static/sass/elements/_typography.scss @@ -2,7 +2,7 @@ // ==================== // headings/titles -.t-title-1, .t-title-2, .t-title-3, .t-title-4, .t-title-5, .t-title-5 { +.t-title-1, .t-title-2, .t-title-3, .t-title-4, .t-title-5 { color: $gray-d3; } @@ -21,7 +21,7 @@ } .t-title-4 { - + @include font-size(14); } .t-title-5 { @@ -82,4 +82,4 @@ // misc .t-icon { line-height: 0; -} \ No newline at end of file +} diff --git a/cms/templates/ux-alerts.html b/cms/templates/ux-alerts.html index de062e471e..b9c5fd6053 100644 --- a/cms/templates/ux-alerts.html +++ b/cms/templates/ux-alerts.html @@ -114,6 +114,7 @@
  • Show Announcement
  • Show Announcement with Actions
  • Show Activiation
  • +
  • Alert with three actions
  • @@ -128,6 +129,10 @@

    Different Static Examples of Notifications

    @@ -182,6 +191,33 @@ <%block name="view_alerts"> + +
    +
    + + +
    +

    You are editing a draft

    +

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.

    +
    + + +
    +
    +
    @@ -196,10 +232,10 @@

    Alert Actions

    @@ -220,10 +256,10 @@

    Alert Actions

    @@ -297,7 +333,7 @@

    Alert Actions

    @@ -367,13 +403,13 @@ <%block name="view_notifications"> -
    + + + + + + +