Compresses linked and inline javascript or CSS into a single cached file.

Overview

Django Compressor

https://codecov.io/github/django-compressor/django-compressor/coverage.svg?branch=develop Build Status

Django Compressor processes, combines and minifies linked and inline Javascript or CSS in a Django template into cacheable static files.

It supports compilers such as coffeescript, LESS and SASS and is extensible by custom processing steps.

Django Compressor is compatible with Django 1.11 and newer.

How it works

In your templates, all HTML code between the tags {% compress js/css %} and {% endcompress %} is parsed and searched for CSS or JS. These styles and scripts are subsequently processed with optional, configurable compilers and filters.

The default filter for CSS rewrites paths to static files to be absolute. Both Javascript and CSS files are by default concatenated and minified.

As the final step the template tag outputs a <script> or <link> tag pointing to the optimized file. Alternatively it can also inline the resulting content into the original template directly.

Since the file name is dependent on the content, these files can be given a far future expiration date without worrying about stale browser caches.

For increased performance, the concatenation and compressing process can also be run once manually outside of the request/response cycle by using the Django management command manage.py compress.

Configurability & Extensibility

Django Compressor is highly configurable and extensible. The HTML parsing is done using lxml or if it's not available Python's built-in HTMLParser by default. As an alternative Django Compressor provides a BeautifulSoup and a html5lib based parser, as well as an abstract base class that makes it easy to write a custom parser.

Django Compressor also comes with built-in support for YUI CSS and JS compressor, yUglify CSS and JS compressor, the Google's Closure Compiler, a Python port of Douglas Crockford's JSmin, a Python port of the YUI CSS Compressor csscompressor and a filter to convert (some) images into data URIs.

If your setup requires a different compressor or other post-processing tool it will be fairly easy to implement a custom filter. Simply extend from one of the available base classes.

More documentation about the usage and settings of Django Compressor can be found on django-compressor.readthedocs.org.

The source code for Django Compressor can be found and contributed to on github.com/django-compressor/django-compressor. There you can also file tickets.

The in-development version of Django Compressor can be installed with pip install git+https://github.com/django-compressor/django-compressor.git

Comments
  • COMPRESS_PRECOMPILERS break css url()

    COMPRESS_PRECOMPILERS break css url()

    Since the precompiled files are served from another location, relative links in css files do not work anymore.

    The Problem can be solved by setting the output dir to an empty string.

    COMPRESS_OUTPUT_DIR = ''
    

    However, it would be great to have processed urls in the css file that link to the right locations of images.

    opened by domoritz 37
  • Add CSP nonce support to compressed JS and CSS in online context

    Add CSP nonce support to compressed JS and CSS in online context

    This is a very work in progress PR as I'm not sure where everything in the codebase is, but this PR comes from https://github.com/django-compressor/django-compressor/issues/946

    The idea is to have two user configurable variables which will be placed as is inline with the script/style tags. ie INLINE_SCRIPT_TAG='foobar123' would result in scripts starting with <script foobar123 src=...</script>. The primary motivator is to allow compressor to work easier with the django-csp nonce mode. https://django-csp.readthedocs.io/en/latest/nonce.html

    I'm sorry, but at the moment I'm not sure how to pass the variables defined in conf into the filter function. If someone can point me at an example I'd be happy to update this PR.

    opened by darakian 30
  • Support for defer and async JavaScript loading

    Support for defer and async JavaScript loading

    Would be awesome to have javascript support for defer and async loading of scripts.

    {% compress js defer %}{% endcompress %}

    Or it just recognizes and keeps the tag on compression if all the scripts have it.

    opened by overshard 28
  • AttributeError at / 'Settings' object has no attribute 'COMPRESS_JS_COMPRESSOR'

    AttributeError at / 'Settings' object has no attribute 'COMPRESS_JS_COMPRESSOR'

    i put COMPRESS_DEBUG_TOGGLE = 'blahblah' to my production settings, and now i got:

    AttributeError at /
    'Settings' object has no attribute 'COMPRESS_JS_COMPRESSOR'
    

    and points me to this line in my template:

    {% compress css %}
    

    here is my production settings:

    ########## COMPRESSION CONFIGURATION
    COMPRESS_ENABLED = True
    # Default : the opposite of DEBUG
    
    COMPRESS_OFFLINE = False
    COMPRESS_STORAGE = DEFAULT_FILE_STORAGE
    COMPRESS_CSS_FILTERS += [
        #'compressor.filters.cssmin.CSSMinFilter',
        'compressor.filters.template.TemplateFilter',
    ]
    COMPRESS_JS_FILTERS += [
        #'compressor.filters.jsmin.JSMinFilter',
        'compressor.filters.template.TemplateFilter',
    ]
    
    COMPRESS_DEBUG_TOGGLE = 'compressor'
    ########## END COMPRESSION CONFIGURATION
    

    any suggestions?

    (edit by @diox : original bug report info: https://github.com/jezdez/django_compressor/issues/173#issuecomment-10016037 )

    opened by serkansokmen 26
  • Fix compress command for 1.8

    Fix compress command for 1.8

    Work in progress. Build should pass but probably not ready to merge.

    Will Fix #588.

    This is steps towards fixing the compress command for 1.8.

    1
    I needed to remove jingo from INSTALLED_APPS for 1.8 — without this, the tests don't even get passed importing. (See 7706bae)

    2 Having made the changes pointed to by @aaugustin (Thanks again there — you rock!) I was able to get the compress command running through with only small changes — and the existing tox run still passing.

    But...

    3 The are a lot of test failures if you run against 1.8 (See summary on 72b33ddbcd). These fail into two kinds:

    1. Too many compress tags found.
    2. Missing keys from the manifest.

    I'm not currently sure what's a genuine error and what's a result of (for example) 1 above. I'm not familiar enough with the test suite yet to see how the dual tempting works there (and how it might interact with 1.8).

    My next step will be to pull this into a real project to see if the results are as expected. I'll then come back to the tests here.

    I'm hoping that you (@jezdez or @diox or anyone else who knows the test suite) can run this against 1.8 and input some advice about what's happening. (That would be awesome.)

    (I can add 1.8 to the tox and/or travis configs if that's a help.)

    opened by carltongibson 25
  • rcssmin and rjsmin do not install

    rcssmin and rjsmin do not install

    I am installing django-compressor on Windows 10 x64 with Python 3.4 x64. I get the following error when I install it with pip. Interestingly enough, I did not get such an error with Python 3.5 x64.

    >  pip install django-compressor --upgrade
    Collecting django-compressor
      Using cached django_compressor-2.1-py2.py3-none-any.whl
    Collecting rjsmin==1.0.12 (from django-compressor)
      Using cached rjsmin-1.0.12.tar.gz
    Collecting rcssmin==1.0.6 (from django-compressor)
      Using cached rcssmin-1.0.6.tar.gz
    Requirement already up-to-date: django-appconf>=1.0 in d:\env3\lib\site-packages (from django-compressor)
    Building wheels for collected packages: rjsmin, rcssmin
      Running setup.py bdist_wheel for rjsmin ... error
      Complete output from command d:\env\scripts\python.exe -u -c "import setuptools, tokenize;__file__='\\Temp\\pip-build-um3ph8qp\\rjsmin\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" bdist_wheel -d \Temp\tmp6dj8tx90pip-wheel- --python-tag cp34:
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build\lib.win-amd64-3.4
      copying .\rjsmin.py -> build\lib.win-amd64-3.4
      running build_ext
      building '_rjsmin' extension
      error: Microsoft Visual C++ 10.0 is required. Get it with "Microsoft Windows SDK 7.1": www.microsoft.com/download/details.aspx?id=8279
    
      ----------------------------------------
      Failed building wheel for rjsmin
      Running setup.py clean for rjsmin
      Running setup.py bdist_wheel for rcssmin ... error
      Complete output from command d:\env3\scriptspython.exe -u -c "import setuptools, tokenize;__file__='\\Temp\\pip-build-um3ph8qp\\rcssmin\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" bdist_wheel -d \Temp\tmp_cfj9vrjpip-wheel- --python-tag cp34:
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build\lib.win-amd64-3.4
      copying .\rcssmin.py -> build\lib.win-amd64-3.4
      running build_ext
      building '_rcssmin' extension
      error: Microsoft Visual C++ 10.0 is required. Get it with "Microsoft Windows SDK 7.1": www.microsoft.com/download/details.aspx?id=8279
    
      ----------------------------------------
      Failed building wheel for rcssmin
      Running setup.py clean for rcssmin
    Failed to build rjsmin rcssmin
    Installing collected packages: rjsmin, rcssmin, django-compressor
      Running setup.py install for rjsmin ... error
        Complete output from command d:\env3\scripts\python.exe -u -c "import setuptools, tokenize;__file__='\\Temp\\pip-build-um3ph8qp\\rjsmin\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record \Temp\pip-_z23ysr6-record\install-record.txt --single-version-externally-managed --compile --install-headers d:\env3\include\site\python3.4\rjsmin:
        running install
        running build
        running build_py
        creating build
        creating build\lib.win-amd64-3.4
        copying .\rjsmin.py -> build\lib.win-amd64-3.4
        running build_ext
        building '_rjsmin' extension
        error: Microsoft Visual C++ 10.0 is required. Get it with "Microsoft Windows SDK 7.1": www.microsoft.com/download/details.aspx?id=8279
    
        ----------------------------------------
    Command "d:\env3\scripts\python.exe -u -c "import setuptools, tokenize;__file__='\\Temp\\pip-build-um3ph8qp\\rjsmin\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record \Temp\pip-_z23ysr6-record\install-record.txt --single-version-externally-managed --compile --install-headers d:\env3\include\site\python3.4\rjsmin" failed with error code 1 in \Temp\pip-build-um3ph8qp\rjsmin\
    
    
    opened by bobort 23
  • AttributeError: 'cStringIO.StringO' object has no attribute 'name'

    AttributeError: 'cStringIO.StringO' object has no attribute 'name'

    The example CachedS3BotoStorage raises this exception when I try to do collectstatic.

    I'm using compressor@develop Django@trunk

    Traceback (most recent call last):
      File "manage.py", line 11, in <module>
        execute_manager(settings)
      File "/Users/andrew/Labs/something/src/django/django/core/management/__init__.py", line 442, in execute_manager
        utility.execute()
      File "/Users/andrew/Labs/something/src/django/django/core/management/__init__.py", line 379, in execute
        self.fetch_command(subcommand).run_from_argv(self.argv)
      File "/Users/andrew/Labs/something/src/django/django/core/management/base.py", line 191, in run_from_argv
        self.execute(*args, **options.__dict__)
      File "/Users/andrew/Labs/something/src/django/django/core/management/base.py", line 220, in execute
        output = self.handle(*args, **options)
      File "/Users/andrew/Labs/something/src/django/django/core/management/base.py", line 351, in handle
        return self.handle_noargs(**options)
      File "/Users/andrew/Labs/something/src/django/django/contrib/staticfiles/management/commands/collectstatic.py", line 116, in handle_noargs
        handler(path, prefixed_path, storage)
      File "/Users/andrew/Labs/something/src/django/django/contrib/staticfiles/management/commands/collectstatic.py", line 243, in copy_file
        self.storage.save(prefixed_path, source_file)
      File "/Users/andrew/Labs/something/something/../something/contrib/storages/__init__.py", line 11, in save
        self.local_storage._save(name, content)
      File "/Users/andrew/Labs/something/src/django/django/core/files/storage.py", line 198, in _save
        for chunk in content.chunks():
      File "/Users/andrew/Labs/something/src/django/django/core/files/base.py", line 65, in chunks
        counter = self.size
      File "/Users/andrew/Labs/something/src/django/django/core/files/base.py", line 39, in _get_size
        elif os.path.exists(self.file.name):
    AttributeError: 'cStringIO.StringO' object has no attribute 'name'
    

    The exact code for the backend is:

    from django.core.files.storage import get_storage_class
    from storages.backends.s3boto import S3BotoStorage
    
    class CachedS3BotoStorage(S3BotoStorage):
        def __init__(self, *args, **kwargs):
            super(CachedS3BotoStorage, self).__init__(*args, **kwargs)
            self.local_storage = get_storage_class('compressor.storage.CompressorFileStorage')()
    
        def save(self, name, content):
            name = super(CachedS3BotoStorage, self).save(name, content)
            self.local_storage._save(name, content)
            return name
    

    And my settings:

    MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
    MEDIA_URL = '//something.s3.amazonaws.com/media/'
    
    STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
    STATIC_URL = '//something.s3.amazonaws.com/static/'
    
    STATICFILES_DIRS = (
        os.path.join(PROJECT_DIR, 'static_media'),
    )
    
    STATICFILES_FINDERS = (
        'django.contrib.staticfiles.finders.FileSystemFinder',
        'django.contrib.staticfiles.finders.AppDirectoriesFinder',
        'compressor.finders.CompressorFinder',
    )
    
    DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
    STATICFILES_STORAGE = 'something.contrib.storages.CachedS3BotoStorage'
    
    COMPRESS_STORAGE = STATICFILES_STORAGE
    COMPRESS_OUTPUT_DIR = 'compressed'
    COMPRESS_CSS_FILTERS = (
        'compressor.filters.css_default.CssAbsoluteFilter',
        'compressor.filters.cssmin.CSSMinFilter',
    )
    COMPRESS_JS_FILTERS = (
        'compressor.filters.jsmin.JSMinFilter',
    )
    
    opened by amccloud 23
  • AppConf not update Settings in compressor/conf.py in Django 1.4

    AppConf not update Settings in compressor/conf.py in Django 1.4

    When get up the server I got this error

    'Settings' object has no attribute 'COMPRESS_DEBUG_TOGGLE' ... /home/.../compressor/templatetags/compress.py in render if self.debug_mode(context): ... ▶ Local vars /home/.../compressor/templatetags/compress.py in debug_mode if settings.COMPRESS_DEBUG_TOGGLE: ... ▶ Local vars

    I'm using Django 1.4 with dev version of django compressor

    opened by mtdb 22
  • Offline compression for Jinja2 with Jingo and Coffin integration

    Offline compression for Jinja2 with Jingo and Coffin integration

    I'm done with offline support for jinja2.

    I have added the setting:

    # function that returns an Environment, which serves as an integration point for Jingo and Coffin.
    COMPRESS_JINJA2_GET_ENVIRONMENT
    

    Usage

    ./manage.py compress -engine {jinja2,django} Default engine is Django.

    Using with Jingo or Coffin

    See test_offline.py (bottom of the file) to see how to use the setting to get coffin's or jingo's env.

    Using both Django and Jinja2 templates

    I think it is somewhat supported in the sense that when Jinja2 engine is used to parse Django templates (and vice versa), the TemplateSyntaxError will be thrown and thereby skipping the templates. This fact can be exploited to support mixing of Django and Jinja2 templates in the same project (indicated by TEMPLATE_DIRS).

    A user could, do the following: specify TEMPLATE_DIRS to include both Django and Jinja2 locations. ./manage.py compress => Process Django templates, skipping Jinja2 templates. ./manage.py compress -engine jinja2 => Process Jinja2 templates, skipping Django templates.

    Consider this feature as auto-detection of the templating language. Although for robustness, we should have a parameter to indicate specific Jinja2 template locations.

    Limitations

    • May not support {% import %} and etc. blocks within {% compress %} blocks. Actually this is not tested, so it may or may not work. {% if %}, {% with %} and {% for %} are tested though.
    • Does not support {{super()}} for now.
    opened by ghost 21
  • Installation bug django-compressor (rcssmin)

    Installation bug django-compressor (rcssmin)

    ➜  byvshie ./build
    +++ dirname ./build
    ++ cd .
    ++ pwd
    + DIR=/Users/lorddaedra/Projects/byvshie
    + docker build -t entropia/byvshie:latest -f /Users/lorddaedra/Projects/byvshie/Dockerfile /Users/lorddaedra/Projects/byvshie
    Sending build context to Docker daemon 22.76 MB
    Step 1 : FROM python:3.5-alpine
     ---> e57c79136a08
    Step 2 : ENV PYTHONUNBUFFERED 1
     ---> Using cache
     ---> 22523b31cff4
    Step 3 : ENV DJANGO_SETTINGS_MODULE byvshie.settings
     ---> Running in de1961075197
     ---> 145ec94af4da
    Removing intermediate container de1961075197
    Step 4 : ENV LIBRARY_PATH /lib:/usr/lib
     ---> Running in 4d3affe0e89e
     ---> a380f6806984
    Removing intermediate container 4d3affe0e89e
    Step 5 : WORKDIR /
     ---> Running in 1f46cac384aa
     ---> b81cbeaf84dd
    Removing intermediate container 1f46cac384aa
    Step 6 : RUN set -ex     && mkdir -p /usr/src/app
     ---> Running in e1e0a13099db
    + mkdir -p /usr/src/app
     ---> cd86298883ed
    Removing intermediate container e1e0a13099db
    Step 7 : COPY requirements.txt /usr/src/app
     ---> b21ad0d5135f
    Removing intermediate container 43070bfb3213
    Step 8 : COPY config/Lib/ctypes/util.py /usr/local/lib/python3.5/ctypes
     ---> 3ff35452a40d
    Removing intermediate container 16ff555230a4
    Step 9 : RUN set -ex    && addgroup -g 82 -S www-data   && adduser -u 82 -D -S -G www-data www-data     && apk update     && apk upgrade     && build_pkgs="build-base linux-headers openssl-dev pcre-dev wget postgresql-dev libxml2-dev libxslt-dev libffi-dev jpeg-dev freetype-dev  tiff-dev libwebp-dev zlib-dev git mercurial"     && runtime_pkgs="ca-certificates postgresql openssl libxml2 libxslt libffi jpeg freetype tiff libwebp    libmagic gettext pcre zlib bash bc"     && apk --update add --no-cache ${build_pkgs} ${runtime_pkgs}     && pip install --no-cache-dir  -U setuptools pip     && pip install --no-cache-dir  -r /usr/src/app/requirements.txt     && apk del ${build_pkgs}     && rm -rf /var/cache/apk/*
     ---> Running in 2b07b2bf8b7c
    + addgroup -g 82 -S www-data
    + adduser -u 82 -D -S -G www-data www-data
    + apk update
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
    v3.4.5 [http://dl-cdn.alpinelinux.org/alpine/v3.4/main]
    v3.4.4-21-g75fc217 [http://dl-cdn.alpinelinux.org/alpine/v3.4/community]
    OK: 5974 distinct packages available
    + apk upgrade
    (1/2) Upgrading musl (1.1.14-r12 -> 1.1.14-r13)
    (2/2) Upgrading musl-utils (1.1.14-r12 -> 1.1.14-r13)
    Executing busybox-1.24.2-r11.trigger
    OK: 31 MiB in 32 packages
    + build_pkgs=build-base linux-headers openssl-dev pcre-dev wget postgresql-dev libxml2-dev libxslt-dev libffi-dev jpeg-dev freetype-dev  tiff-dev libwebp-dev zlib-dev git mercurial
    + runtime_pkgs=ca-certificates postgresql openssl libxml2 libxslt libffi jpeg freetype tiff libwebp    libmagic gettext pcre zlib bash bc
    + apk --update add --no-cache build-base linux-headers openssl-dev pcre-dev wget postgresql-dev libxml2-dev libxslt-dev libffi-dev jpeg-dev freetype-dev tiff-dev libwebp-dev zlib-dev git mercurial ca-certificates postgresql openssl libxml2 libxslt libffi jpeg freetype tiff libwebp libmagic gettext pcre zlib bash bc
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
    (1/69) Installing bash (4.3.42-r3)
    Executing bash-4.3.42-r3.post-install
    (2/69) Installing bc (1.06.95-r2)
    (3/69) Installing binutils-libs (2.26-r0)
    (4/69) Installing binutils (2.26-r0)
    (5/69) Installing gmp (6.1.0-r0)
    (6/69) Installing isl (0.14.1-r0)
    (7/69) Installing libgomp (5.3.0-r0)
    (8/69) Installing libatomic (5.3.0-r0)
    (9/69) Installing libgcc (5.3.0-r0)
    (10/69) Installing pkgconf (0.9.12-r0)
    (11/69) Installing pkgconfig (0.25-r1)
    (12/69) Installing mpfr3 (3.1.2-r0)
    (13/69) Installing mpc1 (1.0.3-r0)
    (14/69) Installing libstdc++ (5.3.0-r0)
    (15/69) Installing gcc (5.3.0-r0)
    (16/69) Installing make (4.1-r1)
    (17/69) Installing musl-dev (1.1.14-r13)
    (18/69) Installing libc-dev (0.7-r0)
    (19/69) Installing fortify-headers (0.8-r0)
    (20/69) Installing g++ (5.3.0-r0)
    (21/69) Installing build-base (0.4-r1)
    (22/69) Installing zlib-dev (1.2.8-r2)
    (23/69) Installing libpng-dev (1.6.21-r0)
    (24/69) Installing freetype-dev (2.6.3-r0)
    (25/69) Installing libintl (0.19.7-r3)
    (26/69) Installing libunistring (0.9.6-r0)
    (27/69) Installing libxml2 (2.9.4-r0)
    (28/69) Installing gettext (0.19.7-r3)
    (29/69) Installing libssh2 (1.7.0-r0)
    (30/69) Installing libcurl (7.50.3-r0)
    (31/69) Installing pcre (8.38-r1)
    (32/69) Installing git (2.8.3-r0)
    (33/69) Installing libjpeg-turbo (1.4.2-r0)
    (34/69) Installing libjpeg-turbo-utils (1.4.2-r0)
    (35/69) Installing jpeg (8-r6)
    (36/69) Installing libjpeg-turbo-dev (1.4.2-r0)
    (37/69) Installing jpeg-dev (8-r6)
    (38/69) Installing libffi (3.2.1-r2)
    (39/69) Installing libffi-dev (3.2.1-r2)
    (40/69) Installing libmagic (5.27-r0)
    (41/69) Installing libwebp (0.5.0-r0)
    (42/69) Installing libwebp-dev (0.5.0-r0)
    (43/69) Installing libxml2-dev (2.9.4-r0)
    (44/69) Installing libgpg-error (1.23-r0)
    (45/69) Installing libgcrypt (1.7.0-r1)
    (46/69) Installing libxslt (1.1.29-r0)
    (47/69) Installing libxslt-dev (1.1.29-r0)
    (48/69) Installing linux-headers (4.4.6-r1)
    (49/69) Installing gdbm (1.11-r1)
    (50/69) Installing python (2.7.12-r0)
    (51/69) Installing mercurial (3.8.2-r0)
    (52/69) Installing openssl (1.0.2j-r0)
    (53/69) Installing openssl-dev (1.0.2j-r0)
    (54/69) Installing libpcre16 (8.38-r1)
    (55/69) Installing libpcre32 (8.38-r1)
    (56/69) Installing libpcrecpp (8.38-r1)
    (57/69) Installing pcre-dev (8.38-r1)
    (58/69) Installing libedit (20150325.3.1-r3)
    (59/69) Installing db (5.3.28-r0)
    (60/69) Installing libsasl (2.1.26-r7)
    (61/69) Installing libldap (2.4.44-r1)
    (62/69) Installing libpq (9.5.4-r0)
    (63/69) Installing postgresql-client (9.5.4-r0)
    (64/69) Installing postgresql (9.5.4-r0)
    (65/69) Installing postgresql-libs (9.5.4-r0)
    (66/69) Installing postgresql-dev (9.5.4-r0)
    (67/69) Installing tiff (4.0.6-r3)
    (68/69) Installing tiff-dev (4.0.6-r3)
    (69/69) Installing wget (1.18-r0)
    Executing busybox-1.24.2-r11.trigger
    Executing ca-certificates-20160104-r4.trigger
    OK: 304 MiB in 101 packages
    + pip install --no-cache-dir -U setuptools pip
    Collecting setuptools
      Downloading setuptools-28.7.0-py2.py3-none-any.whl (472kB)
    Requirement already up-to-date: pip in /usr/local/lib/python3.5/site-packages
    Installing collected packages: setuptools
      Found existing installation: setuptools 20.10.1
        Uninstalling setuptools-20.10.1:
          Successfully uninstalled setuptools-20.10.1
    Successfully installed setuptools-28.7.0
    + pip install --no-cache-dir -r /usr/src/app/requirements.txt
    Collecting argon2_cffi==16.2.0 (from -r /usr/src/app/requirements.txt (line 1))
      Downloading argon2_cffi-16.2.0.tar.gz (1.2MB)
    Collecting bcrypt==3.1.1 (from -r /usr/src/app/requirements.txt (line 2))
      Downloading bcrypt-3.1.1.tar.gz (40kB)
    Collecting certifi==2016.9.26 (from -r /usr/src/app/requirements.txt (line 3))
      Downloading certifi-2016.9.26-py2.py3-none-any.whl (377kB)
    Collecting cffi==1.8.3 (from -r /usr/src/app/requirements.txt (line 4))
      Downloading cffi-1.8.3.tar.gz (403kB)
    Collecting defusedxml==0.4.1 (from -r /usr/src/app/requirements.txt (line 5))
      Downloading defusedxml-0.4.1.tar.gz (48kB)
    Collecting Django==1.10.2 (from -r /usr/src/app/requirements.txt (line 6))
      Downloading Django-1.10.2-py2.py3-none-any.whl (6.8MB)
    Collecting django-appconf==1.0.2 (from -r /usr/src/app/requirements.txt (line 7))
      Downloading django_appconf-1.0.2-py2.py3-none-any.whl
    Collecting django-app-namespace-template-loader==0.4.1 (from -r /usr/src/app/requirements.txt (line 9))
      Downloading django_app_namespace_template_loader-0.4.1-py2.py3-none-any.whl
    Obtaining django-backblazeb2-storage from git+https://github.com/royendgel/django-backblazeb2-storage.git@f017e4ce7564c852f55d2aa67e70983ccc7563ec#egg=django-backblazeb2-storage (from -r /usr/src/app/requirements.txt (line 10))
      Cloning https://github.com/royendgel/django-backblazeb2-storage.git (to f017e4ce7564c852f55d2aa67e70983ccc7563ec) to /src/django-backblazeb2-storage
      Could not find a tag or branch 'f017e4ce7564c852f55d2aa67e70983ccc7563ec', assuming commit.
    Collecting django_compressor==2.1 (from -r /usr/src/app/requirements.txt (line 11))
      Downloading django_compressor-2.1-py2.py3-none-any.whl (130kB)
    Collecting django-debug-toolbar==1.6 (from -r /usr/src/app/requirements.txt (line 12))
      Downloading django_debug_toolbar-1.6-py2.py3-none-any.whl (205kB)
    Collecting django-el-pagination==3.0.1 (from -r /usr/src/app/requirements.txt (line 13))
      Downloading django-el-pagination-3.0.1.tar.gz (358kB)
    Collecting django-formtools==1.0 (from -r /usr/src/app/requirements.txt (line 14))
      Downloading django_formtools-1.0-py2.py3-none-any.whl (132kB)
    Collecting django-mailer==1.2.2 (from -r /usr/src/app/requirements.txt (line 15))
      Downloading django-mailer-1.2.2.tar.gz
    Collecting django-user-accounts==2.0.0 (from -r /usr/src/app/requirements.txt (line 16))
      Downloading django_user_accounts-2.0.0-py2.py3-none-any.whl (104kB)
    Collecting docutils==0.12 (from -r /usr/src/app/requirements.txt (line 17))
      Downloading docutils-0.12-py3-none-any.whl (508kB)
    Collecting lxml==3.6.4 (from -r /usr/src/app/requirements.txt (line 18))
      Downloading lxml-3.6.4.tar.gz (3.7MB)
    Collecting oauthlib==2.0.0 (from -r /usr/src/app/requirements.txt (line 19))
      Downloading oauthlib-2.0.0.tar.gz (122kB)
    Collecting Pillow==3.4.2 (from -r /usr/src/app/requirements.txt (line 20))
      Downloading Pillow-3.4.2.tar.gz (10.8MB)
    Collecting psycopg2==2.6.2 (from -r /usr/src/app/requirements.txt (line 21))
      Downloading psycopg2-2.6.2.tar.gz (376kB)
    Collecting pycparser==2.16 (from -r /usr/src/app/requirements.txt (line 22))
      Downloading pycparser-2.16.tar.gz (230kB)
    Collecting PyJWT==1.4.2 (from -r /usr/src/app/requirements.txt (line 23))
      Downloading PyJWT-1.4.2-py2.py3-none-any.whl
    Collecting python-magic==0.4.12 (from -r /usr/src/app/requirements.txt (line 24))
      Downloading python-magic-0.4.12.tar.gz
    Collecting python-simple-hipchat==0.4.0 (from -r /usr/src/app/requirements.txt (line 25))
      Downloading python-simple-hipchat-0.4.0.tar.gz
    Collecting python-social-auth==0.2.21 (from -r /usr/src/app/requirements.txt (line 26))
      Downloading python_social_auth-0.2.21-py3-none-any.whl (302kB)
    Collecting python3-openid==3.0.10 (from -r /usr/src/app/requirements.txt (line 27))
      Downloading python3-openid-3.0.10.zip (365kB)
    Collecting pytz==2016.7 (from -r /usr/src/app/requirements.txt (line 28))
      Downloading pytz-2016.7-py2.py3-none-any.whl (480kB)
    Collecting raven==5.30.0 (from -r /usr/src/app/requirements.txt (line 29))
      Downloading raven-5.30.0-py2.py3-none-any.whl (277kB)
    Collecting requests==2.11.1 (from -r /usr/src/app/requirements.txt (line 30))
      Downloading requests-2.11.1-py2.py3-none-any.whl (514kB)
    Collecting requests-oauthlib==0.7.0 (from -r /usr/src/app/requirements.txt (line 31))
      Downloading requests_oauthlib-0.7.0-py2.py3-none-any.whl
    Collecting simplejson==3.8.2 (from -r /usr/src/app/requirements.txt (line 32))
      Downloading simplejson-3.8.2.tar.gz (76kB)
    Collecting six==1.10.0 (from -r /usr/src/app/requirements.txt (line 33))
      Downloading six-1.10.0-py2.py3-none-any.whl
    Collecting sqlparse==0.2.1 (from -r /usr/src/app/requirements.txt (line 34))
      Downloading sqlparse-0.2.1-py2.py3-none-any.whl
    Collecting uwsgi==2.0.14 (from -r /usr/src/app/requirements.txt (line 35))
      Downloading uwsgi-2.0.14.tar.gz (788kB)
    Collecting rcssmin==1.0.6 (from django_compressor==2.1->-r /usr/src/app/requirements.txt (line 11))
      Downloading rcssmin-1.0.6.tar.gz (582kB)
        Complete output from command python setup.py egg_info:
        running egg_info
        creating pip-egg-info/rcssmin.egg-info
        writing pip-egg-info/rcssmin.egg-info/PKG-INFO
        writing dependency_links to pip-egg-info/rcssmin.egg-info/dependency_links.txt
        writing top-level names to pip-egg-info/rcssmin.egg-info/top_level.txt
        writing manifest file 'pip-egg-info/rcssmin.egg-info/SOURCES.txt'
        warning: manifest_maker: standard file '-c' not found
    
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "/tmp/pip-build-dzarxluf/rcssmin/setup.py", line 42, in <module>
            setup()
          File "/tmp/pip-build-dzarxluf/rcssmin/setup.py", line 33, in setup
            return run(script_args=args, ext=ext, manifest_only=_manifest)
          File "/tmp/pip-build-dzarxluf/rcssmin/_setup/py3/setup.py", line 426, in run
            return _core.setup(**kwargs)
          File "/usr/local/lib/python3.5/distutils/core.py", line 148, in setup
            dist.run_commands()
          File "/usr/local/lib/python3.5/distutils/dist.py", line 955, in run_commands
            self.run_command(cmd)
          File "/usr/local/lib/python3.5/distutils/dist.py", line 974, in run_command
            cmd_obj.run()
          File "/usr/local/lib/python3.5/site-packages/setuptools/command/egg_info.py", line 279, in run
            self.find_sources()
          File "/usr/local/lib/python3.5/site-packages/setuptools/command/egg_info.py", line 306, in find_sources
            mm.run()
          File "/usr/local/lib/python3.5/site-packages/setuptools/command/egg_info.py", line 533, in run
            self.add_defaults()
          File "/usr/local/lib/python3.5/site-packages/setuptools/command/egg_info.py", line 562, in add_defaults
            sdist.add_defaults(self)
          File "/usr/local/lib/python3.5/site-packages/setuptools/command/py36compat.py", line 35, in add_defaults
            self._add_defaults_data_files()
          File "/usr/local/lib/python3.5/site-packages/setuptools/command/py36compat.py", line 111, in _add_defaults_data_files
            dirname, filenames = item
        TypeError: 'Documentation' object is not iterable
    
        ----------------------------------------
    Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-dzarxluf/rcssmin/
    The command '/bin/sh -c set -ex     && addgroup -g 82 -S www-data   && adduser -u 82 -D -S -G www-data www-data     && apk update     && apk upgrade     && build_pkgs="build-base linux-headers openssl-dev pcre-dev wget postgresql-dev libxml2-dev libxslt-dev libffi-dev jpeg-dev freetype-dev  tiff-dev libwebp-dev zlib-dev git mercurial"     && runtime_pkgs="ca-certificates postgresql openssl libxml2 libxslt libffi jpeg freetype tiff libwebp    libmagic gettext pcre zlib bash bc"     && apk --update add --no-cache ${build_pkgs} ${runtime_pkgs}     && pip install --no-cache-dir  -U setuptools pip     && pip install --no-cache-dir  -r /usr/src/app/requirements.txt     && apk del ${build_pkgs}     && rm -rf /var/cache/apk/*' returned a non-zero code: 1
    
    opened by ghost 20
  • Intermittent failure in offline compression

    Intermittent failure in offline compression

    Hi,

    We use django-compressor (v3.1) in our Django (v4.0.2) application. Our CI randomly fails (something like 1 run in 20) on the compress step with errors like this one:

    #18 [16/17] RUN python manage.py compress --extension .html,.xsl
    #18 3.681 CommandError: An error occurred during rendering registration/password_change_form.html: [Errno 2] No such file or directory: '/code/sereema/staticfiles/CACHE/js/output.5840362cca8f.js'
    

    If I read correctly, this is a known issue (#1082) that was fixed in v3.0. But it seems like the fix was not enough.

    opened by jtremesay-sereema 18
  • Bump coverage from 6.5.0 to 7.0.1 in /requirements

    Bump coverage from 6.5.0 to 7.0.1 in /requirements

    Bumps coverage from 6.5.0 to 7.0.1.

    Changelog

    Sourced from coverage's changelog.

    Version 7.0.1 — 2022-12-23

    • When checking if a file mapping resolved to a file that exists, we weren't considering files in .whl files. This is now fixed, closing issue 1511_.

    • File pattern rules were too strict, forbidding plus signs and curly braces in directory and file names. This is now fixed, closing issue 1513_.

    • Unusual Unicode or control characters in source files could prevent reporting. This is now fixed, closing issue 1512_.

    • The PyPy wheel now installs on PyPy 3.7, 3.8, and 3.9, closing issue 1510_.

    .. _issue 1510: nedbat/coveragepy#1510 .. _issue 1511: nedbat/coveragepy#1511 .. _issue 1512: nedbat/coveragepy#1512 .. _issue 1513: nedbat/coveragepy#1513

    .. _changes_7-0-0:

    Version 7.0.0 — 2022-12-18

    Nothing new beyond 7.0.0b1.

    .. _changes_7-0-0b1:

    Version 7.0.0b1 — 2022-12-03

    A number of changes have been made to file path handling, including pattern matching and path remapping with the [paths] setting (see :ref:config_paths). These changes might affect you, and require you to update your settings.

    (This release includes the changes from 6.6.0b1 <changes_6-6-0b1_>_, since 6.6.0 was never released.)

    • Changes to file pattern matching, which might require updating your configuration:

      • Previously, * would incorrectly match directory separators, making precise matching difficult. This is now fixed, closing issue 1407_.

      • Now ** matches any number of nested directories, including none.

    • Improvements to combining data files when using the

    ... (truncated)

    Commits
    • c5cda3a docs: releases take a little bit longer now
    • 9d4226e docs: latest sample HTML report
    • 8c77758 docs: prep for 7.0.1
    • da1b282 fix: also look into .whl files for source
    • d327a70 fix: more information when mapping rules aren't working right.
    • 35e249f fix: certain strange characters caused reporting to fail. #1512
    • 152cdc7 fix: don't forbid plus signs in file names. #1513
    • 31513b4 chore: make upgrade
    • 873b059 test: don't run tests on Windows PyPy-3.9
    • 5c5caa2 build: PyPy wheel now installs on 3.7, 3.8, and 3.9. #1510
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump lxml from 4.9.1 to 4.9.2 in /requirements

    Bump lxml from 4.9.1 to 4.9.2 in /requirements

    Bumps lxml from 4.9.1 to 4.9.2.

    Changelog

    Sourced from lxml's changelog.

    4.9.2 (2022-12-13)

    Bugs fixed

    Other changes

    • LP#1981760: Element.attrib now registers as collections.abc.MutableMapping.

    • lxml now has a static build setup for macOS on ARM64 machines (not used for building wheels). Patch by Quentin Leffray.

    Commits
    • c17c1ca Use same naming for Python version matrix variable in wheel workflow as in CI...
    • fc2f7ea Use windows-2016 image instead of windows-2019 to fix the Py2.7 build.
    • 98224b3 Install more recent library versions for the wheel build.
    • ce4e5bc Fix release date.
    • cece238 Add PyPy-3.8 CI target.
    • 2c2308e Try to add a Windows CI build for Py2.7.
    • 0b0b2b9 Exclude missing Python versions from CI jobs.
    • b848b82 Try to fix CI "setup.py install" in Py3.11.
    • 487a194 CI: exclude non-static Windows jobs.
    • fc53d6f Show executed commands in CI runs.
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump flake8 from 5.0.4 to 6.0.0 in /requirements

    Bump flake8 from 5.0.4 to 6.0.0 in /requirements

    Bumps flake8 from 5.0.4 to 6.0.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Python 3.11 test failure

    Python 3.11 test failure

    I'm seeing OfflineCompressTestCaseWithLazyStringAlikeUrls test failures under Python 3.11. Bisecting the Python 3.11 branch showed that the https://github.com/python/cpython/commit/76cd81d60310d65d01f9d7b48a8985d8ab89c8b4 commit introduced the issue.

    I tried commenting out the @functools.lru_cache(typed=True) line from the urlsplit function in the Python 3.11 branch, and that seemed to fix the test. Does there need to be a clear_cache() call, or some other way to deal with the urlsplit cache in Python 3.11?

    opened by bcail 0
  • TypeError: inner() missing 1 required positional argument: 'request'

    TypeError: inner() missing 1 required positional argument: 'request'

    django version

    Django=2.2.17

    django-compressor version

    django-compressor=4.1

    settings.py

    INSTALLED_APPS = [
        'compressor',
        "simpleui",
        "django.contrib.admin",
        "django.contrib.auth",
        "django.contrib.contenttypes",
        "django.contrib.sessions",
        "django.contrib.messages",
        "django.contrib.staticfiles",
    ]
    MIDDLEWARE = [
        'django.contrib.staticfiles.finders.FileSystemFinder',
        'django.contrib.staticfiles.finders.AppDirectoriesFinder',
        "django.middleware.security.SecurityMiddleware",
        "django.middleware.gzip.GZipMiddleware",
        "django.contrib.sessions.middleware.SessionMiddleware",
        "corsheaders.middleware.CorsMiddleware",
        "django.middleware.common.CommonMiddleware",
        "django.contrib.auth.middleware.AuthenticationMiddleware",
        "django.contrib.messages.middleware.MessageMiddleware",
        "django.middleware.clickjacking.XFrameOptionsMiddleware",
        'compressor.finders.CompressorFinder',
    ]
    
    STATIC_URL = "/static/"
    
    STATICFILES_FINDERS = [
        'django.contrib.staticfiles.finders.FileSystemFinder',
        'django.contrib.staticfiles.finders.AppDirectoriesFinder',
        'compressor.finders.CompressorFinder'
    ]
    
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    COMPRESS_ROOT = os.path.join(BASE_DIR, 'static')
    
    

    error

    Traceback (most recent call last):
      File "/Users/rikasai/.virtualenvs/fast39/lib/python3.9/site-packages/django/core/management/base.py", line 323, in run_from_argv
        self.execute(*args, **cmd_options)
      File "/Users/rikasai/.virtualenvs/fast39/lib/python3.9/site-packages/django/core/management/commands/runserver.py", line 60, in execute
        super().execute(*args, **options)
      File "/Users/rikasai/.virtualenvs/fast39/lib/python3.9/site-packages/django/core/management/base.py", line 364, in execute
        output = self.handle(*args, **options)
      File "/Users/rikasai/.virtualenvs/fast39/lib/python3.9/site-packages/django/core/management/commands/runserver.py", line 95, in handle
        self.run(**options)
      File "/Users/rikasai/.virtualenvs/fast39/lib/python3.9/site-packages/django/core/management/commands/runserver.py", line 104, in run
        self.inner_run(None, **options)
      File "/Users/rikasai/.virtualenvs/fast39/lib/python3.9/site-packages/django/core/management/commands/runserver.py", line 137, in inner_run
        handler = self.get_handler(*args, **options)
      File "/Users/rikasai/.virtualenvs/fast39/lib/python3.9/site-packages/django/contrib/staticfiles/management/commands/runserver.py", line 27, in get_handler
        handler = super().get_handler(*args, **options)
      File "/Users/rikasai/.virtualenvs/fast39/lib/python3.9/site-packages/django/core/management/commands/runserver.py", line 64, in get_handler
        return get_internal_wsgi_application()
      File "/Users/rikasai/.virtualenvs/fast39/lib/python3.9/site-packages/django/core/servers/basehttp.py", line 45, in get_internal_wsgi_application
        return import_string(app_path)
      File "/Users/rikasai/.virtualenvs/fast39/lib/python3.9/site-packages/django/utils/module_loading.py", line 17, in import_string
        module = import_module(module_path)
      File "/Users/rikasai/.pyenv/versions/3.9.11/lib/python3.9/importlib/__init__.py", line 127, in import_module
        return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
      File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
      File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
      File "<frozen importlib._bootstrap_external>", line 850, in exec_module
      File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
      File "/Users/rikasai/code/python/FasterRunner/FasterRunner/wsgi.py", line 16, in <module>
        application = get_wsgi_application()
      File "/Users/rikasai/.virtualenvs/fast39/lib/python3.9/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
        return WSGIHandler()
      File "/Users/rikasai/.virtualenvs/fast39/lib/python3.9/site-packages/django/core/handlers/wsgi.py", line 135, in __init__
        self.load_middleware()
      File "/Users/rikasai/.virtualenvs/fast39/lib/python3.9/site-packages/django/core/handlers/base.py", line 37, in load_middleware
        mw_instance = middleware(handler)
      File "/Users/rikasai/.virtualenvs/fast39/lib/python3.9/site-packages/django/contrib/staticfiles/finders.py", line 215, in __init__
        self.storage = self.storage()
    TypeError: inner() missing 1 required positional argument: 'request'
    
    
    opened by lihuacai168 0
An extremely fast JavaScript and CSS bundler and minifier

Website | Getting started | Documentation | Plugins | FAQ Why? Our current build tools for the web are 10-100x slower than they could be: The main goa

Evan Wallace 34.2k Jan 4, 2023
Fully reponsive Chat Application built with django, javascript, materialUi, bootstrap4, html and css.

Chat app (Full Stack Frameworks with Django Project) Fully reponsive Chat Application built with django, javascript, materialUi, bootstrap4, html and

null 1 Jan 19, 2022
Tweak the form field rendering in templates, not in python-level form definitions. CSS classes and HTML attributes can be altered.

django-widget-tweaks Tweak the form field rendering in templates, not in python-level form definitions. Altering CSS classes and HTML attributes is su

Jazzband 1.8k Jan 2, 2023
Basic Form Web Development using Python, Django and CSS

thebookrain Basic Form Web Development using Python, Django and CSS This is a basic project that contains two forms - borrow and donate. The form data

Ananya Dhulipala 1 Nov 27, 2021
Packs a bunch of smaller CSS files together from 1 folder.

Packs a bunch of smaller CSS files together from 1 folder.

null 1 Dec 9, 2021
This "I P L Team Project" is developed by Prasanta Kumar Mohanty using Python with Django web framework, HTML & CSS.

I-P-L-Team-Project This "I P L Team Project" is developed by Prasanta Kumar Mohanty using Python with Django web framework, HTML & CSS. Screenshots HO

null 1 Dec 15, 2021
Use minify-html, the extremely fast HTML + JS + CSS minifier, with Django.

django-minify-html Use minify-html, the extremely fast HTML + JS + CSS minifier, with Django. Requirements Python 3.8 to 3.10 supported. Django 2.2 to

Adam Johnson 60 Dec 28, 2022
Simple alternative to Doodle polls and scheduling (Python 3, Django 3, JavaScript)

What is jawanndenn? jawanndenn is a simple web application to schedule meetings and run polls, a libre alternative to Doodle. It is using the followin

Sebastian Pipping 169 Jan 6, 2023
Organize Django settings into multiple files and directories. Easily override and modify settings. Use wildcards and optional settings files.

Organize Django settings into multiple files and directories. Easily override and modify settings. Use wildcards in settings file paths and mark setti

Nikita Sobolev 940 Jan 3, 2023
Build reusable components in Django without writing a single line of Python.

Build reusable components in Django without writing a single line of Python. {% #quote %} {% quote_photo src="/project-hail-mary.jpg" %} {% #quot

Mitchel Cabuloy 277 Jan 2, 2023
Ugly single sign-on for django projects only

django-usso Ugly single sign-on for django projects only. Do you have many django apps with different users? Do you want to use only one of those apps

Erwin Feser 1 Mar 1, 2022
Inject an ID into every log message from a Django request. ASGI compatible, integrates with Sentry, and works with Celery

Django GUID Now with ASGI support! Django GUID attaches a unique correlation ID/request ID to all your log outputs for every request. In other words,

snok 300 Dec 29, 2022
A beginner django project and also my first Django project which involves shortening of a longer URL into a short one using a unique id.

Django-URL-Shortener A beginner django project and also my first Django project which involves shortening of a longer URL into a short one using a uni

Rohini Rao 3 Aug 8, 2021
Django-Audiofield is a simple app that allows Audio files upload, management and conversion to different audio format (mp3, wav & ogg), which also makes it easy to play audio files into your Django application.

Django-Audiofield Description: Django Audio Management Tools Maintainer: Areski Contributors: list of contributors Django-Audiofield is a simple app t

Areski Belaid 167 Nov 10, 2022
Automatically deletes old file for FileField and ImageField. It also deletes files on models instance deletion.

Django Cleanup Features The django-cleanup app automatically deletes files for FileField, ImageField and subclasses. When a FileField's value is chang

Ilya Shalyapin 838 Dec 30, 2022
File and Image Management Application for django

Django Filer django Filer is a file management application for django that makes handling of files and images a breeze. Contributing This is a an open

django CMS Association 1.6k Dec 28, 2022
django Filer is a file management application for django that makes handling of files and images a breeze.

django Filer is a file management application for django that makes handling of files and images a breeze.

django CMS Association 1.6k Jan 6, 2023
This is django-import-export module that exports data into many formats

django-import-export This is django-import-export module which exports data into many formats, you can implement this in your admin panel. -> Dehydrat

Shivam Rohilla 3 Jun 3, 2021
Adding Firebase Cloud Messaging Service into a Django Project

Adding Firebase Cloud Messaging Service into a Django Project The aim of this repository is to provide a step-by-step guide and a basic project sample

Seyyed Ali Ayati 11 Jan 3, 2023