You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"As a content author, I want to update the tags applied to my content."
Description
Implement a REST API that allows users to update the list of tags applied to a given object.
This ticket implements the API in the oel_tagging library, but a later ticket will use to update the tags applied to content edited in Studio.
Completion criteria
Build on the work from #81 to enhance this endpoint to add support for :
PUT /api/oel_tagging/v1/object_tags/<object_id>/?taxonomy=<pk>
Note: uncertain which HTTP method to use here -- PUT? PATCH? POST?
Uses oel_tagging.api.tag_object to replace the list of ObjectTags associated with the given <object_id> and taxonomy <pk>
Respects rules.can_change_object_tag for the existing object tags.
Note: Not sure how best to do this.. Currently the oel_tagging.api does not get involved with any rules, only views care about them. Maybe pass a callback through to tag_object that lets us check this rule for the request.user before saving changes to an ObjectTag?
On error, no updates are made, and the error code and explanation is returned.
taxonomy parameter: (required) Taxonomy pk
Update only ObjectTags for the given taxonomy, if it exists.
tags PUT data parameter: (required) list of tag "references", where either "id" or "value" is required:
id: corresponds to a Tag.external_id or Tag.id (required for closed taxonomies)
value: string, free-text tag value
Automated testing must cover common paths in behavioral specification.
Behavioral specifications
Suppose the Open edX instance has these taxonomies:
system-defined language taxonomy: st1 (enabled) linked to 1 (valid) object tag for object_id="abc": "Spanish"
closed taxonomies created by taxonomy admins: t1 (enabled), t2 (disabled), each linked to 20 object tags for object_id="abc"
2 free-text taxonomies created by taxonomy admins: o1 (enabled), o2 (disabled), each linked to 200 object tags for object_id="abc"
and the following users:
userA: non-staff
userS: global staff user
PUT /api/oel_tagging/v1/object_tags/abc/?taxonomy=st1
When userA or userS sends the following data to ^, they replace the "Spanish" language tag from st1 applied to object "abc" with "Portuguese" tags = [{"id": "pt"}]
When userA or userS sends the following data to ^, they remove any language tags from st1 applied to object "abc". tags = [] PUT /api/oel_tagging/v1/object_tags/abc/?taxonomy=t2
When userA sends data to ^, they receive an error -- o2 and t2 are disabled taxonomies, so normal users cannot add object tags linked to them.
When userS sends the following data to ^, they replace the existing tags on "abc" with taxonomy=t2 with these two (example) tags: tags = [{"id": "Science"}, {"id": "Chemistry"}] PUT /api/oel_tagging/v1/object_tags/abc/?taxonomy=o1
When user A or userS sends the following (example) data to ^, they replace the existing free-text tags on "abc" linked to taxonomy=o1 with these three (example) tags: tags = [{"value": "Interesting stuff"}, {"value": "will surely"}, {"value": "go here"}]
Documentation updates & improvements criteria
API endpoint and its parameters should be well-documented
Note: this API should be marked as “unstable” for the MVP.
Story
"As a content author, I want to update the tags applied to my content."
Description
Implement a REST API that allows users to update the list of tags applied to a given object.
This ticket implements the API in the
oel_tagginglibrary, but a later ticket will use to update the tags applied to content edited in Studio.Completion criteria
Build on the work from #81 to enhance this endpoint to add support for :
PUT /api/oel_tagging/v1/object_tags/<object_id>/?taxonomy=<pk>Note: uncertain which HTTP method to use here -- PUT? PATCH? POST?
oel_tagging.api.tag_objectto replace the list of ObjectTags associated with the given<object_id>and taxonomy<pk>rules.can_change_object_tagfor the existing object tags.Note: Not sure how best to do this.. Currently the
oel_tagging.apidoes not get involved with anyrules, only views care about them. Maybe pass a callback through totag_objectthat lets us check this rule for the request.user before saving changes to an ObjectTag?taxonomyparameter: (required) Taxonomy pktagsPUT data parameter: (required) list of tag "references", where either "id" or "value" is required:id: corresponds to aTag.external_idorTag.id(required for closed taxonomies)value: string, free-text tag valueAutomated testing must cover common paths in behavioral specification.
Behavioral specifications
Suppose the Open edX instance has these taxonomies:
and the following users:
PUT /api/oel_tagging/v1/object_tags/abc/?taxonomy=st1tags = [{"id": "pt"}]tags = []PUT /api/oel_tagging/v1/object_tags/abc/?taxonomy=t2tags = [{"id": "Science"}, {"id": "Chemistry"}]PUT /api/oel_tagging/v1/object_tags/abc/?taxonomy=o1tags = [{"value": "Interesting stuff"}, {"value": "will surely"}, {"value": "go here"}]Documentation updates & improvements criteria
Relevant PRs/repositories