def delete_wiki(request): s3 = S3Storage(AWS_BUCKET_ORG_WIKI) response_data = {} if request.method == 'POST': key_name = request.POST['key_name'] or None if key_name and s3.is_file_exist(key_name): s3.delete_file(key_name) return Response(data=response_data, status=status.HTTP_200_OK) return Response(data=response_message(message='Invalid key name'), status=status.HTTP_400_BAD_REQUEST) return Response(data=response_message(code=405), status=status.HTTP_405_METHOD_NOT_ALLOWED)
def create_update_permission_group(request, pk=None): """ :param request: required fields: list of permission IDs-> permissions, string -> permission_name :return: response with HTTP status code """ if request.method == "POST" or request.method == "PUT": response_data = {} permission_list = [int(i) for i in request.POST.getlist("permissions[]")] if pk is None: form = PermissionGroupForm(request.POST) if not form.is_valid(): return Response(data=form.errors.as_data(), status=status.HTTP_400_BAD_REQUEST) PermissionGroup.permission_groups.create_permission_group(permission_list, **form.cleaned_data) elif pk: permission_group = get_object_or_404(PermissionGroup, pk=pk) form = PermissionGroupForm(request.POST, instance=permission_group) if not form.is_valid(): return Response(data=form.errors.as_data(), status=status.HTTP_400_BAD_REQUEST) form.save() if permission_list: PermissionGroupManager.update_permissions(permission_group, permission_list) return Response(data=response_data, status=status.HTTP_201_CREATED) elif request.method == "DELETE" and pk: # FIXME : de-active only for now, better to delete with all relations ? permission_group = get_object_or_404(PermissionGroup, pk=pk) permission_group.is_active = False permission_group.save() return Response(data=response_message(code=405), status=status.HTTP_405_METHOD_NOT_ALLOWED)
def create_update_permission_group(request, pk=None): """ :param request: required fields: list of permission IDs-> permissions, string -> permission_name :return: response with HTTP status code """ if request.method == 'POST' or request.method == 'PUT': response_data = {} permission_list = [int(i) for i in request.POST.getlist('permissions[]')] if pk is None: form = PermissionGroupForm(request.POST) if not form.is_valid(): return Response(data=form.errors.as_data(), status=status.HTTP_400_BAD_REQUEST) PermissionGroup.permission_groups.create_permission_group(permission_list, **form.cleaned_data) elif pk: permission_group = get_object_or_404(PermissionGroup, pk=pk) form = PermissionGroupForm(request.POST, instance=permission_group) if not form.is_valid(): return Response(data=form.errors.as_data(), status=status.HTTP_400_BAD_REQUEST) form.save() if permission_list: PermissionGroupManager.update_permissions(permission_group, permission_list) return Response(data=response_data, status=status.HTTP_201_CREATED) elif request.method == 'DELETE' and pk: # FIXME : de-active only for now, better to delete with all relations ? permission_group = get_object_or_404(PermissionGroup, pk=pk) permission_group.is_active = False permission_group.save() return Response(data=response_message(code=405), status=status.HTTP_405_METHOD_NOT_ALLOWED)
def upload_image(request): # FIXME : update key path and bucket name s3 = S3Storage(AWS_BUCKET_ORG_WIKI) response_data = {} if request.method == 'POST': form = ImageFileForm(request.POST, request.FILES) if not form.is_valid(): return Response(data=form.errors.as_data(), status=status.HTTP_400_BAD_REQUEST) key_prefix = TEST_S3_KEY_PREFIX s3_key = s3.upload_image(request.FILES['file'], key_prefix) return Response(data={'s3_key': s3_key}, status=status.HTTP_201_CREATED) return Response(data=response_message(code=405), status=status.HTTP_405_METHOD_NOT_ALLOWED)
def get_items(request): s3 = S3Storage(AWS_BUCKET_ORG_WIKI) response_data = {} if request.method == 'POST': form = GetKeysForm(request.data) if form.is_valid(): key_prefix = form.cleaned_data['key_name'] or '' key_spec = form.cleaned_data['spec'] or None key_suffix = form.cleaned_data['suffix'] or '/' key_marker = form.cleaned_data['marker'] or '' response_data['result_list'] = s3.get_sub_keys_with_spec(key_prefix, key_spec, key_suffix, key_marker) return Response(data=response_data, status=status.HTTP_200_OK) return Response(data=form.errors.as_data(), status=status.HTTP_400_BAD_REQUEST) return Response(data=response_message(code=405), status=status.HTTP_405_METHOD_NOT_ALLOWED)
def upload_wiki(request): s3 = S3Storage(AWS_BUCKET_ORG_WIKI) response_data = {} if request.method == 'POST': form = WikiFileForm(request.POST) if form.is_valid(): old_key_name = form.cleaned_data['old_path'] or None new_key_name = form.cleaned_data['new_path'] page = form.cleaned_data['page'] s3_key = s3.upload_wiki(page, new_key_name, old_key_name) if s3_key: return Response(data={'s3_key': s3_key}, status=status.HTTP_201_CREATED) return Response(data=form.errors.as_data(), status=status.HTTP_400_BAD_REQUEST) return Response(data=response_message(code=405), status=status.HTTP_405_METHOD_NOT_ALLOWED)
def create_update_feature(request, pk=None): if request.method == "POST" or request.method == "PUT": response_data = {} if pk is None: form = FeatureForm(request.POST) if not form.is_valid(): return Response(data=form.errors.as_data(), status=status.HTTP_400_BAD_REQUEST) Feature.features.create_feature(**form.cleaned_data) elif pk: feature = get_object_or_404(Feature, pk=pk) form = FeatureForm(request.POST, instance=feature) if not form.is_valid(): return Response(data=form.errors.as_data(), status=status.HTTP_400_BAD_REQUEST) form.save() return Response(data=response_data, status=status.HTTP_201_CREATED) return Response(data=response_message(code=405), status=status.HTTP_405_METHOD_NOT_ALLOWED)
def create_update_feature(request, pk=None): if request.method == 'POST' or request.method == 'PUT': response_data = {} if pk is None: form = FeatureForm(request.POST) if not form.is_valid(): return Response(data=form.errors.as_data(), status=status.HTTP_400_BAD_REQUEST) Feature.features.create_feature(**form.cleaned_data) elif pk: feature = get_object_or_404(Feature, pk=pk) form = FeatureForm(request.POST, instance=feature) if not form.is_valid(): return Response(data=form.errors.as_data(), status=status.HTTP_400_BAD_REQUEST) form.save() return Response(data=response_data, status=status.HTTP_201_CREATED) return Response(data=response_message(code=405), status=status.HTTP_405_METHOD_NOT_ALLOWED)
def get_items(request): s3 = S3Storage(AWS_BUCKET_ORG_WIKI) response_data = {} if request.method == 'POST': form = GetKeysForm(request.data) if form.is_valid(): key_prefix = form.cleaned_data['key_name'] or '' key_spec = form.cleaned_data['spec'] or None key_suffix = form.cleaned_data['suffix'] or '/' key_marker = form.cleaned_data['marker'] or '' response_data['result_list'] = s3.get_sub_keys_with_spec( key_prefix, key_spec, key_suffix, key_marker) return Response(data=response_data, status=status.HTTP_200_OK) return Response(data=form.errors.as_data(), status=status.HTTP_400_BAD_REQUEST) return Response(data=response_message(code=405), status=status.HTTP_405_METHOD_NOT_ALLOWED)