* refactor: moves is_content_creator
from cms.djangoapps.contentstore.helpers to common.djangoapps.student.auth
* feat: adds content tagging app
Adds models and APIs to support tagging content objects (e.g. XBlocks,
content libraries) by content authors. Content tags can be thought of as
"name:value" fields, though underneath they are a bit more complicated.
* adds dependency on openedx-learning<=0.1.0
* adds tagging app to LMS and CMS
* adds content tagging models, api, rules, admin, and tests.
* content taxonomies and tags can be maintained per organization by
content creators for that organization.
This is an experimental approach to introduce a role which has all Course Staff
permissions, except for the Studio access.
Co-authored-by: 0x29a <demid@opencraft.com>
* get rid of six.text_type(s)
* get rid of six.b()
* get rid of six.string_types
* get rid of six.PY2/six.PY3
* get rid of six.iteritems() and six.viewvalues()
* feat: added notifications for discussions app
* feat: added unit tests for handler
* feat: updated openedx-events package
* fix: updated notification creation logic and tests
* refactor: updated openedx-event version and event name
* refactor: moved logic to separate methods
We are lacking information in Flower about our Celery tasks that are
marked as successful but are actually failing.
Attempt to remove ignore_result=True to see if this is suppressing
valuable debugging information.
On running the management command, we get the folowing error:
kombu.exceptions.EncodeError: Object of type User is not JSON serializable
Pass a string of the username instead in the parameters of the tasks
created by the expire_and_create_entitlements management command.
* fix: EntitlementSupportDetail.action is EXPIRE, not EXPIRED
* fix: pass list of entitlement ids, not QuerySet subset for Celery json parser
On running the management command, we get the folowing error:
kombu.exceptions.EncodeError: Object of type CourseEntitlement is not JSON serializable
Pass a list of ints instead of a QuerySet object in the parameters of
the tasks created by the expire_and_create_entitlements management
command.
Not much of an optimization, but might shave a couple seconds if the
number of entitlements on production are large.
Django will use the _result_cache if the QuerySet has already been
retrieved:
107865780a/django/db/models/query.py (L597-L598)