This commit is contained in:
Markos Gogoulos
2026-04-20 10:11:05 +03:00
parent 3e79a6b7e3
commit 2f90381000
3 changed files with 18 additions and 6 deletions
+8 -1
View File
@@ -506,7 +506,14 @@ class MediaBulkUserActions(APIView):
m.save(update_fields=["state", "listable"])
return Response({"detail": f"State updated to {state} for {media.count()} media items"})
if state == "private":
MediaPermission.objects.filter(media__in=media).delete()
for m in media:
rbac_cats = m.category.filter(is_rbac_category=True)
if rbac_cats.exists():
m.category.remove(*rbac_cats)
return Response({"detail": f"State updated to {state}"})
elif action == "change_owner":
owner = request.data.get('owner')
@@ -25,13 +25,18 @@ export const BulkActionPublishStateModal: React.FC<BulkActionPublishStateModalPr
onError,
csrfToken,
}) => {
const [selectedState, setSelectedState] = useState('public');
const isLmsEmbedMode =
sessionStorage.getItem('lms_embed_mode') === 'true' ||
new URLSearchParams(window.location.search).get('mode') === 'lms_embed_mode';
const availableStates = isLmsEmbedMode ? PUBLISH_STATES.filter((s) => s.value !== 'public') : PUBLISH_STATES;
const defaultState = availableStates[0].value;
const [selectedState, setSelectedState] = useState(defaultState);
const [isProcessing, setIsProcessing] = useState(false);
useEffect(() => {
if (!isOpen) {
// Reset state when modal closes
setSelectedState('public');
setSelectedState(defaultState);
}
}, [isOpen]);
@@ -97,7 +102,7 @@ export const BulkActionPublishStateModal: React.FC<BulkActionPublishStateModalPr
onChange={(e) => setSelectedState(e.target.value)}
disabled={isProcessing}
>
{PUBLISH_STATES.map((state) => (
{availableStates.map((state) => (
<option key={state.value} value={state.value}>
{state.label}
</option>
File diff suppressed because one or more lines are too long