diff --git a/cms/version.py b/cms/version.py index 1f0e0aa0..589e913c 100644 --- a/cms/version.py +++ b/cms/version.py @@ -1 +1 @@ -VERSION = "8.9992234" +VERSION = "8.1.1" diff --git a/files/forms.py b/files/forms.py index 647f470c..27b0380d 100644 --- a/files/forms.py +++ b/files/forms.py @@ -137,6 +137,7 @@ class MediaPublishForm(forms.ModelForm): super(MediaPublishForm, self).__init__(*args, **kwargs) self.was_shared = self.instance.is_shared if self.instance.pk else False + self.had_explicit_permission = self.instance.permissions.exists() if self.instance.pk else False is_embed_mode = self._check_embed_mode() self.fields["shared"].initial = self.was_shared @@ -227,11 +228,14 @@ class MediaPublishForm(forms.ModelForm): if shared: if self.request and self.request.user.is_authenticated: - MediaPermission.objects.get_or_create( - media=self.instance, - user=self.request.user, - defaults={'owner_user': self.request.user, 'permission': 'owner'}, - ) + submitted_categories = self.cleaned_data.get('category', []) + submitted_has_rbac = any(cat.is_rbac_category for cat in submitted_categories) + if self.had_explicit_permission or submitted_has_rbac: + MediaPermission.objects.get_or_create( + media=self.instance, + user=self.request.user, + defaults={'owner_user': self.request.user, 'permission': 'owner'}, + ) elif not shared: self.instance.permissions.all().delete() rbac_cats = self.instance.category.filter(is_rbac_category=True) @@ -242,10 +246,6 @@ class MediaPublishForm(forms.ModelForm): media = super(MediaPublishForm, self).save(*args, **kwargs) - # for course in media.category.filter(is_lms_course=True): - # tag, _ = Tag.objects.get_or_create(title=course.title[:100]) - # media.tags.add(tag) - return media