From 5681f94a96346a27a87d0e3f0172c3401d0b730e Mon Sep 17 00:00:00 2001 From: Brian Talbot Date: Wed, 24 Apr 2013 14:55:04 -0400 Subject: [PATCH 01/39] 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 05c5a9401a1a5ba5209aaff2adbb606175078fe7 Mon Sep 17 00:00:00 2001 From: "Mark L. Chang" Date: Thu, 25 Apr 2013 13:44:14 -0400 Subject: [PATCH 02/39] 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 f6417b4f71ee71926395518df6ed5117ce2d98dd Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Thu, 25 Apr 2013 15:24:31 -0400 Subject: [PATCH 03/39] add a delete-all-versions flag to the delete_item method in the modulestores. Extend tests to verify. Still wip --- .../contentstore/tests/test_contentstore.py | 34 +++++++++++++++---- cms/djangoapps/contentstore/views.py | 11 ++---- .../lib/xmodule/xmodule/modulestore/draft.py | 10 ++++-- .../lib/xmodule/xmodule/modulestore/mongo.py | 4 ++- 4 files changed, 41 insertions(+), 18 deletions(-) diff --git a/cms/djangoapps/contentstore/tests/test_contentstore.py b/cms/djangoapps/contentstore/tests/test_contentstore.py index ed95d81d67..8a85eb75d9 100644 --- a/cms/djangoapps/contentstore/tests/test_contentstore.py +++ b/cms/djangoapps/contentstore/tests/test_contentstore.py @@ -264,15 +264,27 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase): def test_delete(self): import_from_xml(modulestore(), 'common/test/data/', ['full']) - module_store = modulestore('direct') + direct_store = modulestore('direct') + draft_store = modulestore('draft') - 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) + # get a vertical (and components in it) to put into 'draft' + vertical = direct_store.get_item(Location(['i4x', 'edX', 'full', + 'vertical', 'vertical_66', None])) + + private_item_location = vertical.location._replace(name='private_vertical') + + draft_store.clone_item(vertical.location, private_item_location) + + direct_store.update_children(sequential.location, sequential.children + + [private_item_location.url()]) + self.client.post( reverse('delete_item'), json.dumps({'id': sequential.location.url(), 'delete_children': 'true', 'delete_all_versions': 'true'}), @@ -281,18 +293,28 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase): found = False try: - module_store.get_item(Location(['i4x', 'edX', 'full', 'sequential', 'Administrivia_and_Circuit_Elements', None])) + draft_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 = draft_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) + # make sure we can't look up the private vertical + found_private = False + try: + draft_store.get_item(private_item_location) + found_private = True + except ItemNotFoundError: + pass + + self.assertFalse(found_private) + 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 603010f5b4..3a1ac1ebd1 100644 --- a/cms/djangoapps/contentstore/views.py +++ b/cms/djangoapps/contentstore/views.py @@ -624,16 +624,9 @@ def delete_item(request): # if caller wants to only delete the draft than the caller should put item.location.revision='draft' 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: diff --git a/common/lib/xmodule/xmodule/modulestore/draft.py b/common/lib/xmodule/xmodule/modulestore/draft.py index 43eb050129..a1372b25f0 100644 --- a/common/lib/xmodule/xmodule/modulestore/draft.py +++ b/common/lib/xmodule/xmodule/modulestore/draft.py @@ -4,6 +4,8 @@ from . import ModuleStoreBase, Location, namedtuple_to_son from .exceptions import ItemNotFoundError from .inheritance import own_metadata +import logging + DRAFT = 'draft' @@ -159,13 +161,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(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..ca0750609f 100644 --- a/common/lib/xmodule/xmodule/modulestore/mongo.py +++ b/common/lib/xmodule/xmodule/modulestore/mongo.py @@ -694,12 +694,14 @@ 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. """ + logging.debug('delete_all_versions = {0}'.format(delete_all_versions)) # 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) # we should remove this once we can break this reference from the course to static tabs From ead18f9fbb1fe11825164365c2869354719c230e Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Fri, 26 Apr 2013 10:30:39 -0400 Subject: [PATCH 04/39] undo the unit test, as per Jeh, the tests really aren't supposed to run the CMS with 'draft awareness' --- .../contentstore/tests/test_contentstore.py | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/cms/djangoapps/contentstore/tests/test_contentstore.py b/cms/djangoapps/contentstore/tests/test_contentstore.py index 8a85eb75d9..f4926acc29 100644 --- a/cms/djangoapps/contentstore/tests/test_contentstore.py +++ b/cms/djangoapps/contentstore/tests/test_contentstore.py @@ -274,17 +274,6 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase): # make sure the parent points to the child object which is to be deleted self.assertTrue(sequential.location.url() in chapter.children) - # get a vertical (and components in it) to put into 'draft' - vertical = direct_store.get_item(Location(['i4x', 'edX', 'full', - 'vertical', 'vertical_66', None])) - - private_item_location = vertical.location._replace(name='private_vertical') - - draft_store.clone_item(vertical.location, private_item_location) - - direct_store.update_children(sequential.location, sequential.children + - [private_item_location.url()]) - self.client.post( reverse('delete_item'), json.dumps({'id': sequential.location.url(), 'delete_children': 'true', 'delete_all_versions': 'true'}), @@ -305,15 +294,6 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase): # make sure the parent no longer points to the child object which was deleted self.assertFalse(sequential.location.url() in chapter.children) - # make sure we can't look up the private vertical - found_private = False - try: - draft_store.get_item(private_item_location) - found_private = True - except ItemNotFoundError: - pass - - self.assertFalse(found_private) def test_about_overrides(self): ''' From 2e64bc33ffc9e2e6d0e993588f7fb4d34475a5e9 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Fri, 26 Apr 2013 12:37:37 -0400 Subject: [PATCH 05/39] make sure delete_item always uses the draft store --- cms/djangoapps/contentstore/views.py | 6 ++++-- common/lib/xmodule/xmodule/modulestore/draft.py | 8 +++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/cms/djangoapps/contentstore/views.py b/cms/djangoapps/contentstore/views.py index 3a1ac1ebd1..a22d78900f 100644 --- a/cms/djangoapps/contentstore/views.py +++ b/cms/djangoapps/contentstore/views.py @@ -615,9 +615,11 @@ 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) + logging.debug('delete_all_versions = {0}'.format(delete_all_versions)) - store = get_modulestore(item_loc) + store = modulestore() + + item = store.get_item(item_location) # @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 diff --git a/common/lib/xmodule/xmodule/modulestore/draft.py b/common/lib/xmodule/xmodule/modulestore/draft.py index a1372b25f0..d7300e1730 100644 --- a/common/lib/xmodule/xmodule/modulestore/draft.py +++ b/common/lib/xmodule/xmodule/modulestore/draft.py @@ -15,6 +15,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): """ @@ -169,7 +175,7 @@ class DraftModuleStore(ModuleStoreBase): """ super(DraftModuleStore, self).delete_item(as_draft(location)) if delete_all_versions: - super(DraftModuleStore, self).delete_item(location) + super(DraftModuleStore, self).delete_item(as_published(location)) return From 87e0b8536393ce7fbf51b12bb53d50a6ac7e4854 Mon Sep 17 00:00:00 2001 From: Steve Strassmann Date: Fri, 26 Apr 2013 13:20:29 -0400 Subject: [PATCH 06/39] implement extract and generate ran tests successfully with $cd i18n; python -m unittest test --- conf/locale/en/LC_MESSAGES/messages.po | 1 + i18n/test/__init__.py | 1 + i18n/test/test_extract.py | 69 ++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 conf/locale/en/LC_MESSAGES/messages.po create mode 100644 i18n/test/__init__.py create mode 100644 i18n/test/test_extract.py diff --git a/conf/locale/en/LC_MESSAGES/messages.po b/conf/locale/en/LC_MESSAGES/messages.po new file mode 100644 index 0000000000..1bb8bf6d7f --- /dev/null +++ b/conf/locale/en/LC_MESSAGES/messages.po @@ -0,0 +1 @@ +# empty diff --git a/i18n/test/__init__.py b/i18n/test/__init__.py new file mode 100644 index 0000000000..63631ce9b8 --- /dev/null +++ b/i18n/test/__init__.py @@ -0,0 +1 @@ +from test_extract import TestExtract diff --git a/i18n/test/test_extract.py b/i18n/test/test_extract.py new file mode 100644 index 0000000000..25a8208036 --- /dev/null +++ b/i18n/test/test_extract.py @@ -0,0 +1,69 @@ +import os +from unittest import TestCase +from datetime import datetime +import polib + +import extract +from execute import SOURCE_MSGS_DIR + +class TestExtract(TestCase): + """ + Tests functionality of i18n/extract.py + """ + generated_files = ('django.po', 'djangojs.po', 'mako.po') + + def setUp(self): + self.start_time = datetime.now() + extract.main() + + 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) From 55266f6e96b14bfe07dc79408c8289a554b394cb Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Fri, 26 Apr 2013 13:39:22 -0400 Subject: [PATCH 07/39] 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 d9381eccf253369c043179e100b015797428262b Mon Sep 17 00:00:00 2001 From: Steve Strassmann Date: Fri, 26 Apr 2013 15:01:59 -0400 Subject: [PATCH 08/39] test_generate and test_extract both tests work --- conf/locale/config | 2 +- i18n/execute.py | 86 ++++++++++++++++++++++ i18n/extract.py | 144 +++++++++++++++++++++++++++++++++++++ i18n/generate.py | 64 +++++++++++++++++ i18n/test/__init__.py | 1 + i18n/test/test_extract.py | 8 ++- i18n/test/test_generate.py | 65 +++++++++++++++++ 7 files changed, 367 insertions(+), 3 deletions(-) create mode 100644 i18n/execute.py create mode 100755 i18n/extract.py create mode 100755 i18n/generate.py create mode 100644 i18n/test/test_generate.py diff --git a/conf/locale/config b/conf/locale/config index fe811ee02e..2d01e1ea43 100644 --- a/conf/locale/config +++ b/conf/locale/config @@ -1 +1 @@ -{"locales" : ["en", "fr", "de"]} +{"locales" : ["en"]} diff --git a/i18n/execute.py b/i18n/execute.py new file mode 100644 index 0000000000..3c3416b65d --- /dev/null +++ b/i18n/execute.py @@ -0,0 +1,86 @@ +import os, subprocess, logging, json + +def init_module(): + """ + Initializes module parameters + """ + global BASE_DIR, LOCALE_DIR, CONFIG_FILENAME, SOURCE_MSGS_DIR, SOURCE_LOCALE, LOG + + # BASE_DIR is the working directory to execute django-admin commands from. + # Typically this should be the 'mitx' directory. + BASE_DIR = os.path.normpath(os.path.dirname(os.path.abspath(__file__))+'/..') + + # Source language is English + SOURCE_LOCALE = 'en' + + # LOCALE_DIR contains the locale files. + # Typically this should be 'mitx/conf/locale' + LOCALE_DIR = BASE_DIR + '/conf/locale' + + # CONFIG_FILENAME contains localization configuration in json format + CONFIG_FILENAME = LOCALE_DIR + '/config' + + # SOURCE_MSGS_DIR contains the English po files. + SOURCE_MSGS_DIR = messages_dir(SOURCE_LOCALE) + + # Default logger. + LOG = get_logger() + + +def messages_dir(locale): + """ + Returns the name of the directory holding the po files for locale. + Example: mitx/conf/locale/en/LC_MESSAGES + """ + return os.path.join(LOCALE_DIR, locale, 'LC_MESSAGES') + +def get_logger(): + """Returns a default 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 + +# Run this after defining messages_dir and get_logger, because it depends on these. +init_module() + +def execute (command, working_directory=BASE_DIR, log=LOG): + """ + Executes shell command in a given working_directory. + Command is a string to pass to the shell. + Output is logged to log. + """ + log.info(command) + subprocess.call(command.split(' '), cwd=working_directory) + +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): + log.warn("Configuration file cannot be found: %s" % \ + os.path.relpath(config_path, BASE_DIR)) + return None + with open(config_path) as stream: + return json.load(stream) + +def create_dir_if_necessary(pathname): + dirname = os.path.dirname(pathname) + if not os.path.exists(dirname): + os.makedirs(dirname) + + +def remove_file(filename, log=LOG, verbose=True): + """ + Attempt to delete filename. + Log a warning if file does not exist. + Logging filenames are releative to BASE_DIR to cut down on noise in output. + """ + if verbose: + log.info('Deleting file %s' % os.path.relpath(filename, BASE_DIR)) + if not os.path.exists(filename): + log.warn("File does not exist: %s" % os.path.relpath(filename, BASE_DIR)) + else: + os.remove(filename) + diff --git a/i18n/extract.py b/i18n/extract.py new file mode 100755 index 0000000000..409a5344ea --- /dev/null +++ b/i18n/extract.py @@ -0,0 +1,144 @@ +#!/usr/bin/python + +""" +See https://edx-wiki.atlassian.net/wiki/display/ENG/PO+File+workflow + + This task extracts all English strings from all source code + and produces three human-readable files: + conf/locale/en/LC_MESSAGES/django-partial.po + conf/locale/en/LC_MESSAGES/djangojs.po + conf/locale/en/LC_MESSAGES/mako.po + + This task will clobber any existing django.po file. + This is because django-admin.py makemessages hardcodes this filename + and it cannot be overridden. + +""" + +import os +from datetime import datetime +from polib import pofile +from execute import execute, create_dir_if_necessary, remove_file, \ + BASE_DIR, LOCALE_DIR, SOURCE_MSGS_DIR, LOG + + +# BABEL_CONFIG contains declarations for Babel to extract strings from mako template files +# Use relpath to reduce noise in logs +BABEL_CONFIG = os.path.relpath(LOCALE_DIR + '/babel.cfg', BASE_DIR) + +# Strings from mako template files are written to BABEL_OUT +# Use relpath to reduce noise in logs +BABEL_OUT = os.path.relpath(SOURCE_MSGS_DIR + '/mako.po', BASE_DIR) + + +def main (): + create_dir_if_necessary(LOCALE_DIR) + generated_files = ('django-partial.po', 'djangojs.po', 'mako.po') + + for filename in generated_files: + remove_file(os.path.join(SOURCE_MSGS_DIR, filename)) + + # Extract strings from mako templates + babel_mako_cmd = 'pybabel extract -F %s -c "TRANSLATORS:" . -o %s' % (BABEL_CONFIG, BABEL_OUT) + + # Extract strings from django source files + make_django_cmd = 'django-admin.py makemessages -l en --ignore=src/* --ignore=i18n/* ' \ + + '--extension html' + + # Extract strings from javascript source files + make_djangojs_cmd = 'django-admin.py makemessages -l en -d djangojs --ignore=src/* ' \ + + '--ignore=i18n/* --extension js' + execute(babel_mako_cmd, working_directory=BASE_DIR) + execute(make_django_cmd, working_directory=BASE_DIR) + # makemessages creates 'django.po'. This filename is hardcoded. + # Rename it to django-partial.po to enable merging into django.po later. + os.rename(os.path.join(SOURCE_MSGS_DIR, 'django.po'), + os.path.join(SOURCE_MSGS_DIR, 'django-partial.po')) + execute(make_djangojs_cmd, working_directory=BASE_DIR) + + for filename in generated_files: + LOG.info('Cleaning %s' % filename) + po = pofile(os.path.join(SOURCE_MSGS_DIR, filename)) + # replace default headers with edX headers + fix_header(po) + # replace default metadata with edX metadata + fix_metadata(po) + # remove key strings which belong in messages.po + strip_key_strings(po) + po.save() + +# By default, django-admin.py makemessages creates this header: +""" +SOME DESCRIPTIVE TITLE. +Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +This file is distributed under the same license as the PACKAGE package. +FIRST AUTHOR , 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 ', + } + 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..f04726d55b --- /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=%s' % 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: %s" % 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/test/__init__.py b/i18n/test/__init__.py index 63631ce9b8..65100a18d9 100644 --- a/i18n/test/__init__.py +++ b/i18n/test/__init__.py @@ -1 +1,2 @@ from test_extract import TestExtract +from test_generate import TestGenerate diff --git a/i18n/test/test_extract.py b/i18n/test/test_extract.py index 25a8208036..e0cbd912d0 100644 --- a/i18n/test/test_extract.py +++ b/i18n/test/test_extract.py @@ -10,10 +10,14 @@ class TestExtract(TestCase): """ Tests functionality of i18n/extract.py """ - generated_files = ('django.po', 'djangojs.po', 'mako.po') + generated_files = ('django-partial.po', 'djangojs.po', 'mako.po') def setUp(self): - self.start_time = datetime.now() + # 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) + + # Run extraction script. Warning, this takes 1 minute or more extract.main() def get_files (self): diff --git a/i18n/test/test_generate.py b/i18n/test/test_generate.py new file mode 100644 index 0000000000..295fd646d4 --- /dev/null +++ b/i18n/test/test_generate.py @@ -0,0 +1,65 @@ +import os +import string +import polib +import 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)) From 1ca763844bc9631409bcc020f1dcd894e9f0d26d Mon Sep 17 00:00:00 2001 From: Steve Strassmann Date: Fri, 26 Apr 2013 15:25:00 -0400 Subject: [PATCH 09/39] testing --- i18n/test/test_extract.py | 18 +++++++++++++++--- i18n/test/test_generate.py | 6 +----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/i18n/test/test_extract.py b/i18n/test/test_extract.py index e0cbd912d0..ade6e57fa8 100644 --- a/i18n/test/test_extract.py +++ b/i18n/test/test_extract.py @@ -1,11 +1,13 @@ -import os +import os, polib from unittest import TestCase -from datetime import datetime -import polib +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 @@ -13,11 +15,21 @@ class TestExtract(TestCase): generated_files = ('django-partial.po', 'djangojs.po', 'mako.po') def setUp(self): + 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: + self.run_main() + SETUP_HAS_RUN = True + def run_main(self): # Run extraction script. Warning, this takes 1 minute or more + print "***********************" + print "***********************" + print "***********************" extract.main() def get_files (self): diff --git a/i18n/test/test_generate.py b/i18n/test/test_generate.py index 295fd646d4..fc22988251 100644 --- a/i18n/test/test_generate.py +++ b/i18n/test/test_generate.py @@ -1,11 +1,7 @@ -import os -import string -import polib -import random +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 From 7d206e020d9c559d28eb11d25479ff4441a669b0 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Fri, 26 Apr 2013 16:13:26 -0400 Subject: [PATCH 10/39] remove comment which is no longer valid as well as debug log messages --- cms/djangoapps/contentstore/views.py | 6 ------ common/lib/xmodule/xmodule/modulestore/mongo.py | 1 - 2 files changed, 7 deletions(-) diff --git a/cms/djangoapps/contentstore/views.py b/cms/djangoapps/contentstore/views.py index a22d78900f..153e37ed82 100644 --- a/cms/djangoapps/contentstore/views.py +++ b/cms/djangoapps/contentstore/views.py @@ -615,16 +615,10 @@ def delete_item(request): delete_children = request.POST.get('delete_children', False) delete_all_versions = request.POST.get('delete_all_versions', False) - logging.debug('delete_all_versions = {0}'.format(delete_all_versions)) - store = modulestore() item = store.get_item(item_location) - # @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' - if delete_children: _xmodule_recurse(item, lambda i: store.delete_item(i.location, delete_all_versions)) else: diff --git a/common/lib/xmodule/xmodule/modulestore/mongo.py b/common/lib/xmodule/xmodule/modulestore/mongo.py index ca0750609f..c8256422f8 100644 --- a/common/lib/xmodule/xmodule/modulestore/mongo.py +++ b/common/lib/xmodule/xmodule/modulestore/mongo.py @@ -701,7 +701,6 @@ class MongoModuleStore(ModuleStoreBase): 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. """ - logging.debug('delete_all_versions = {0}'.format(delete_all_versions)) # 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) # we should remove this once we can break this reference from the course to static tabs From 3fd004e2fef3bd7ef2433125a69280bd075fa2b0 Mon Sep 17 00:00:00 2001 From: Steve Strassmann Date: Fri, 26 Apr 2013 16:54:23 -0400 Subject: [PATCH 11/39] rake tasks --- rakefile | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/rakefile b/rakefile index 1f60a18486..fcb9d8149b 100644 --- a/rakefile +++ b/rakefile @@ -480,6 +480,20 @@ 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 # --- Develop and public documentation --- desc "Invoke sphinx 'make build' to generate docs." From d7693d96b7720d2f4913ce63625b7c67e9533581 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Mon, 29 Apr 2013 09:18:49 -0400 Subject: [PATCH 12/39] unit test should just use direct store. Also remove unused import and logging. --- cms/djangoapps/contentstore/tests/test_contentstore.py | 5 ++--- common/lib/xmodule/xmodule/modulestore/draft.py | 2 -- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/cms/djangoapps/contentstore/tests/test_contentstore.py b/cms/djangoapps/contentstore/tests/test_contentstore.py index f4926acc29..07b7032e60 100644 --- a/cms/djangoapps/contentstore/tests/test_contentstore.py +++ b/cms/djangoapps/contentstore/tests/test_contentstore.py @@ -265,7 +265,6 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase): import_from_xml(modulestore(), 'common/test/data/', ['full']) direct_store = modulestore('direct') - draft_store = modulestore('draft') sequential = direct_store.get_item(Location(['i4x', 'edX', 'full', 'sequential', 'Administrivia_and_Circuit_Elements', None])) @@ -282,14 +281,14 @@ class ContentStoreToyCourseTest(ModuleStoreTestCase): found = False try: - draft_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 = draft_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) diff --git a/common/lib/xmodule/xmodule/modulestore/draft.py b/common/lib/xmodule/xmodule/modulestore/draft.py index d7300e1730..c3f1b23688 100644 --- a/common/lib/xmodule/xmodule/modulestore/draft.py +++ b/common/lib/xmodule/xmodule/modulestore/draft.py @@ -4,8 +4,6 @@ from . import ModuleStoreBase, Location, namedtuple_to_son from .exceptions import ItemNotFoundError from .inheritance import own_metadata -import logging - DRAFT = 'draft' From d55d5c9351897f19c6654a0d6a35103f9364ab53 Mon Sep 17 00:00:00 2001 From: Steve Strassmann Date: Mon, 29 Apr 2013 09:54:32 -0400 Subject: [PATCH 13/39] addressed Don\'s comments on pull request --- i18n/generate.py | 4 ++-- i18n/test/test_extract.py | 10 ++-------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/i18n/generate.py b/i18n/generate.py index f04726d55b..ddbaadfa70 100755 --- a/i18n/generate.py +++ b/i18n/generate.py @@ -21,7 +21,7 @@ def merge(locale, target='django.po'): """ For the given locale, merge django-partial.po, messages.po, mako.po -> django.po """ - LOG.info('Merging locale=%s' % locale) + 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) @@ -45,7 +45,7 @@ def validate_files(dir, files_to_merge): for path in files_to_merge: pathname = os.path.join(dir, path) if not os.path.exists(pathname): - raise Exception("File not found: %s" % pathname) + raise Exception("File not found: {0}".format(pathname)) def main (): configuration = get_config() diff --git a/i18n/test/test_extract.py b/i18n/test/test_extract.py index ade6e57fa8..1df43ca23f 100644 --- a/i18n/test/test_extract.py +++ b/i18n/test/test_extract.py @@ -22,16 +22,10 @@ class TestExtract(TestCase): self.start_time = datetime.now() - timedelta(seconds=1) super(TestExtract, self).setUp() if not SETUP_HAS_RUN: - self.run_main() + # Run extraction script. Warning, this takes 1 minute or more + extract.main() SETUP_HAS_RUN = True - def run_main(self): - # Run extraction script. Warning, this takes 1 minute or more - print "***********************" - print "***********************" - print "***********************" - extract.main() - def get_files (self): """ This is a generator. From c00d71d422c27e84992b2eb157941b3375b44951 Mon Sep 17 00:00:00 2001 From: Steve Strassmann Date: Mon, 29 Apr 2013 11:32:22 -0400 Subject: [PATCH 14/39] integrate dummy string tools; added rake tasks and unit tests --- i18n/dummy.py | 6 +-- i18n/make_dummy.py | 49 +++++++++---------- i18n/test/__init__.py | 2 + i18n/update.py | 110 ------------------------------------------ rakefile | 10 ++++ requirements.txt | 5 +- 6 files changed, 43 insertions(+), 139 deletions(-) delete mode 100755 i18n/update.py diff --git a/i18n/dummy.py b/i18n/dummy.py index 798ee525b5..78bfdc3b58 100644 --- a/i18n/dummy.py +++ b/i18n/dummy.py @@ -86,7 +86,7 @@ class Dummy (Converter): def init_msgs(self, msgs): """ Make sure the first msg in msgs has a plural property. - msgs is list of instances of pofile.Msg + msgs is list of instances of polib.POEntry """ if len(msgs)==0: return @@ -100,8 +100,8 @@ class Dummy (Converter): def convert_msg(self, msg): """ - Takes one Msg object and converts it (adds a dummy translation to it) - msg is an instance of pofile.Msg + Takes one POEntry object and converts it (adds a dummy translation to it) + msg is an instance of polib.POEntry """ source = msg.msgid if len(source)==0: 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/test/__init__.py b/i18n/test/__init__.py index 65100a18d9..d60515c712 100644 --- a/i18n/test/__init__.py +++ b/i18n/test/__init__.py @@ -1,2 +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/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/rakefile b/rakefile index 537a081471..61fc1b2698 100644 --- a/rakefile +++ b/rakefile @@ -516,6 +516,16 @@ task :generate_i18n do 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." task :builddocs, [:options] do |t, args| 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 393e6ffc23ea2e2f3d5c99ed35a30bef67a985e6 Mon Sep 17 00:00:00 2001 From: Steve Strassmann Date: Mon, 29 Apr 2013 11:35:01 -0400 Subject: [PATCH 15/39] added test cases for converter and dummy --- i18n/test/test_converter.py | 42 +++++++++++++++++++++++++++++++ i18n/test/test_dummy.py | 50 +++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 i18n/test/test_converter.py create mode 100644 i18n/test/test_dummy.py diff --git a/i18n/test/test_converter.py b/i18n/test/test_converter.py new file mode 100644 index 0000000000..4dd5f02e3f --- /dev/null +++ b/i18n/test/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/test/test_dummy.py b/i18n/test/test_dummy.py new file mode 100644 index 0000000000..88addb5a95 --- /dev/null +++ b/i18n/test/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) From d63a37c252165576ceb49450ec67c5fcfd4505cf Mon Sep 17 00:00:00 2001 From: Steve Strassmann Date: Mon, 29 Apr 2013 11:47:56 -0400 Subject: [PATCH 16/39] rename test dir to tests; add SkipTest for test_extract.py --- 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 ++++++++++++++++++++++++++ 5 files changed, 242 insertions(+) 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 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)) From e287244151709d50e4217f2e86e4fab0d0990f00 Mon Sep 17 00:00:00 2001 From: Steve Strassmann Date: Mon, 29 Apr 2013 11:49:51 -0400 Subject: [PATCH 17/39] rm test dir (replaced by tests dir) --- i18n/test/__init__.py | 4 -- i18n/test/test_converter.py | 42 -------------------- i18n/test/test_dummy.py | 50 ----------------------- i18n/test/test_extract.py | 79 ------------------------------------- i18n/test/test_generate.py | 61 ---------------------------- 5 files changed, 236 deletions(-) delete mode 100644 i18n/test/__init__.py delete mode 100644 i18n/test/test_converter.py delete mode 100644 i18n/test/test_dummy.py delete mode 100644 i18n/test/test_extract.py delete mode 100644 i18n/test/test_generate.py diff --git a/i18n/test/__init__.py b/i18n/test/__init__.py deleted file mode 100644 index d60515c712..0000000000 --- a/i18n/test/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from test_extract import TestExtract -from test_generate import TestGenerate -from test_converter import TestConverter -from test_dummy import TestDummy diff --git a/i18n/test/test_converter.py b/i18n/test/test_converter.py deleted file mode 100644 index 4dd5f02e3f..0000000000 --- a/i18n/test/test_converter.py +++ /dev/null @@ -1,42 +0,0 @@ -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/test/test_dummy.py b/i18n/test/test_dummy.py deleted file mode 100644 index 88addb5a95..0000000000 --- a/i18n/test/test_dummy.py +++ /dev/null @@ -1,50 +0,0 @@ -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/test/test_extract.py b/i18n/test/test_extract.py deleted file mode 100644 index 1df43ca23f..0000000000 --- a/i18n/test/test_extract.py +++ /dev/null @@ -1,79 +0,0 @@ -import os, polib -from unittest import TestCase -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): - 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/test/test_generate.py b/i18n/test/test_generate.py deleted file mode 100644 index fc22988251..0000000000 --- a/i18n/test/test_generate.py +++ /dev/null @@ -1,61 +0,0 @@ -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)) From 8358e866cf240166c85599238627ba17d5f57978 Mon Sep 17 00:00:00 2001 From: Steve Strassmann Date: Mon, 29 Apr 2013 12:45:07 -0400 Subject: [PATCH 18/39] more robust cleanup of default po files --- i18n/extract.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/i18n/extract.py b/i18n/extract.py index 409a5344ea..c6fedd3bfa 100755 --- a/i18n/extract.py +++ b/i18n/extract.py @@ -121,7 +121,8 @@ def fix_metadata(po): 'Language' : 'en', 'Language-Team': 'translation team ', } - del po.metadata['Last-Translator'] + if po.metadata.has_key('Last-Translator'): + del po.metadata['Last-Translator'] po.metadata.update(fixes) def strip_key_strings(po): From c28647be2d2b12fa674b1ba76da787a041d91acd Mon Sep 17 00:00:00 2001 From: Brian Talbot Date: Mon, 29 Apr 2013 14:47:57 -0400 Subject: [PATCH 19/39] 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 c79843c5418847272bd143b1c777f874c3c29fbf Mon Sep 17 00:00:00 2001 From: Sarina Canelake Date: Fri, 26 Apr 2013 15:24:04 -0400 Subject: [PATCH 20/39] Add factorial as a default function for formula response --- common/lib/capa/capa/calc.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/common/lib/capa/capa/calc.py b/common/lib/capa/capa/calc.py index c3fe6b656b..4d6c49fe99 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, @@ -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" From 696879bd260b31baf24d83d89fabf089b95d38dd Mon Sep 17 00:00:00 2001 From: Sarina Canelake Date: Mon, 29 Apr 2013 00:40:23 -0400 Subject: [PATCH 21/39] Add unit tests for formularesponse type --- .../lib/capa/capa/tests/test_responsetypes.py | 88 ++++++++++++++++++- 1 file changed, 86 insertions(+), 2 deletions(-) diff --git a/common/lib/capa/capa/tests/test_responsetypes.py b/common/lib/capa/capa/tests/test_responsetypes.py index bf64d3cc69..ab21a845eb 100644 --- a/common/lib/capa/capa/tests/test_responsetypes.py +++ b/common/lib/capa/capa/tests/test_responsetypes.py @@ -33,10 +33,16 @@ 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: + if correct_map.get_correctness('1_2_1')!= expected_correctness: + print submission + print correct_map + self.assertEquals(correct_map.get_correctness('1_2_1'), expected_correctness, msg) def assert_answer_format(self, problem): answers = problem.get_question_answers() @@ -358,6 +364,84 @@ class FormulaResponseTest(ResponseTest): 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 + + # Sample x in the range [-10,10] + import random + w = random.randint(3, 10) + sample_dict = {'x': (-10, 10), 'y': (1, 10), 'z':(-1, 1), 'w':(w,w)} + 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 xml_factory_class = StringResponseXMLFactory From ed43afb08fd6e0338210534194499646e437b4fd Mon Sep 17 00:00:00 2001 From: Sarina Canelake Date: Mon, 29 Apr 2013 00:44:04 -0400 Subject: [PATCH 22/39] Add additional unit test comment --- common/lib/capa/capa/tests/test_responsetypes.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/common/lib/capa/capa/tests/test_responsetypes.py b/common/lib/capa/capa/tests/test_responsetypes.py index ab21a845eb..6576a1ce86 100644 --- a/common/lib/capa/capa/tests/test_responsetypes.py +++ b/common/lib/capa/capa/tests/test_responsetypes.py @@ -414,11 +414,15 @@ class FormulaResponseTest(ResponseTest): # which are: sin, cos, tan, sqrt, log10, log2, ln, # arccos, arcsin, arctan, abs, # fact, factorial - - # Sample x in the range [-10,10] + import random w = random.randint(3, 10) - sample_dict = {'x': (-10, 10), 'y': (1, 10), 'z':(-1, 1), 'w':(w,w)} + 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'),] From 46792c82de8f4b3305bf5122f0a908788e56946f Mon Sep 17 00:00:00 2001 From: Sarina Canelake Date: Mon, 29 Apr 2013 00:56:07 -0400 Subject: [PATCH 23/39] Remove debugging print statements --- common/lib/capa/capa/tests/test_responsetypes.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/common/lib/capa/capa/tests/test_responsetypes.py b/common/lib/capa/capa/tests/test_responsetypes.py index 6576a1ce86..28d8c7b29f 100644 --- a/common/lib/capa/capa/tests/test_responsetypes.py +++ b/common/lib/capa/capa/tests/test_responsetypes.py @@ -39,9 +39,6 @@ class ResponseTest(unittest.TestCase): if msg is None: self.assertEquals(correct_map.get_correctness('1_2_1'), expected_correctness) else: - if correct_map.get_correctness('1_2_1')!= expected_correctness: - print submission - print correct_map self.assertEquals(correct_map.get_correctness('1_2_1'), expected_correctness, msg) def assert_answer_format(self, problem): From 6993daf116962b9c528268c8399f8ef1348e80cc Mon Sep 17 00:00:00 2001 From: Sarina Canelake Date: Mon, 29 Apr 2013 10:48:25 -0400 Subject: [PATCH 24/39] Fix pep8 violations --- common/lib/capa/capa/calc.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/common/lib/capa/capa/calc.py b/common/lib/capa/capa/calc.py index 4d6c49fe99..bb1fb97153 100644 --- a/common/lib/capa/capa/calc.py +++ b/common/lib/capa/capa/calc.py @@ -114,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''' From f95331dcc1b4359af20a38d98b189334f2f5e3c3 Mon Sep 17 00:00:00 2001 From: Sarina Canelake Date: Mon, 29 Apr 2013 14:22:10 -0400 Subject: [PATCH 25/39] fix more pep8 violations --- .../lib/capa/capa/tests/test_responsetypes.py | 71 +++++++++---------- 1 file changed, 32 insertions(+), 39 deletions(-) diff --git a/common/lib/capa/capa/tests/test_responsetypes.py b/common/lib/capa/capa/tests/test_responsetypes.py index 28d8c7b29f..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 @@ -360,10 +361,9 @@ 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)} + sample_dict = {'R1': (10, 10), 'R2': (2, 2), 'R3': (5, 5), 'R4': (1, 1)} # Test problem problem = self.build_problem(sample_dict=sample_dict, @@ -388,9 +388,9 @@ class FormulaResponseTest(ResponseTest): # 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 + 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) @@ -399,30 +399,29 @@ class FormulaResponseTest(ResponseTest): num_samples=10, tolerance=0.01, answer=correct) + # Expect that the inputs are graded correctly - - self.assert_grade(problem, correct, 'correct', + 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', + 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, + # which are: sin, cos, tan, sqrt, log10, log2, ln, # arccos, arcsin, arctan, abs, # fact, factorial - - import random - 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'),] + 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) @@ -432,17 +431,14 @@ class FormulaResponseTest(ResponseTest): num_samples=10, tolerance=0.01, answer=correct) + # Expect that the inputs are graded correctly - - self.assert_grade(problem, correct, 'correct', + 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', + 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 xml_factory_class = StringResponseXMLFactory @@ -989,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']: @@ -1006,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']: @@ -1036,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): From 39dd251b02a4b7d978dccb02da1bcd7166a4593f Mon Sep 17 00:00:00 2001 From: Steve Strassmann Date: Mon, 29 Apr 2013 15:30:18 -0400 Subject: [PATCH 26/39] add "rake test_i18n" to rakefile; tests pass --- rakefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/rakefile b/rakefile index 61fc1b2698..2b9cb9fd57 100644 --- a/rakefile +++ b/rakefile @@ -330,6 +330,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}" From 4e251a3b192ef1e85d36fc8d433fe816cd9ebef9 Mon Sep 17 00:00:00 2001 From: Brian Talbot Date: Mon, 29 Apr 2013 15:38:55 -0400 Subject: [PATCH 27/39] 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 28/39] 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 29/39] 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 33aada6d2204bb1a95c5462d867e604dd9a7b90b Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Mon, 29 Apr 2013 16:43:32 -0400 Subject: [PATCH 30/39] 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 befe7beccbaec4afe003aa4acde9297022f07643 Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Mon, 29 Apr 2013 16:55:29 -0400 Subject: [PATCH 31/39] Add accessibility text to the Contact page. --- lms/templates/static_templates/contact.html | 3 +++ 1 file changed, 3 insertions(+) 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.

    + From cdfd7c807f77a50381cf8eb2463f2ce40de6c21c Mon Sep 17 00:00:00 2001 From: Steve Strassmann Date: Mon, 29 Apr 2013 17:13:24 -0400 Subject: [PATCH 32/39] fix bad url for jsi18n --- 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 65e08b3cc5..3f286c2582 100644 --- a/cms/templates/base.html +++ b/cms/templates/base.html @@ -30,7 +30,7 @@ <%include file="courseware_vendor_js.html"/> - + From 886205dec35d96c2a3719b5b802bec62ecb02f7b Mon Sep 17 00:00:00 2001 From: Brian Talbot Date: Mon, 29 Apr 2013 17:23:14 -0400 Subject: [PATCH 33/39] 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 02ed9f26c4c48e5a95d39ef3388c1a3ee478bf49 Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Tue, 30 Apr 2013 10:07:42 -0400 Subject: [PATCH 34/39] add dependent image for the image response template --- common/static/images/firecode.jpg | Bin 0 -> 67337 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 common/static/images/firecode.jpg 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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 Date: Tue, 30 Apr 2013 11:24:45 -0400 Subject: [PATCH 35/39] 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 1f1a6e3ec56715b3542c00dab6e0dafb12d8771f Mon Sep 17 00:00:00 2001 From: Chris Dodge Date: Tue, 30 Apr 2013 11:46:49 -0400 Subject: [PATCH 36/39] add more images to support templates --- common/static/images/high_pass_filter.png | Bin 0 -> 48150 bytes common/static/images/simple_graph.png | Bin 0 -> 15107 bytes common/static/images/voltage_divider.png | Bin 0 -> 27331 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 common/static/images/high_pass_filter.png create mode 100644 common/static/images/simple_graph.png create mode 100644 common/static/images/voltage_divider.png diff --git a/common/static/images/high_pass_filter.png b/common/static/images/high_pass_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..5f425d46715141fcdc584a7cf9b9ea29ef706dc4 GIT binary patch literal 48150 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 Date: Tue, 30 Apr 2013 12:02:58 -0400 Subject: [PATCH 37/39] also move the MIT dome image in Latex to be in our source pack --- .../templates/problem/latex_problem.yaml | 2 +- common/static/images/mit_dome.jpg | Bin 0 -> 37935 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 common/static/images/mit_dome.jpg 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/mit_dome.jpg b/common/static/images/mit_dome.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75a5bd949f97a48dfa76863f99c0da2855da41ca GIT binary patch literal 37935 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 gZ|@p0^HAS-&;to{T(O8@`> literal 0 HcmV?d00001 From 091ca9c3f06766a0709bb02201c49b8035afe260 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Tue, 30 Apr 2013 15:55:30 -0400 Subject: [PATCH 38/39] 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 39/39] 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