diff --git a/api/funkwhale_api/music/mutations.py b/api/funkwhale_api/music/mutations.py index 51efa0ab8cd70f7c241c460937a76b75ee8ab658..4d78b8ea9c086649cd17dbc689a9a562e36c4bbb 100644 --- a/api/funkwhale_api/music/mutations.py +++ b/api/funkwhale_api/music/mutations.py @@ -21,4 +21,4 @@ class TrackMutationSerializer(mutations.UpdateMutationSerializer): class Meta: model = models.Track - fields = ["license", "title", "position"] + fields = ["license", "title", "position", "copyright"] diff --git a/api/tests/music/test_mutations.py b/api/tests/music/test_mutations.py index 062d00f98c6ce6739a5f8b0a2e98ab8f6017e8ad..bc9e81f8e3e79f3da52c6a1caad11e831cf560e0 100644 --- a/api/tests/music/test_mutations.py +++ b/api/tests/music/test_mutations.py @@ -36,6 +36,17 @@ def test_track_title_mutation(factories, now): assert track.title == "bar" +def test_track_copyright_mutation(factories, now): + track = factories["music.Track"](copyright="foo") + mutation = factories["common.Mutation"]( + type="update", target=track, payload={"copyright": "bar"} + ) + mutation.apply() + track.refresh_from_db() + + assert track.copyright == "bar" + + def test_track_position_mutation(factories): track = factories["music.Track"](position=4) mutation = factories["common.Mutation"]( diff --git a/front/src/components/library/TrackEdit.vue b/front/src/components/library/TrackEdit.vue index 32b3a627ac6960903cf2a4e2acac0f6f463413d8..945bae961029f80a29fa878baaefd9d2c91ea8e4 100644 --- a/front/src/components/library/TrackEdit.vue +++ b/front/src/components/library/TrackEdit.vue @@ -12,8 +12,11 @@ :object="object" :can-edit="canEdit" :licenses="licenses"></edit-form> + <div v-else class="ui inverted active dimmer"> + <div class="ui loader"></div> </div> - </section> + </div> + </section> </template> <script> diff --git a/front/src/edits.js b/front/src/edits.js index 4e6a85c737f21a599f54112e17c8805509f5aa64..c72cb4b09822bb716a9358e49b046f26141e901b 100644 --- a/front/src/edits.js +++ b/front/src/edits.js @@ -10,13 +10,6 @@ export default { label: this.$pgettext('Content/Track/*/Noun', 'Title'), getValue: (obj) => { return obj.title } }, - { - id: 'license', - type: 'license', - required: false, - label: this.$pgettext('Content/*/*/Noun', 'License'), - getValue: (obj) => { return obj.license }, - }, { id: 'position', type: 'text', @@ -24,7 +17,21 @@ export default { required: false, label: this.$pgettext('*/*/*/Short, Noun', 'Position'), getValue: (obj) => { return obj.position } - } + }, + { + id: 'copyright', + type: 'text', + required: false, + label: this.$pgettext('Content/Track/*/Noun', 'Copyright'), + getValue: (obj) => { return obj.copyright } + }, + { + id: 'license', + type: 'license', + required: false, + label: this.$pgettext('Content/*/*/Noun', 'License'), + getValue: (obj) => { return obj.license }, + }, ] } }