As some i18n features need ```ugettext``` or its shorcut ```_``` to be called on a non-string-literal, so the pylint check of ```translation-of-non-string``` should be explicitly disabled in such situations.
Since we began monkey-patching `django.utils.translation` [1], we no
longer need to check for empty strings before translating them.
Previously, the empty string would be translated into translation
metadata. Now, translating the empty string intuitively yields the empty
string.
[1] 86633df3db
- has_course_access renamed to has_course_author_access for clarity
- Changed doc string to clearly state that it determines whether or not
a user has write access to a course
This resolves an issue where a checklist's long_description being empty
caused gettext to dump PO file headers.
I had originally made this change to the Stanford-Online/edx-platform
repository a few weeks ago [0] to address a failing test on our fork.
I didn't take the time to diagnose the root issue; I just fixed it for
the single case.
After stumbling across the issue elsewhere, @kluo <kevkluo@gmail.com>
followed through and tracked down the cause of the behavior. It turns
out that `gettext`, by default, translates the empty string into PO file
headers; this is apparently a feature, not a bug [1].
This behavior seems counterintuitive; for our use, it seems that
translating an empty string should simply return an empty string. We
already program defensively around this in platform code [2], but it'd be
convenient to resolve this with a centralized solution, instead of a
patchwork of fixes.
[0] 4b88f54aa658db952e899222ff5ede4a1c1beb18
[1] http://stackoverflow.com/questions/18459387/translation-of-empty-string-shows-po-header
[2] https://github.com/edx/edx-platform/blob/master/cms/djangoapps/contentstore/views/checklist.py#L140
This commit adds all of cms.
These keys are now objects with a limited interface, and the particular
internal representation is managed by the data storage layer (the
modulestore).
For the LMS, there should be no outward-facing changes to the system.
The keys are, for now, a change to internal representation only. For
Studio, the new serialized form of the keys is used in urls, to allow
for further migration in the future.
Co-Author: Andy Armstrong <andya@edx.org>
Co-Author: Christina Roberts <christina@edx.org>
Co-Author: David Baumgold <db@edx.org>
Co-Author: Diana Huang <dkh@edx.org>
Co-Author: Don Mitchell <dmitchell@edx.org>
Co-Author: Julia Hansbrough <julia@edx.org>
Co-Author: Nimisha Asthagiri <nasthagiri@edx.org>
Co-Author: Sarina Canelake <sarina@edx.org>
[LMS-2370]
Incidentally, fixes an acceptance test (which would have caught this
bug) not running. Its step regex was "They are correctly selected
after I reload the page$", which happens to be matched by "I reload
the page$", another step definition. Lettuce seems to arbitrarily pick
between definitions if they both match a step, so it's good to ensure
that each step isn't a sub-regexes of another.
Instead, we use XModule field default values when creating an empty
XModule. Driven by this use case, we also allow for XModules to be
created in memory without being persisted to the database at all. This
necessitates a change to the Modulestore api, replacing clone_item with
create_draft and save_xmodule.