diff --git a/project/backend/api/urls.py b/project/backend/api/urls.py index 54007637..5cb5f0aa 100644 --- a/project/backend/api/urls.py +++ b/project/backend/api/urls.py @@ -17,6 +17,16 @@ path('get_cont/', get_contributor_from_id, name='get_cont'), path('get_user_workspaces/',get_workspaces,name='get_user_workspaces'), path('get_workspace/',get_workspace_from_id,name='get_workspace'), + path('delete_entry/',delete_entry,name='delete_entry'), + path('add_entry/',add_entry,name='add_entry'), + path('get_random_node_id/',get_random_node_id,name='get_random_node_id'), + path('create_workspace/',create_workspace,name='create_workspace'), + path('add_reference/',add_reference,name='add_reference'), + path('finalize_workspace/',finalize_workspace,name='finalize_workspace'), + path('delete_contributor/',delete_contributor,name='delete_contributor'), + path('delete_workspace/',delete_workspace,name='delete_workspace'), + path('delete_contributor/',delete_contributor,name='delete_contributor'), + path('delete_reference/', delete_reference, name='delete_reference'), path('send_collab_req/', send_collaboration_request, name='send_col_req'), path('update_req/', update_request_status, name='update_req'), path('send_rev_req/', send_review_request, name='send_rev_req'), diff --git a/project/backend/api/views.py b/project/backend/api/views.py index a7c77aed..879a81d4 100644 --- a/project/backend/api/views.py +++ b/project/backend/api/views.py @@ -11,6 +11,7 @@ from rest_framework import generics, status from django.contrib.postgres.search import SearchVector from database.models import * +import random # from nltk.corpus import wordnet as wn # import nltk @@ -350,6 +351,92 @@ def get_workspace_from_id(request): 'references':references, 'created_at':workspace.created_at, }, status=200) +def delete_entry(request): + id = int(request.GET.get("entry_id")) + entry = Entry.objects.filter(entry_id=id) + if entry.count() == 0: + return JsonResponse({'message': 'There is no entry with this id.'}, status=404) + entry.delete() +def edit_entry(request): + id = int(request.GET.get("entry_id")) + entry = Entry.objects.filter(entry_id=id) + content = (request.GET.get("content")) + entry.content = content +def delete_workspace(request): + id = int(request.GET.get("workspace_id")) + workspace = Workspace.objects.filter(workspace_id=id) + if workspace.count() == 0: + return JsonResponse({'message': 'There is no workspace with this id.'}, status=404) + workspace.delete() + +def delete_contributor(request): + id = int(request.GET.get("contributor_id")) + workspace_id = int(request.GET.get("workspace_id")) + workspace = Workspace.objects.filter(workspace_id=workspace_id) + contributor = Contributor.objects.filter(contributor_id=id) + if contributor.count() == 0: + return JsonResponse({'message': 'There is no contributor with this id.'}, status=404) + if workspace.count() == 0: + return JsonResponse({'message': 'There is no workspace with this id.'}, status=404) + contributor[0].workspaces.delete(workspace_id = workspace_id) + contributor.save() + +def delete_reference(request): + id = int(request.GET.get("workspace_id")) + node = int(request.GET.get("node_id")) + workspace = Workspace.objects.filter(workspace_id=id) + if workspace.count() == 0: + return JsonResponse({'message': 'There is no workspace with this id.'}, status=404) + workspace = workspace[0] + reference = workspace.references.all(node = node) + if workspace.count() == 0: + return JsonResponse({'message': 'There is no reference with this id.'}, status=404) + reference.delete() + +def finalize_workspace(request): + id = int(request.GET.get("workspace_id")) + workspace = Workspace.objects.filter(workspace_id=id) + if workspace.count() == 0: + return JsonResponse({'message': 'There is no workspace with this id.'}, status=404) + workspace.is_finalized = True + workspace.is_in_review = False + +def add_entry(request): + id = int(request.GET.get("workspace_id")) + content = request.GET.get("entry_content") + workspace = Workspace.objects.filter(workspace_id=id) + if workspace.count() == 0: + return JsonResponse({'message': 'There is no workspace with this id.'}, status=404) + entry = Entry.objects.create(content=content) + workspace.entries.add(entry[0]) ## + workspace.save() + +def add_reference(request): + id = int(request.GET.get("workspace_id")) + node_id = int(request.GET.get("node_id")) + workspace = Workspace.objects.filter(workspace_id=id) + node = Node.objects.filter(node_id=node_id) + if workspace.count() == 0: + return JsonResponse({'message': 'There is no workspace with this id.'}, status=404) + if node.count() == 0: + return JsonResponse({'message': 'There is no node with this id.'}, status=404) + workspace.references.add(node[0]) + workspace.save() + +def create_workspace(request): + title = request.GET.get("workspace_title") + workspace = Workspace.objects.create(workspace_title=title) + workspace.save() + +def get_random_node_id(request): + count = int(request.GET.get("count")) + node_ids = Node.node_id.all() + node_list = [] + for i in range(count): + while node_ids[index] not in node_list: + index = random.randint(0,len(node_ids)) + node_list.append(node_ids[index]) + return JsonResponse({'node_ids': node_list}, status=200) @api_view(['POST']) def send_collaboration_request(request): @@ -396,4 +483,5 @@ def send_review_request(request): if serializer.is_valid(): serializer.save() return Response(serializer.data, status=201) - return Response(serializer.errors, status=400) \ No newline at end of file + return Response(serializer.errors, status=400) +