123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import datetime
- import os
- from django.http import HttpResponse
- from rest_framework.response import Response
- from rest_framework.views import APIView
- from PrivacyRetrieval.settings import PROJECT_ROOT, HTTP_HEAD
- from apps.project.models import RetrievalProject
- import logging
- logger = logging.getLogger('django')
- class ProjectView(APIView):
- # get detail of project
- @staticmethod
- def get(request, project_id, *args, **kwargs):
- project = RetrievalProject.objects.filter(id=project_id, delete=False)
- if not project:
- logger.error("项目已删除或不存在")
- return HttpResponse(status=500, content='项目已删除或不存在')
- project = project[0]
- task_set = project.retrievaltask_set.filter(delete=False)
- task_info = []
- if task_set:
- for task in task_set:
- task_info.append({
- 'id': task.id,
- 'title': task.title,
- 'type': task.type,
- 'state': task.state,
- 'description': task.description
- })
- return Response({
- 'id': project.id,
- 'title': project.title,
- 'type': project.type,
- 'project_name': project.project_file.split('/')[-1],
- 'project_url': HTTP_HEAD + project.project_file,
- 'task_info': task_info
- })
- # edit project
- @staticmethod
- def put(request, project_id, *args, **kwargs):
- title = request.POST.get('title')
- project_type = request.POST.get('type')
- file = request.FILES.get('project')
- project = RetrievalProject.objects.filter(id=project_id, delete=False)
- if not project:
- logger.error("项目已删除或不存在")
- return HttpResponse(status=500, content='项目已删除或不存在')
- project = project[0]
- if not title:
- logger.error("项目名称不能为空")
- return HttpResponse(status=500, content='项目名称不能为空')
- if not project_type:
- logger.error("项目类型不能为空")
- return HttpResponse(status=500, content='项目类型不能为空')
- update_time = datetime.datetime.now()
- if file:
- file_dir = PROJECT_ROOT + str(project.id) + "/" + str(update_time)
- if not os.path.exists(file_dir):
- os.makedirs(file_dir)
- file_path = file_dir + "/" + file.name
- with open(file_path, 'wb') as f:
- f.write(file.read())
- f.close()
- project.project_file = file_path
- project.save()
- project.title = title
- project.type = project_type
- project.update_time = update_time
- project.save()
- return HttpResponse(status=200, content='编辑已保存')
- # delete project
- @staticmethod
- def delete(request, project_id, *args, **kwargs):
- project = RetrievalProject.objects.filter(id=project_id, delete=False)
- if not project:
- logger.error("项目已删除或不存在")
- return HttpResponse(status=500, content='项目已删除或不存在')
- project = project[0]
- project.delete = True
- project.save()
- task_set = project.retrievaltask_set.filter(delete=False)
- if task_set:
- for task in task_set:
- task.delete = True
- task.save()
- return HttpResponse(status=200, content='项目已删除')
|