Exemple #1
0
    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)
Exemple #3
0
 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()
Exemple #4
0
    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()
Exemple #5
0
 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")
Exemple #8
0
    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)
Exemple #9
0
    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))
Exemple #11
0
 def retrieve(self, request, *args, **kwargs):
     instance = self.get_object()
     serializer = self.get_serializer(instance)
     return build_response(serializer.data)
Exemple #12
0
def get_csrf(request):
    return build_response(get_token(request))
Exemple #13
0
 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
Exemple #14
0
 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
Exemple #15
0
 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 [])
Exemple #16
0
 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 [])