1212 LICENSE_OPTIONS ,
1313)
1414from openedx .core .djangoapps .content_libraries .models import (
15- ContentLibraryPermission , ContentLibraryBlockImportTask
15+ ContentLibraryPermission , ContentLibraryBlockImportTask ,
16+ ContentLibrary
1617)
1718from openedx .core .lib .api .serializers import CourseKeyField
19+ from . import permissions
1820
1921
2022DATETIME_FORMAT = '%Y-%m-%dT%H:%M:%SZ'
@@ -34,7 +36,7 @@ class ContentLibraryMetadataSerializer(serializers.Serializer):
3436 org = serializers .SlugField (source = "key.org" )
3537 slug = serializers .CharField (source = "key.slug" , validators = (validate_unicode_slug , ))
3638 bundle_uuid = serializers .UUIDField (format = 'hex_verbose' , read_only = True )
37- collection_uuid = serializers .UUIDField (format = 'hex_verbose' , write_only = True )
39+ # collection_uuid = serializers.UUIDField(format='hex_verbose', write_only=True)
3840 title = serializers .CharField ()
3941 description = serializers .CharField (allow_blank = True )
4042 num_blocks = serializers .IntegerField (read_only = True )
@@ -46,6 +48,24 @@ class ContentLibraryMetadataSerializer(serializers.Serializer):
4648 has_unpublished_changes = serializers .BooleanField (read_only = True )
4749 has_unpublished_deletes = serializers .BooleanField (read_only = True )
4850 license = serializers .ChoiceField (choices = LICENSE_OPTIONS , default = ALL_RIGHTS_RESERVED )
51+ can_edit_library = serializers .SerializerMethodField ()
52+
53+ def get_can_edit_library (self , obj ):
54+ """
55+ Verifies if the user in request has permission
56+ to edit a library.
57+ """
58+ request = self .context .get ('request' , None )
59+ if request is None :
60+ return False
61+
62+ user = request .user
63+
64+ if not user :
65+ return False
66+
67+ library_obj = ContentLibrary .objects .get_by_key (obj .key )
68+ return user .has_perm (permissions .CAN_EDIT_THIS_CONTENT_LIBRARY , obj = library_obj )
4969
5070
5171class ContentLibraryUpdateSerializer (serializers .Serializer ):
0 commit comments