12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import datetime
- import os
- from django.http import HttpResponse
- from rest_framework.response import Response
- from rest_framework.views import APIView
- import logging
- from PrivacyRetrieval.settings import PROJECT_ROOT, HTTP_HEAD
- from apps.project.models import RetrievalProject
- logger = logging.getLogger('django')
- class ProjectListView(APIView):
- # create retrievalProject
- @staticmethod
- def post(request, *args, **kwargs):
- title = request.POST.get('title')
- project_type = request.POST.get('type')
- file = request.FILES.get('project')
- if not title:
- logger.error("项目名称不能为空")
- return HttpResponse(status=500, content='项目名称不能为空')
- if not project_type:
- logger.error("项目类型不能为空")
- return HttpResponse(status=500, content='项目类型不能为空')
- if not file:
- logger.error("项目上传失败")
- return HttpResponse(status=500, content='项目上传失败')
- create_time = update_time = datetime.datetime.now()
- if not RetrievalProject.objects.last():
- id_ = 1
- else:
- id_ = RetrievalProject.objects.order_by('id').last().id + 1
- file_dir = PROJECT_ROOT + str(id_) + "/" + str(create_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 = RetrievalProject.objects.create(title=title, type=project_type, project_file=file_path,
- create_time=create_time, update_time=update_time)
- return Response({
- 'id': project.id,
- 'title': project.title,
- 'type': project.type,
- 'project_name': file.name,
- 'project_url': HTTP_HEAD + project.project_file,
- 'create_time': create_time,
- 'update_time': update_time
- })
- # get project list
- @staticmethod
- def get(request, *args, **kwargs):
- title = request.GET.get('title')
- project_type = request.GET.get('type')
- sort = request.GET.get('sort')
- project_all = RetrievalProject.objects.order_by('id').filter(delete=False)
- if title:
- project_all = project_all.filter(title__contains=title)
- if project_type:
- project_all = project_all.filter(type__contains=project_type)
- if sort:
- project_all = project_all.order_by(sort)
- if not project_all:
- return Response([])
- info = []
- for project in project_all.all():
- info.append({
- 'id':project.id,
- 'title': project.title,
- 'type': project.type,
- 'create_time': project.create_time,
- 'update_time': project.update_time
- })
- return Response(info)
|