Python library for Uploadcare.com
Project description
Simple file uploads for the web are of most importance for us at Uploadcare. Today, everyone is used to the routine of allowing users to upload their pics or attach resumes. The routine covers it all: installing image processing libraries, adjusting permissions, ensuring servers never go down, and enabling CDN. Features like uploading from Facebook or manual crop are weighty, hence rare. Our goal is to change the status quo.
This library consists of the Uploadcare API interface and a couple of Django goodies.
Simple as that, Uploadcare ImageField can be added to an existing Django project in just a couple of simple steps. This will enable your users to see the upload progress, pick files from Google Drive or Instagram, and edit a form while files are being uploaded asynchronously.
from django import forms
from django.db import models
from pyuploadcare.dj.models import ImageField
from pyuploadcare.dj.forms import FileWidget
class Candidate(models.Model):
photo = ImageField(blank=True, manual_crop="")
# optional. provide advanced widget options: https://uploadcare.com/documentation/widget/#configuration
class CandidateForm(forms.Form):
photo = ImageField(widget=FileWidget(attrs={
'data-cdn-base': 'https://cdn.super-candidates.com',
'data-image-shrink': '1024x1024',
}))
Features
Django widget with useful manual crop and multi-upload.
ucare console utility.
hosted assets (Kudos to Sławek Ehlert!).
Requirements
pyuploadcare requires Python 2.7, 3.4, 3.5 or 3.6.
If you’re using pyuploadcare with Django, check .travis.yml for supported Python-Django combinations.
Obsolete versions of Python and Django are officially not supported, but chances are everything still works. If you have to use those, modify tox.ini, test and run at your own risk ;) Or, you may use older versions of the library.
Installation
In order to install pyuploadcare, simply run:
$ pip install pyuploadcare
or, if you prefer it the old way:
$ easy_install pyuploadcare
Testing
Besides the Travis CI we use tox. In order to run tests just:
$ pip install tox
$ tox
Contributors
History
2.4.0
Change data format in ‘User-Agent’ request header.
2.3.1
Update default widget version to 3.x
Update bundled widget to version 3.2.3. See widget changelog.
2.3.0
Add support for Django versions 1.11 and ~2.0
Miscellaneous updates (version, year in a license file, tox configuration and etc.)
Drop official support for obsolete Python and Django versions. Chances are that everything still works. If you have to use those, modify tox.ini, run tests and use at your own risk ;) Or, you may use older versions of the library.
2.2.1
Add file.create_local_copy and file.create_remote_copy methods.
Add new make_public and pattern parameters to file.create_remote_copy method.
Add new store parameter to file.create_local_copy methods.
Update CDN link to the widget.
Use wildcard 2.x to always get the latest patch or minor version of widget version 2. See widget changelog.
Update bundled widget to version 2.10.3. See widget changelog.
2.1.0
Support auto storing in upload requests
Updated widget to version 2.10.0 (see widget changelog).
Drop support for Python 3.2
Simplify and reduce test matrix in .travis.yml
2.0.1
Fixed issue with missing ucare_cli package.
2.0
Added support for version 0.5 of REST API.
Updated widget to version 2.8.1 (see widget changelog).
Added the ucare list_groups command.
Removed deprecated entities.
NB: There are backward incompatible changes. For detailed information about the upgrade process see update to version 2.0.
1.3.6
Fixed ZeroDivision error when trying to sync files with no size
1.3.5
Added support of Django 1.9
Removed indication of Unicode strings from output of ucare
Fixed a group representation for ucare create_group command
Fixed error with ucare sync when trying to processing of not image files
1.3.4
Added storage operations
Added request_limit to ucare_cli
1.3.3
Expanded User-Agent
1.3.2
Added sync command to ucare_cli
Autogenerated documentation for ucare_cli
update widget to 2.5.5 (see widget changelog)
1.3.1
Default CDN base to https://ucarecdn.com
Allow changing CDN base via Django settings
update widget to 2.5.0 (see widget changelog)
1.3.0
API version was updated up to 0.4.
update widget to 2.4.0 (see widget changelog)
1.2.15
update widget to 2.3.1 (see widget changelog)
1.2.14
update widget to 1.5.5 (see widget changelog)
1.2.13
improve synchronous upload API
fix encoding issues with pip3
update widget to 1.5.4 (see widget changelog)
add AUTHORS.txt
1.2.12
add synchronous upload from URL method to File
UploadcareExceptions are __repr__’ed properly
update widget to 1.5.3 (see widget changelog)
1.2.11
fix “source” composition for copy requests
let configure default throttle retry count via conf.retry_throttled
1.2.10
handle responses for HEAD and OPTION requests
update widget to 1.4.6
1.2.9
compatibility with Django 1.7
1.2.8
update widget to 1.4.0
1.2.7
handle rest api throttling
1.2.6
update widget to 1.2.3
fixed compatibility with six library version 1.7.0 and above
1.2.5
fixed setup script
1.2.4
update widget to 1.0.1
fixed logging when response contains unicode chars
1.2.3
update widget to 0.17.1
1.2.2
add File.copy()
add data attribute to UploadcareException
update widget to 0.13.2
update pyuploadcare.dj.models.ImageField crop validation
1.2.1
https://ucarecdn.com/ URL was returned to serve widget’s assets.
1.2
CDN URL has been changed to http://www.ucarecdn.com/. Previous URL https://ucarecdn.com/ is depricated.
Widget was updated up to 0.10.1.
1.1
Widget was updated up to 0.10.
Default API version was updated up to 0.3.
Django settings were merged into UPLOADCARE dictionary.
Performance was improved by reusing requests’ session.
1.0.2
UnicodeDecodeError was fixed. This bug appears when request’s method param is unicode and requests.request() got files argument, e.g.:
>>> requests.request(u'post', u'http://httpbin.org/post',
... files={u'file': open('README.rst', 'rb')})
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 ...
1.0.1
Widget was updated up to 0.8.1.2.
It was invoking File.store(), FileGroup.store() methods on every model instance saving, e.g.:
photo.title = 'new title' photo.save()
Now it happens while saving by form, namely by calling your_model_form.is_valid(). There is other thing that can trigger storing – calling photo.full_clean() directly.
1.0
Python 3.2, 3.3 support were added.
File Group creating was added.
Methods per API field for File, FileGroup were added.
Deprecated things were deleted. This version is not backward compatible. For detailed information see https://pyuploadcare.readthedocs.org/en/v0.19/deprecated.html
0.19
Multiupload support was added.
argparse was added into setup.py requirements.
Documentation was added and published on https://pyuploadcare.readthedocs.org
0.18
Widget was updated up to 0.6.9.1.
0.17
ImageField was added. It provides uploading only image files. Moreover, you can activate manual crop, e.g. ImageField(manual_crop='2:3').
More appropriate exceptions were added.
Tests were separated from library and were restructured.
Widget was updated up to 0.6.7.
Issue of FileField’s blank, null attributes was fixed.
0.14
Replace accept header for old api version
0.13
Fix unicode issue on field render
0.12
Add new widget to pyuploadcare.dj
Remove old widget
Use https for all requests
0.11
Add cdn_base to Ucare.__init__
Get rid of api v.0.1 support
Add File.ensure_on_s3 and File.ensure_on_cdn helpers
Add File properties is_on_s3, is_removed, is_stored
Fix url construction
Add and correct waiting to upload and upload_from_url
0.10
Add console log handler to ucare
Add wait argument to ucare store and delete commands
Fix ucare arg handling
0.9
Add bunch of arguments to ucare upload and upload_via_url commands
Fix UploadedFile.wait()
0.8
Fix file storing for old API
Replaced Authentication header with Authorization
Log warnings found in HTTP headers
Replace old resizer with new CDN
Add verify_api_ssl, verify_upload_ssl options
Add custom HTTP headers to API and upload API requests
0.7
Added __version__
Added ‘User-Agent’ request header
Added ‘Accept’ request header
Added ucare config file parsing
Added pyuploadcare/tests.py
Replaced upload API
Replaced File.keep with File.store, File.keep is deprecated
File.store uses new PUT request
Added timeouts to File.store, File.delete
Added upload and upload_from_url to ucare
Added tests during setup
Replaced httplib with requests, support https (certificates for api requests are verified)
Added api_version arg to UploadCare, default is 0.2
0.6
Added ucare cli utility
Added PYUPLOADCARE_UPLOAD_BASE_URL setting
Added PYUPLOADCARE_WIDGET_URL
Updated widget assets to version 0.0.1
Made properties out of following pyuploadcare.file.File’s methods:
api_uri()
url()
filename()
Changed pyuploadcare.UploadCareException.__init__
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyuploadcare-2.4.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09fe885793a4ad338c8db43da1c45d99ec5142779f550f58e2277936f203b28b |
|
MD5 | 887c9985369ea059026e1dfd274c5f8d |
|
BLAKE2b-256 | 7a5e3439cd40e8ef2b0583b69a111b03d03b100c477c2db0e0534857415b7d18 |