def _retrieve_data(self, request):
        """Return module display - GET method

        Args:
            request:

        Returns:

        """
        data = ""
        self.error = None
        data_xml_entities = XmlEntities()
        if request.method == "GET":
            if "data" in request.GET:
                if len(request.GET["data"]) > 0:
                    data = request.GET["data"]
        elif request.method == "POST":
            selected_option = request.POST["blob_form"]
            if selected_option == "url":
                url_form = URLForm(request.POST)
                if url_form.is_valid():
                    data = url_form.data["url"]
                else:
                    self.error = "Enter a valid URL."
            elif selected_option == "file":
                try:
                    form = BLOBHostForm(request.POST, request.FILES)
                    if not form.is_valid():
                        self.error = "No file uploaded."
                        return data

                    # get file from request
                    uploaded_file = request.FILES["file"]
                    # get filename from file
                    filename = uploaded_file.name
                    # get user id from request
                    user_id = str(request.user.id)

                    # create blob
                    blob = Blob(filename=filename, user_id=user_id)
                    # set blob file
                    blob.blob = uploaded_file
                    # save blob
                    blob_api.insert(blob)

                    # get download uri
                    data = get_blob_download_uri(blob, request)
                except:
                    self.error = "An error occurred during the upload."

        return (
            data_xml_entities.escape_xml_entities(data)
            if AUTO_ESCAPE_XML_ENTITIES
            else data
        )
Exemple #2
0
    def get_handle(self, instance):
        """Return handle

        Args:
            instance:

        Returns:

        """
        # get request from context
        request = self.context.get("request")
        # return download handle
        return get_blob_download_uri(instance, request)
Exemple #3
0
    def _retrieve_data(self, request):
        """Retrieve module's data

        Args:
            request:

        Returns:

        """
        data = ""
        self.error = None
        data_xml_entities = XmlEntities()
        if request.method == "GET":
            if "data" in request.GET:
                if len(request.GET["data"]) > 0:
                    data = request.GET["data"]
        elif request.method == "POST":
            try:
                form = BLOBHostForm(request.POST, request.FILES)
                if not form.is_valid():
                    self.error = "No file uploaded."
                    return data

                # get file from request
                uploaded_file = request.FILES["file"]
                # get filename from file
                filename = uploaded_file.name
                # get user id from request
                user_id = str(request.user.id)

                # create blob
                blob = Blob(filename=filename, user_id=user_id)
                # set blob file
                blob.blob = uploaded_file
                # save blob
                blob_api.insert(blob)
                # get download uri
                data = get_blob_download_uri(blob, request)
            except:
                self.error = "An unexpected error occurred."

        return (data_xml_entities.escape_xml_entities(data)
                if AUTO_ESCAPE_XML_ENTITIES else data)
    def _retrieve_data(self, request):
        """ Retrieve module's data

        Args:
            request:

        Returns:

        """
        data = ''
        self.error = None
        if request.method == 'GET':
            if 'data' in request.GET:
                if len(request.GET['data']) > 0:
                    data = request.GET['data']
        elif request.method == 'POST':
            try:
                form = BLOBHostForm(request.POST, request.FILES)
                if not form.is_valid():
                    self.error = 'No file uploaded.'
                    return data

                # get file from request
                uploaded_file = request.FILES['file']
                # get filename from file
                filename = uploaded_file.name
                # get user id from request
                user_id = str(request.user.id)

                # create blob
                blob = Blob(filename=filename, user_id=user_id)
                # set blob file
                blob.blob = uploaded_file
                # save blob
                blob_api.insert(blob)
                # get download uri
                data = get_blob_download_uri(blob, request)
            except:
                self.error = 'An unexpected error occurred.'

        return data
Exemple #5
0
 def _format_document_context(self, request, document_list, user_can_read,
                              user_can_write, tab_selected):
     detailed_documents = []
     user = request.user
     for document in document_list:
         is_owner = str(document.user_id) == str(
             user.id) or self.administration
         document_context = {
             "can_read": user_can_read or is_owner,
             "can_write": user_can_write or is_owner,
         }
         if tab_selected == "data":
             document_context.update({
                 "data": document,
                 "is_owner": is_owner
             })
         elif tab_selected == "file":
             try:
                 username = user_api.get_user_by_id(
                     document.user_id).username
             except ObjectDoesNotExist:
                 username = "******"
             document_context.update({
                 "file":
                 document,
                 "url":
                 blob_utils.get_blob_download_uri(document, request),
                 "user":
                 username,
                 "date":
                 document.id.generation_time,
                 "is_owner":
                 is_owner,
             })
         detailed_documents.append(document_context)
     return detailed_documents
    def get(self, request, *args, **kwargs):
        """ Method GET

        Args:
            request:
            args:
            kwargs:

        Returns:
        """
        if self.administration:
            files = blob_api.get_all()
        else:
            files = blob_api.get_all_by_user_id(request.user.id)

        detailed_file = []
        for file in files:
            detailed_file.append({
                'user':
                user_api.get_user_by_id(file.user_id).username,
                'date':
                file.id.generation_time,
                'file':
                file,
                'url':
                blob_utils.get_blob_download_uri(file, request)
            })

        context = {
            'administration': self.administration,
            'number_total': len(files),
            'user_data': detailed_file,
            'document': dashboard_constants.FUNCTIONAL_OBJECT_ENUM.FILE,
            'template': dashboard_constants.DASHBOARD_FILES_TEMPLATE_TABLE,
            'menu': self.administration,
        }

        if self.administration:
            context.update(
                {'action_form': ActionForm([('1', 'Delete selected files')])})

        modals = [dashboard_constants.MODALS_COMMON_DELETE]

        assets = {
            "css":
            dashboard_constants.CSS_COMMON,
            "js": [{
                "path": 'core_dashboard_common_app/user/js/init.raw.js',
                "is_raw": True
            }, {
                "path": dashboard_constants.JS_COMMON_FUNCTION_DELETE,
                "is_raw": False
            }, {
                "path": dashboard_constants.JS_USER_SELECTED_ELEMENT,
                "is_raw": True
            }]
        }

        # Admin
        if self.administration:
            assets['js'].append({
                "path":
                'core_dashboard_common_app/common/js/init_pagination.js',
                "is_raw": False
            })
            assets['js'].append({
                "path": dashboard_constants.JS_ADMIN_ACTION_DASHBOARD,
                "is_raw": True
            })
            assets['js'].append({
                "path": dashboard_constants.JS_ADMIN_COUNT_CHECK,
                "is_raw": True
            })
            assets['js'].append({
                "path": dashboard_constants.JS_ADMIN_RESET_CHECKBOX,
                "is_raw": True
            })
            assets['js'].append({
                "path": dashboard_constants.JS_ADMIN_SELECT_ALL,
                "is_raw": True
            })
            assets['js'].append({
                "path": dashboard_constants.JS_ADMIN_SELETED_ELEMENT,
                "is_raw": False
            })
            assets['js'].append({
                "path": dashboard_constants.JS_ADMIN_INIT_MENU,
                "is_raw": False
            })

        return self.common_render(request,
                                  self.template,
                                  context=context,
                                  assets=assets,
                                  modals=modals)
    def get(self, request, *args, **kwargs):
        """Method GET

        Args:
            request:
            args:
            kwargs:

        Returns:
        """
        if self.administration:
            try:
                files = blob_api.get_all(request.user)

            except AccessControlError as ace:
                files = blob_api.get_none()
        else:
            files = blob_api.get_all_by_user(request.user)

        # Paginator
        page = request.GET.get("page", 1)
        results_paginator = ResultsPaginator.get_results(
            files, page, settings.FILE_PER_PAGE_PAGINATION
        )
        detailed_file = []
        for file in results_paginator:
            try:
                username = user_api.get_user_by_id(file.user_id).username
            except ObjectDoesNotExist:
                username = "******"
            detailed_file.append(
                {
                    "user": username,
                    "date": file.id.generation_time,
                    "file": file,
                    "url": blob_utils.get_blob_download_uri(file, request),
                    "can_change_workspace": check_if_workspace_can_be_changed(file),
                    "is_owner": True,
                }
            )

        # Add user_form for change owner
        user_form = UserForm(request.user)
        context = {
            "administration": self.administration,
            "number_total": files.count(),
            "user_data": detailed_file,
            "user_form": user_form,
            "document": dashboard_constants.FUNCTIONAL_OBJECT_ENUM.FILE.value,
            "template": dashboard_constants.DASHBOARD_FILES_TEMPLATE_TABLE,
            "menu": self.administration,
            "share_pid_button": "core_linked_records_app" in settings.INSTALLED_APPS,
            "pagination": _get_pagination_document(
                page,
                results_paginator,
                files.count(),
                settings.FILE_PER_PAGE_PAGINATION,
            ),
        }

        if self.administration:
            context.update(
                {
                    "action_form": ActionForm(
                        [
                            ("1", "Delete selected files"),
                            ("2", "Change owner of selected files"),
                        ]
                    )
                }
            )

        modals = [
            "core_main_app/user/workspaces/list/modals/assign_workspace.html",
            dashboard_constants.MODALS_COMMON_DELETE,
            dashboard_constants.MODALS_COMMON_CHANGE_OWNER,
        ]

        assets = {
            "css": dashboard_constants.CSS_COMMON,
            "js": [
                {
                    "path": "core_dashboard_common_app/user/js/init.raw.js",
                    "is_raw": True,
                },
                {
                    "path": dashboard_constants.JS_COMMON_FUNCTION_DELETE,
                    "is_raw": False,
                },
                {"path": dashboard_constants.JS_USER_SELECTED_ELEMENT, "is_raw": True},
                {
                    "path": "core_main_app/user/js/workspaces/list/modals/assign_workspace.js",
                    "is_raw": False,
                },
                {
                    "path": "core_main_app/user/js/workspaces/list/modals/assign_blob_workspace.raw.js",
                    "is_raw": True,
                },
                {
                    "path": dashboard_constants.JS_COMMON_FUNCTION_CHANGE_OWNER,
                    "is_raw": False,
                },
                {
                    "path": "core_dashboard_common_app/common/js/init_pagination.js",
                    "is_raw": False,
                },
            ],
        }

        if "core_file_preview_app" in INSTALLED_APPS:
            assets["js"].extend(
                [
                    {
                        "path": "core_file_preview_app/user/js/file_preview.js",
                        "is_raw": False,
                    }
                ]
            )
            assets["css"].append("core_file_preview_app/user/css/file_preview.css")
            modals.append("core_file_preview_app/user/file_preview_modal.html")

        if context["share_pid_button"]:
            modals.append("core_linked_records_app/user/sharing/data_detail/modal.html")

            assets["js"] += [
                {
                    "path": "core_main_app/user/js/sharing_modal.js",
                    "is_raw": False,
                },
                {
                    "path": "core_linked_records_app/user/js/sharing/common_list.js",
                    "is_raw": False,
                },
                {
                    "path": "core_linked_records_app/user/js/sharing/blob_list.js",
                    "is_raw": False,
                },
            ]

        # Admin
        if self.administration:
            assets["js"].append(
                {
                    "path": "core_dashboard_common_app/common/js/init_pagination.js",
                    "is_raw": False,
                }
            )
            assets["js"].append(
                {"path": dashboard_constants.JS_ADMIN_ACTION_DASHBOARD, "is_raw": True}
            )
            assets["js"].append(
                {"path": dashboard_constants.JS_ADMIN_COUNT_CHECK, "is_raw": True}
            )
            assets["js"].append(
                {"path": dashboard_constants.JS_ADMIN_RESET_CHECKBOX, "is_raw": True}
            )
            assets["js"].append(
                {"path": dashboard_constants.JS_ADMIN_SELECT_ALL, "is_raw": True}
            )
            assets["js"].append(
                {"path": dashboard_constants.JS_ADMIN_SELETED_ELEMENT, "is_raw": False}
            )
            assets["js"].append(
                {"path": dashboard_constants.JS_ADMIN_INIT_MENU, "is_raw": False}
            )

        return self.common_render(
            request, self.template, context=context, assets=assets, modals=modals
        )