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 )
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)
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
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 )