File Upload widget with multiple file selection, drag&drop support, progress bars, validation and preview images, audio and video for jQuery UI.
@@ -206,34 +206,34 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
diff --git a/fileupload/templatetags/upload_tags.py b/fileupload/templatetags/upload_tags.py
index d492e0b..dd667e4 100644
--- a/fileupload/templatetags/upload_tags.py
+++ b/fileupload/templatetags/upload_tags.py
@@ -1,10 +1,11 @@
from django import template
+from django.utils.safestring import mark_safe
register = template.Library()
@register.simple_tag
def upload_js():
- return """
+ return mark_safe("""
-"""
+""")
diff --git a/fileupload/urls.py b/fileupload/urls.py
index dbbcbca..1dbfa7b 100644
--- a/fileupload/urls.py
+++ b/fileupload/urls.py
@@ -1,17 +1,17 @@
# encoding: utf-8
-from django.conf.urls import patterns, url
+from django.urls import path
from fileupload.views import (
BasicVersionCreateView, BasicPlusVersionCreateView,
jQueryVersionCreateView, AngularVersionCreateView,
PictureCreateView, PictureDeleteView, PictureListView,
)
-urlpatterns = patterns('',
- url(r'^basic/$', BasicVersionCreateView.as_view(), name='upload-basic'),
- url(r'^basic/plus/$', BasicPlusVersionCreateView.as_view(), name='upload-basic-plus'),
- url(r'^new/$', PictureCreateView.as_view(), name='upload-new'),
- url(r'^angular/$', AngularVersionCreateView.as_view(), name='upload-angular'),
- url(r'^jquery-ui/$', jQueryVersionCreateView.as_view(), name='upload-jquery'),
- url(r'^delete/(?P\d+)$', PictureDeleteView.as_view(), name='upload-delete'),
- url(r'^view/$', PictureListView.as_view(), name='upload-view'),
-)
+urlpatterns = [
+ path('basic/', BasicVersionCreateView.as_view(), name='upload-basic'),
+ path('basic/plus/', BasicPlusVersionCreateView.as_view(), name='upload-basic-plus'),
+ path('new/', PictureCreateView.as_view(), name='upload-new'),
+ path('angular/', AngularVersionCreateView.as_view(), name='upload-angular'),
+ path('jquery-ui/', jQueryVersionCreateView.as_view(), name='upload-jquery'),
+ path('delete/', PictureDeleteView.as_view(), name='upload-delete'),
+ path('view/', PictureListView.as_view(), name='upload-view'),
+]
diff --git a/fileupload/views.py b/fileupload/views.py
index 98b339c..e9f6b01 100644
--- a/fileupload/views.py
+++ b/fileupload/views.py
@@ -10,6 +10,7 @@
class PictureCreateView(CreateView):
model = Picture
+ fields = "__all__"
def form_valid(self, form):
self.object = form.save()
diff --git a/manage.py b/manage.py
index 3e4eedc..92a4d6e 100755
--- a/manage.py
+++ b/manage.py
@@ -1,14 +1,24 @@
#!/usr/bin/env python
-from django.core.management import execute_manager
-import imp
-try:
- imp.find_module('settings') # Assumed to be in the same directory.
-except ImportError:
- import sys
- sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n" % __file__)
- sys.exit(1)
+# from django.core.management import execute_manager
+# import imp
+# try:
+# imp.find_module('settings') # Assumed to be in the same directory.
+# except ImportError:
+# import sys
+# sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n" % __file__)
+# sys.exit(1)
+#
+# import settings
+#
+# if __name__ == "__main__":
+# execute_manager(settings)
-import settings
+#!/usr/bin/env python
+import os, sys
if __name__ == "__main__":
- execute_manager(settings)
+ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django-jquery-file-upload.settings")
+
+ from django.core.management import execute_from_command_line
+
+ execute_from_command_line(sys.argv)
diff --git a/requirements.txt b/requirements.txt
index 23cb63a..c87429b 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,2 @@
-django<1.6
-pillow
+django>=2.2.13,<2.0.99
+pillow>=7.1.0
diff --git a/settings.py b/settings.py
deleted file mode 100644
index 68744b1..0000000
--- a/settings.py
+++ /dev/null
@@ -1,148 +0,0 @@
-import os
-
-DEBUG = True
-TEMPLATE_DEBUG = DEBUG
-
-SITE_ROOT = os.path.dirname(os.path.realpath(__file__))
-
-ADMINS = (
- # ('Your Name', 'your_email@example.com'),
-)
-
-MANAGERS = ADMINS
-
-DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
- 'NAME': os.path.join(SITE_ROOT, 'db'), # Or path to database file if using sqlite3.
- 'USER': '', # Not used with sqlite3.
- 'PASSWORD': '', # Not used with sqlite3.
- 'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
- 'PORT': '', # Set to empty string for default. Not used with sqlite3.
- }
-}
-
-# Local time zone for this installation. Choices can be found here:
-# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
-# although not all choices may be available on all operating systems.
-# On Unix systems, a value of None will cause Django to use the same
-# timezone as the operating system.
-# If running in a Windows environment this must be set to the same as your
-# system time zone.
-TIME_ZONE = 'America/Chicago'
-
-# Language code for this installation. All choices can be found here:
-# http://www.i18nguy.com/unicode/language-identifiers.html
-LANGUAGE_CODE = 'en-us'
-
-SITE_ID = 1
-
-# If you set this to False, Django will make some optimizations so as not
-# to load the internationalization machinery.
-USE_I18N = True
-
-# If you set this to False, Django will not format dates, numbers and
-# calendars according to the current locale
-USE_L10N = True
-
-# Absolute filesystem path to the directory that will hold user-uploaded files.
-# Example: "/home/media/media.lawrence.com/media/"
-MEDIA_ROOT = os.path.abspath(os.path.dirname(__file__)) + '/media/'
-
-# URL that handles the media served from MEDIA_ROOT. Make sure to use a
-# trailing slash.
-# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
-MEDIA_URL = '/media/'
-
-# Absolute path to the directory static files should be collected to.
-# Don't put anything in this directory yourself; store your static files
-# in apps' "static/" subdirectories and in STATICFILES_DIRS.
-# Example: "/home/media/media.lawrence.com/static/"
-STATIC_ROOT = os.path.abspath(os.path.dirname(__file__)) + '/static/'
-
-# URL prefix for static files.
-# Example: "http://media.lawrence.com/static/"
-STATIC_URL = '/static/'
-
-# URL prefix for admin static files -- CSS, JavaScript and images.
-# Make sure to use a trailing slash.
-# Examples: "http://foo.com/static/admin/", "/static/admin/".
-ADMIN_MEDIA_PREFIX = '/static/admin/'
-
-# Additional locations of static files
-STATICFILES_DIRS = (
- # Put strings here, like "/home/html/static" or "C:/www/django/static".
- # Always use forward slashes, even on Windows.
- # Don't forget to use absolute paths, not relative paths.
-)
-
-# List of finder classes that know how to find static files in
-# various locations.
-STATICFILES_FINDERS = (
- 'django.contrib.staticfiles.finders.FileSystemFinder',
- 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
-# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
-)
-
-# Make this unique, and don't share it with anybody.
-SECRET_KEY = '9%$in^gpdaig@v3or_to&_z(=n)3)$f1mr3hf9e#kespy2ajlo'
-
-# List of callables that know how to import templates from various sources.
-TEMPLATE_LOADERS = (
- 'django.template.loaders.filesystem.Loader',
- 'django.template.loaders.app_directories.Loader',
-# 'django.template.loaders.eggs.Loader',
-)
-
-MIDDLEWARE_CLASSES = (
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
-)
-
-ROOT_URLCONF = 'django-jquery-file-upload.urls'
-
-TEMPLATE_DIRS = (
- # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
- # Always use forward slashes, even on Windows.
- # Don't forget to use absolute paths, not relative paths.
-)
-
-INSTALLED_APPS = (
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.sites',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'fileupload',
- # Uncomment the next line to enable the admin:
- 'django.contrib.admin',
- # Uncomment the next line to enable admin documentation:
- # 'django.contrib.admindocs',
-)
-
-# A sample logging configuration. The only tangible logging
-# performed by this configuration is to send an email to
-# the site admins on every HTTP 500 error.
-# See http://docs.djangoproject.com/en/dev/topics/logging for
-# more details on how to customize your logging configuration.
-LOGGING = {
- 'version': 1,
- 'disable_existing_loggers': False,
- 'handlers': {
- 'mail_admins': {
- 'level': 'ERROR',
- 'class': 'django.utils.log.AdminEmailHandler'
- }
- },
- 'loggers': {
- 'django.request': {
- 'handlers': ['mail_admins'],
- 'level': 'ERROR',
- 'propagate': True,
- },
- }
-}
diff --git a/urls.py b/urls.py
deleted file mode 100644
index 00270ad..0000000
--- a/urls.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from django.conf.urls import patterns, include, url
-from django.http import HttpResponseRedirect
-
-# Uncomment the next two lines to enable the admin:
-from django.contrib import admin
-admin.autodiscover()
-
-urlpatterns = patterns('',
- # Examples:
- # url(r'^$', 'upload.views.home', name='home'),
-
- url(r'^$', lambda x: HttpResponseRedirect('/upload/new/')),
- url(r'^upload/', include('fileupload.urls')),
-
- # Uncomment the admin/doc line below to enable admin documentation:
- # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
-
- # Uncomment the next line to enable the admin:
- url(r'^admin/', include(admin.site.urls)),
-)
-
-import os
-urlpatterns += patterns('',
- (r'^media/(.*)$', 'django.views.static.serve', {'document_root': os.path.join(os.path.abspath(os.path.dirname(__file__)), 'media')}),
-)