Example #1
0
    def test_upload_large(self):
        """ should support uploading large files """
        temp_file = tempfile.NamedTemporaryFile()
        temp_file_name = temp_file.name
        temp_file.write(b"BMJ\xB9Y\x00\x00\x00\x00\x00\x8A\x00\x00\x00|\x00\x00\x00x\x05\x00\x00x\x05\x00\x00\x01\
\x00\x18\x00\x00\x00\x00\x00\xC0\xB8Y\x00a\x0F\x00\x00a\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\x00\
\x00\xFF\x00\x00\xFF\x00\x00\x00\x00\x00\x00\xFFBGRs\x00\x00\x00\x00\x00\x00\x00\x00T\xB8\x1E\xFC\x00\x00\x00\x00\
\x00\x00\x00\x00fff\xFC\x00\x00\x00\x00\x00\x00\x00\x00\xC4\xF5(\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")
        for i in range(0, 588000):
            temp_file.write(b"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF")

        temp_file.flush()
        self.assertEqual(5880138, os.path.getsize(temp_file_name))

        resource = uploader.upload_large(temp_file_name, chunk_size=5243000, tags=["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource["tags"], ["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource["resource_type"], "raw")

        resource2 = uploader.upload_large(temp_file_name, chunk_size=5243000, tags=["upload_large_tag", UNIQUE_TAG],
                                         resource_type="image")
        self.assertEqual(resource2["tags"], ["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource2["resource_type"], "image")
        self.assertEqual(resource2["width"], 1400)
        self.assertEqual(resource2["height"], 1400)

        resource3 = uploader.upload_large(temp_file_name, chunk_size=5880138, tags=["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource3["tags"], ["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource3["resource_type"], "raw")

        temp_file.close()
Example #2
0
    def test_upload_large(self):
        """ should support uploading large files """
        temp_file = tempfile.NamedTemporaryFile()
        temp_file_name = temp_file.name
        temp_file.write(b"BMJ\xB9Y\x00\x00\x00\x00\x00\x8A\x00\x00\x00|\x00\x00\x00x\x05\x00\x00x\x05\x00\x00\x01\
\x00\x18\x00\x00\x00\x00\x00\xC0\xB8Y\x00a\x0F\x00\x00a\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\x00\
\x00\xFF\x00\x00\xFF\x00\x00\x00\x00\x00\x00\xFFBGRs\x00\x00\x00\x00\x00\x00\x00\x00T\xB8\x1E\xFC\x00\x00\x00\x00\
\x00\x00\x00\x00fff\xFC\x00\x00\x00\x00\x00\x00\x00\x00\xC4\xF5(\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")
        for i in range(0, 588000):
            temp_file.write(b"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF")

        temp_file.flush()
        self.assertEqual(5880138, os.path.getsize(temp_file_name))

        resource = uploader.upload_large(temp_file_name, chunk_size=5243000, tags=["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource["tags"], ["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource["resource_type"], "raw")

        resource2 = uploader.upload_large(temp_file_name, chunk_size=5243000, tags=["upload_large_tag", UNIQUE_TAG],
                                         resource_type="image")
        self.assertEqual(resource2["tags"], ["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource2["resource_type"], "image")
        self.assertEqual(resource2["width"], 1400)
        self.assertEqual(resource2["height"], 1400)

        resource3 = uploader.upload_large(temp_file_name, chunk_size=5880138, tags=["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource3["tags"], ["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource3["resource_type"], "raw")

        temp_file.close()
Example #3
0
    def test_upload_large(self):
        """ should support uploading large files """
        filename = UNIQUE_ID + "_cld_upload_large"
        with tempfile.NamedTemporaryFile(prefix=filename, suffix='.bmp') as temp_file:
            populate_large_file(temp_file, LARGE_FILE_SIZE)
            temp_file_name = temp_file.name
            temp_file_filename = os.path.splitext(os.path.basename(temp_file_name))[0]

            self.assertEqual(LARGE_FILE_SIZE, os.path.getsize(temp_file_name))

            resource = uploader.upload_large(temp_file_name, chunk_size=LARGE_CHUNK_SIZE,
                                             tags=["upload_large_tag", UNIQUE_TAG])

            self.assertEqual(resource["tags"], ["upload_large_tag", UNIQUE_TAG])
            self.assertEqual(resource["resource_type"], "raw")
            self.assertEqual(resource["original_filename"], temp_file_filename)

            resource2 = uploader.upload_large(temp_file_name, chunk_size=LARGE_CHUNK_SIZE,
                                              tags=["upload_large_tag", UNIQUE_TAG], resource_type="image",
                                              use_filename=True, unique_filename=False, filename=filename)

            self.assertEqual(resource2["tags"], ["upload_large_tag", UNIQUE_TAG])
            self.assertEqual(resource2["resource_type"], "image")
            self.assertEqual(resource2["original_filename"], filename)
            self.assertEqual(resource2["original_filename"], resource2["public_id"])
            self.assertEqual(resource2["width"], LARGE_FILE_WIDTH)
            self.assertEqual(resource2["height"], LARGE_FILE_HEIGHT)

            resource3 = uploader.upload_large(temp_file_name, chunk_size=LARGE_FILE_SIZE,
                                              tags=["upload_large_tag", UNIQUE_TAG])

            self.assertEqual(resource3["tags"], ["upload_large_tag", UNIQUE_TAG])
            self.assertEqual(resource3["resource_type"], "raw")
Example #4
0
    def test_upload_large(self):
        """ should support uploading large files """
        with tempfile.NamedTemporaryFile() as temp_file:
            populate_large_file(temp_file, LARGE_FILE_SIZE)
            temp_file_name = temp_file.name

            self.assertEqual(LARGE_FILE_SIZE, os.path.getsize(temp_file_name))

            resource = uploader.upload_large(temp_file_name, chunk_size=LARGE_CHUNK_SIZE,
                                             tags=["upload_large_tag", UNIQUE_TAG])

            self.assertEqual(resource["tags"], ["upload_large_tag", UNIQUE_TAG])
            self.assertEqual(resource["resource_type"], "raw")

            resource2 = uploader.upload_large(temp_file_name, chunk_size=LARGE_CHUNK_SIZE,
                                              tags=["upload_large_tag", UNIQUE_TAG], resource_type="image")

            self.assertEqual(resource2["tags"], ["upload_large_tag", UNIQUE_TAG])
            self.assertEqual(resource2["resource_type"], "image")
            self.assertEqual(resource2["width"], LARGE_FILE_WIDTH)
            self.assertEqual(resource2["height"], LARGE_FILE_HEIGHT)

            resource3 = uploader.upload_large(temp_file_name, chunk_size=LARGE_FILE_SIZE,
                                              tags=["upload_large_tag", UNIQUE_TAG])

            self.assertEqual(resource3["tags"], ["upload_large_tag", UNIQUE_TAG])
            self.assertEqual(resource3["resource_type"], "raw")
Example #5
0
    def test_upload_large(self):
        """ should support uploading large files """
        temp_file = tempfile.NamedTemporaryFile()
        temp_file_name = temp_file.name
        temp_file.write(
            b"BMJ\xB9Y\x00\x00\x00\x00\x00\x8A\x00\x00\x00|\x00\x00\x00x\x05\x00\x00x\x05\x00\x00\x01\
\x00\x18\x00\x00\x00\x00\x00\xC0\xB8Y\x00a\x0F\x00\x00a\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\x00\
\x00\xFF\x00\x00\xFF\x00\x00\x00\x00\x00\x00\xFFBGRs\x00\x00\x00\x00\x00\x00\x00\x00T\xB8\x1E\xFC\x00\x00\x00\x00\
\x00\x00\x00\x00fff\xFC\x00\x00\x00\x00\x00\x00\x00\x00\xC4\xF5(\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")
        for i in range(0, 588000):
            temp_file.write(b"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF")

        temp_file.flush()
        self.assertEqual(5880138, os.path.getsize(temp_file_name))

        resource = uploader.upload_large(temp_file_name,
                                         chunk_size=5243000,
                                         tags=["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource["tags"], ["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource["resource_type"], "raw")

        resource2 = uploader.upload_large(
            temp_file_name,
            chunk_size=5243000,
            tags=["upload_large_tag", UNIQUE_TAG],
            resource_type="image")
        self.assertEqual(resource2["tags"], ["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource2["resource_type"], "image")
        self.assertEqual(resource2["width"], 1400)
        self.assertEqual(resource2["height"], 1400)

        resource3 = uploader.upload_large(
            temp_file_name,
            chunk_size=5880138,
            tags=["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource3["tags"], ["upload_large_tag", UNIQUE_TAG])
        self.assertEqual(resource3["resource_type"], "raw")

        # should allow fallback of upload large with remote url to regular upload
        resource4 = uploader.upload_large(REMOTE_TEST_IMAGE, tags=[UNIQUE_TAG])
        self.assertEqual(resource4["width"], TEST_IMAGE_WIDTH)
        self.assertEqual(resource4["height"], TEST_IMAGE_HEIGHT)
        expected_signature = utils.api_sign_request(
            dict(public_id=resource4["public_id"],
                 version=resource4["version"]),
            cloudinary.config().api_secret)
        self.assertEqual(resource4["signature"], expected_signature)

        temp_file.close()
Example #6
0
    def test_upload_large(self):
        """ should support uploading large files """
        filename = UNIQUE_ID + "_cld_upload_large"
        with tempfile.NamedTemporaryFile(prefix=filename,
                                         suffix='.bmp') as temp_file:
            populate_large_file(temp_file, LARGE_FILE_SIZE)
            temp_file_name = temp_file.name
            temp_file_filename = os.path.splitext(
                os.path.basename(temp_file_name))[0]

            self.assertEqual(LARGE_FILE_SIZE, os.path.getsize(temp_file_name))

            resource = uploader.upload_large(
                temp_file_name,
                chunk_size=LARGE_CHUNK_SIZE,
                tags=["upload_large_tag", UNIQUE_TAG])

            self.assertEqual(resource["tags"],
                             ["upload_large_tag", UNIQUE_TAG])
            self.assertEqual(resource["resource_type"], "raw")
            self.assertEqual(resource["original_filename"], temp_file_filename)

            resource2 = uploader.upload_large(
                temp_file_name,
                chunk_size=LARGE_CHUNK_SIZE,
                tags=["upload_large_tag", UNIQUE_TAG],
                resource_type="image",
                use_filename=True,
                unique_filename=False,
                filename=filename)

            self.assertEqual(resource2["tags"],
                             ["upload_large_tag", UNIQUE_TAG])
            self.assertEqual(resource2["resource_type"], "image")
            self.assertEqual(resource2["original_filename"], filename)
            self.assertEqual(resource2["original_filename"],
                             resource2["public_id"])
            self.assertEqual(resource2["width"], LARGE_FILE_WIDTH)
            self.assertEqual(resource2["height"], LARGE_FILE_HEIGHT)

            resource3 = uploader.upload_large(
                temp_file_name,
                chunk_size=LARGE_FILE_SIZE,
                tags=["upload_large_tag", UNIQUE_TAG])

            self.assertEqual(resource3["tags"],
                             ["upload_large_tag", UNIQUE_TAG])
            self.assertEqual(resource3["resource_type"], "raw")
Example #7
0
    def form_valid(self, form):
        if self.request.user.is_authenticated:
            kwargs = self.get_form_kwargs()
            tags_str = kwargs['data'].get('tags')
            tags = [x.strip('#') for x in tags_str.split()]
            existed_tags = {
                tag.name: tag.id
                for tag in Tag.objects.filter(name__in=tags)
            }
            tags_to_create = [tag for tag in tags if tag not in existed_tags]
            tags_ids = list(existed_tags.values())
            for tag in tags_to_create:
                created_tag = Tag.objects.create(name=tag)
                tags_ids.append(created_tag.id)

            response = uploader.upload_large(kwargs.get('files')['video'])
            video = Video(title=kwargs['data'].get('title'),
                          url=response['url'])
            video.save()
            video_id = video.id

            for tags_id in tags_ids:
                VideoTag.objects.create(tag_id=tags_id, video_id=video_id)

            return HttpResponseRedirect(reverse('main_page'))
        else:
            return HttpResponseRedirect(reverse('auth'))
Example #8
0
    def test_upload_large_file_io(self):
        """Should support uploading large streams"""
        with io.BytesIO() as temp_file:
            populate_large_file(temp_file, LARGE_FILE_SIZE)
            resource = uploader.upload_large(temp_file, chunk_size=LARGE_CHUNK_SIZE,
                                             tags=["upload_large_tag", UNIQUE_TAG], resource_type="image")

            self.assertEqual(resource["tags"], ["upload_large_tag", UNIQUE_TAG])
            self.assertEqual(resource["resource_type"], "image")
            self.assertEqual(resource["width"], LARGE_FILE_WIDTH)
            self.assertEqual(resource["height"], LARGE_FILE_HEIGHT)
Example #9
0
    def test_upload_large_url(self):
        """Should allow fallback of upload large with remote url to regular upload"""
        resource4 = uploader.upload_large(REMOTE_TEST_IMAGE, tags=[UNIQUE_TAG])

        self.assertEqual(resource4["width"], TEST_IMAGE_WIDTH)
        self.assertEqual(resource4["height"], TEST_IMAGE_HEIGHT)

        expected_signature = utils.api_sign_request(
            dict(public_id=resource4["public_id"], version=resource4["version"]), cloudinary.config().api_secret)

        self.assertEqual(resource4["signature"], expected_signature)
Example #10
0
    def test_upload_large_file_io(self):
        """Should support uploading large streams"""
        with io.BytesIO() as temp_file:
            populate_large_file(temp_file, LARGE_FILE_SIZE)
            resource = uploader.upload_large(temp_file, chunk_size=LARGE_CHUNK_SIZE,
                                             tags=["upload_large_tag", UNIQUE_TAG], resource_type="image")

            self.assertEqual(resource["tags"], ["upload_large_tag", UNIQUE_TAG])
            self.assertEqual(resource["resource_type"], "image")
            self.assertEqual(resource["width"], LARGE_FILE_WIDTH)
            self.assertEqual(resource["height"], LARGE_FILE_HEIGHT)
Example #11
0
    def test_upload_large_url(self):
        """Should allow fallback of upload large with remote url to regular upload"""
        resource4 = uploader.upload_large(REMOTE_TEST_IMAGE, tags=[UNIQUE_TAG])

        self.assertEqual(resource4["width"], TEST_IMAGE_WIDTH)
        self.assertEqual(resource4["height"], TEST_IMAGE_HEIGHT)

        expected_signature = utils.api_sign_request(
            dict(public_id=resource4["public_id"], version=resource4["version"]), cloudinary.config().api_secret)

        self.assertEqual(resource4["signature"], expected_signature)
Example #12
0
 def test_upload_large(self):
     """ should uploading large raw files """
     uploader.upload_large("tests/docx.docx")
Example #13
0
 def test_upload_large(self):
     """ should uploading large raw files """
     resource = uploader.upload_large("tests/docx.docx",
                                      tags="upload_large_tag")
     self.assertEqual(["upload_large_tag"], resource["tags"])
Example #14
0
 def test_upload_large(self):
     """ should uploading large raw files """ 
     uploader.upload_large("tests/docx.docx")  
Example #15
0
 def test_upload_large(self):
     """ should uploading large raw files """ 
     resource = uploader.upload_large("tests/docx.docx", tags="upload_large_tag")
     self.assertEqual(["upload_large_tag"], resource["tags"])
Example #16
0
def upload_image():


    try:
        text = request.form["text"]

        if text:
            t=[text,"text"]
            data = text
            j_data=json.dumps({"data":data,"type":"text"})
            headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}
            r = requests.post(url, data=j_data, headers=headers)
            #print(r.text.split())
            if r.text.split()[0]=="true":

                if len(contents)==0 or contents[0]!=t:
                    contents.insert(0,t)
            else:
                flash("Invalid Text")
                return render_template("index.html",content=contents)

        else:
            file = request.files['files']
            filename = secure_filename(file.filename)
            path = os.path.join(upload_folder, filename)
            file.save(path)
            kind = filetype.guess(path)
            type,extension = str(kind.mime).split("/")
            #print(path)
            p=[path,type]
            #print(p)
            if type=="image":
                img=up.upload(path,cloud_name='drlf6gntz',api_key='894749617857176',api_secret='Qp-ckIp4k_xIresVZF7Gms0WrPY')
                img_url=img["url"]
                j_data = json.dumps({"data":img_url,"type":"image"})
                headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}
                r = requests.post(url, data=j_data, headers=headers)
                #print(r.text.split())
                if r.text.split()[0]=="true":
                    if len(contents)==0 or contents[0]!=p:
                        contents.insert(0,p)
                else:
                    flash("Invalid Image")
                    return render_template("index.html",content=contents)


            elif type=="audio":
                audio=up.upload(path,cloud_name='drlf6gntz',api_key='894749617857176',api_secret='Qp-ckIp4k_xIresVZF7Gms0WrPY',resource_type="raw")
                audio_url=audio["url"]
                #print(audio_url)
                j_data = json.dumps({"data":audio_url,"type":"audio"})
                headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}
                r = requests.post(url, data=j_data, headers=headers)
                #print(r.text.split())
                if r.text.split()[0]=="true":
                    if len(contents)==0 or contents[0]!=p:
                        contents.insert(0,p)
                else:
                    flash("Invalid Audio")
                    return render_template("index.html",content=contents)
            elif type=="video":
                vid=up.upload_large(path,cloud_name='drlf6gntz',api_key='894749617857176',api_secret='Qp-ckIp4k_xIresVZF7Gms0WrPY')
                vid_url=vid["url"]
                #print(vid_url)
                j_data = json.dumps({"data":vid_url,"type":"video"})
                headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'}
                r = requests.post(url, data=j_data, headers=headers)
                if r.text.split()[0]=="true":
                    if len(contents)==0 or contents[0]!=p:
                        contents.insert(0,p)
                else:
                    flash("Invalid Video")
                    return render_template("index.html",content=contents)

        return render_template("index.html",content=contents)
    except Exception as e:
        print(e)
        return render_template('index.html',content=contents)