diff --git a/files/context_processors.py b/files/context_processors.py index 5ca4dae4..6dfaf632 100644 --- a/files/context_processors.py +++ b/files/context_processors.py @@ -69,22 +69,43 @@ def stuff(request): if getattr(settings, 'USE_LTI', False): # Check if user has an active LTI session lti_session = request.session.get('lti_session') + print("=" * 80) + print("CONTEXT PROCESSOR - LTI CATEGORY LOOKUP") + print("USE_LTI: True") + print(f"User authenticated: {request.user.is_authenticated}") + print(f"LTI session exists: {lti_session is not None}") + if lti_session and request.user.is_authenticated: ret['lti_session'] = lti_session + print(f"LTI session data: {lti_session}") # Get the category for this LTI context via lti_platform and lti_context_id platform_id = lti_session.get('platform_id') context_id = lti_session.get('context_id') + print(f"Platform ID: {platform_id}, Context ID: {context_id}") if platform_id and context_id: try: # Look up category by LTI platform and context category = Category.objects.get(lti_platform_id=platform_id, lti_context_id=context_id) + print(f"Category found: {category.title} (uid={category.uid})") # Check if user has permission to upload to this category - if request.user.has_member_access_to_category(category): + has_access = request.user.has_member_access_to_category(category) + print(f"User has member access: {has_access}") + + if has_access: ret['lti_category_uid'] = category.uid + print(f"SUCCESS: Set lti_category_uid = {category.uid}") + else: + print("SKIPPED: User does not have member access to category") except Category.DoesNotExist: + print(f"ERROR: No category found with lti_platform_id={platform_id}, lti_context_id={context_id}") pass + else: + print("SKIPPED: Missing platform_id or context_id") + else: + print("SKIPPED: No LTI session or user not authenticated") + print("=" * 80) return ret diff --git a/files/views/media.py b/files/views/media.py index 16772da8..72341226 100644 --- a/files/views/media.py +++ b/files/views/media.py @@ -276,18 +276,34 @@ class MediaList(APIView): # Handle LTI category assignment if publish_to_category parameter is provided publish_to_category = request.data.get('publish_to_category', '').strip() + print("=" * 80) + print("MEDIA UPLOAD - CATEGORY ASSIGNMENT") + print(f"publish_to_category parameter: '{publish_to_category}'") + print(f"User: {request.user.username}") + if publish_to_category: from ..models import Category try: category = Category.objects.get(uid=publish_to_category) + print(f"Category found: {category.title} (uid={category.uid})") # Check if user has upload access to this category - if request.user.has_member_access_to_category(category): + has_access = request.user.has_member_access_to_category(category) + print(f"User has member access to category: {has_access}") + + if has_access: media.category.add(category) + print(f"SUCCESS: Added media '{media.title}' to category '{category.title}'") + else: + print(f"SKIPPED: User does not have member access to category '{category.title}'") except Category.DoesNotExist: # Category doesn't exist, silently ignore + print(f"ERROR: Category with uid='{publish_to_category}' does not exist") pass + else: + print("No publish_to_category parameter provided") + print("=" * 80) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)