def remove_metadata_type(self, request, pk=None): metadata_type_id = request.data.get('metadata_type_id', None) if metadata_type_id is None: return build_response(status=status.HTTP_400_BAD_REQUEST, success=False, error="No Metadata Type ID supplied") version = self.get_queryset().get(id=pk) version.metadata_types.remove( MetadataType.objects.get(id=metadata_type_id)) print(version.metadata_types) return build_response(LibraryVersionSerializer(version).data)
def clone(self, request, pk=None): if pk is None: return build_response( status=status.HTTP_400_BAD_REQUEST, success=False, error="No Folder ID supplied" ) version_to_clone = get_object_or_404(LibraryVersion, id=pk) modules = version_to_clone.library_modules.all() #clone version version_to_clone.id = None i = 0 new_number = version_to_clone.version_number + str(i) while LibraryVersion.objects.filter(version_number=new_number).exists(): i += 1 new_number = version_to_clone.version_number + str(i) version_to_clone.version_number = new_number version_to_clone.save() version_to_clone.library_modules.set(modules) version_to_clone.created_on = datetime.datetime.now() version_to_clone.save() def clone_recursively(folder_to_clone, new_parent): #save relationships of the old folder subfolders = folder_to_clone.subfolders.all() library_content = folder_to_clone.library_content.all() #clone subfolder folder_to_clone.id = None folder_to_clone.save() folder_to_clone.parent = new_parent folder_to_clone.version = version_to_clone folder_to_clone.library_content.set(library_content) folder_to_clone.save() for child in subfolders: clone_recursively(child, folder_to_clone) [ clone_recursively(top_level_folder, None) for top_level_folder in LibraryFolder.objects.filter(parent=None, version_id=pk) ] return build_response(LibraryVersionSerializer(version_to_clone).data)
def removemodule(self, request, pk=None): if pk is None: return build_response(status=status.HTTP_400_BAD_REQUEST, success=False, error="No Version ID supplied") library_module_id = request.data.get("library_module_id", None) if library_module_id is None: return build_response(status=status.HTTP_400_BAD_REQUEST, success=False, error="No Module ID supplied") version = self.get_queryset().get(id=pk) version.library_modules.remove( LibraryModule.objects.get(id=library_module_id)) return build_response()
def addcontent(self, request, pk=None): if pk is None: return build_response(status=status.HTTP_400_BAD_REQUEST, success=False, error="No Folder ID supplied") content_ids = request.data.get("content_ids", None) if content_ids is None: return build_response(status=status.HTTP_400_BAD_REQUEST, success=False, error="No Content ID supplied") folder = self.get_queryset().get(id=pk) for content_id in content_ids: folder.library_content.add(Content.objects.get(id=content_id)) return build_response()
def contents(self, request, pk=None): if pk is None: return build_response(status=status.HTTP_400_BAD_REQUEST, success=False, error="No Folder ID supplied") else: return build_response({ "folders": self.get_serializer( self.get_queryset().filter(parent=pk).order_by("id"), many=True).data, "files": ContentSerializer( self.get_queryset().get(id=pk).library_content, many=True).data })
def disk_info(request): import shutil total, used, free = shutil.disk_usage('/') return build_response({ "total": total, "used": used, "free": free })
def create(self, request, *args, **kwargs): try: serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) self.perform_create(serializer) headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) except IntegrityError as e: return build_response(status=status.HTTP_400_BAD_REQUEST, success=False, error="Already Exists in Database")
def list(self, request, *args, **kwargs): queryset = self.filter_queryset(self.get_queryset()) page = self.paginate_queryset(queryset) if page != None: serializer = self.get_serializer(page, many=True) return self.get_paginated_response(serializer.data) serializer = self.get_serializer(queryset, many=True) return build_response(serializer.data)
def get(self, request, pk=None): queryset = self.filter_queryset(Metadata.objects.filter(type__name=pk)) page = self.paginate_queryset(queryset) if page != None: serializer = self.get_serializer(page, many=True) return self.get_paginated_response(serializer.data) serializer = self.get_serializer(queryset, many=True) return build_response(serializer.data)
def user_name(request): return build_response(get_token(request))
def retrieve(self, request, *args, **kwargs): instance = self.get_object() serializer = self.get_serializer(instance) return build_response(serializer.data)
def get_csrf(request): return build_response(get_token(request))
def get(self, request, *args, **kwargs): version_id = int(kwargs['version_id']) build_util = LibraryBuildUtil() result = build_util.build_library(version_id) response = build_response(result) return response
def post(self, request): sheet_util = ContentSheetUtil() content_data = request.data result = sheet_util.upload_sheet_contents(content_data) response = build_response(result) return response
def modules(self, request, pk=None): return build_response( LibraryModuleSerializer( LibraryVersion.objects.get(id=pk).library_modules.all(), many=True).data if pk != None and pk != '0' else [])
def folders(self, request, pk=None): return build_response( LibraryFolderSerializer(LibraryFolder.objects.filter( version=pk).order_by("id"), many=True).data if pk != None else [])