コード例 #1
0
ファイル: views.py プロジェクト: taikoa/wevolver-server
    def post(self, request):
        file_uploaded = request.FILES['file']
        project_part_id = request.POST['project_part']

        if not WALL_VAL.match(file_uploaded.name):
            response_data = {
                'status': 'ko',
                'message': 'The name of the file is not correct'
            }
        elif file_uploaded.content_type not in settings.SUPPORTED_FILES:
            response_data = {
                'status': 'ko',
                'message': 'You cannot upload this kind of file'
            }
        elif file_uploaded.size * 1.0 / 1048576 > settings.FILE_SIZE:
            response_data = {
                'status':
                'ko',
                'message':
                'You cannot upload a file bigger than %d MB' %
                settings.FILE_SIZE
            }
        else:
            project_part = ProjectPart.objects.get(pk=project_part_id)
            file_obj = File(created_user=request.user,
                            original_name=file_uploaded.name,
                            system_name=file_uploaded.name,
                            project_part=project_part)
            if os.path.exists(file_obj.get_file_path(True)):
                file_obj.set_original_name()
            with open(file_obj.get_file_path(True), 'wb+') as destination:
                for chunk in file_uploaded.chunks():
                    destination.write(chunk)

            if (file_obj.is_image()):
                file_obj.generate_thumbnail()
            file_obj.save()
            Activity.objects.set_activity('add', file_obj)

            if request.user.profile.drive_token and project_part.project.drive_id:
                drive_util = DriveUtil(request.user.profile.drive_token)
                if not project_part.drive_id:
                    project_part_folder = drive_util.get_project_part_folder(
                        request.user.profile.drive_folder, project_part)
                else:
                    project_part_folder = project_part.drive_id
                drive_util.insert_file(file_uploaded.name, 'description',
                                       project_part_folder,
                                       file_uploaded.content_type,
                                       file_obj.get_file_path(True))

            response_data = {'status': 'ok'}
        return HttpResponse(json.dumps(response_data),
                            mimetype='application/json')
コード例 #2
0
ファイル: views.py プロジェクト: bramgeenen/wevolver-server
    def post(self, request):
        file_uploaded = request.FILES["file"]
        project_part_id = request.POST["project_part"]

        if not WALL_VAL.match(file_uploaded.name):
            response_data = {"status": "ko", "message": "The name of the file is not correct"}
        elif file_uploaded.content_type not in settings.SUPPORTED_FILES:
            response_data = {"status": "ko", "message": "You cannot upload this kind of file"}
        elif file_uploaded.size * 1.0 / 1048576 > settings.FILE_SIZE:
            response_data = {
                "status": "ko",
                "message": "You cannot upload a file bigger than %d MB" % settings.FILE_SIZE,
            }
        else:
            project_part = ProjectPart.objects.get(pk=project_part_id)
            file_obj = File(
                created_user=request.user,
                original_name=file_uploaded.name,
                system_name=file_uploaded.name,
                project_part=project_part,
            )
            if os.path.exists(file_obj.get_file_path(True)):
                file_obj.set_original_name()
            with open(file_obj.get_file_path(True), "wb+") as destination:
                for chunk in file_uploaded.chunks():
                    destination.write(chunk)

            if file_obj.is_image():
                file_obj.generate_thumbnail()
            file_obj.save()
            Activity.objects.set_activity("add", file_obj)

            if request.user.profile.drive_token and project_part.project.drive_id:
                drive_util = DriveUtil(request.user.profile.drive_token)
                if not project_part.drive_id:
                    project_part_folder = drive_util.get_project_part_folder(
                        request.user.profile.drive_folder, project_part
                    )
                else:
                    project_part_folder = project_part.drive_id
                drive_util.insert_file(
                    file_uploaded.name,
                    "description",
                    project_part_folder,
                    file_uploaded.content_type,
                    file_obj.get_file_path(True),
                )

            response_data = {"status": "ok"}
        return HttpResponse(json.dumps(response_data), mimetype="application/json")