A tool to automatically fix Django deprecations.

Overview

Django Codemod

CI Status Documentation Status Test coverage percentage

Poetry black pre-commit

PyPi Status pyversions license LoC

A tool to help upgrade Django projects to newer version of the framework by automatically fixing deprecations.

The problem

When maintaining a Django site, over time you'll find yourself to a point where you'll need to update to the next major version of Django. When Django APIs changes, functions move or are removed, changing usages in your project might add up to many changes. Often these changes are simple to do, but sometimes a simple "find and replace" is not possible.

Take, for instance, the removal of the url() function from Django 4.0, to be replaced by re_path(). In simple cases, you might even want to switch to path(), which has a nicer API. A typical Django project easily has 100's or routes, so this simple decision becomes a much longer task when to be made for each of them.

This solution

This project solves this problem by providing codemodders for simple changes like this. A codemodder re-writes your code from the old way to the new way.

With the help of AST analysis, we're able to understand what modifications are applicable, remove imports as they become irrelevant, and add missing ones as they are needed.

To continue the example, the tool will look at the route in the url() call, and decide whether the regular expression may be replaced by one of the built-in URL converters and use path() or stick to a regex and use re_path().

Interested? Check out the documentation for usage and the full list of codemodders.

What this tool is not

  • This tool is best suited for Django sites, NOT for reusable Django applications. The project needs to target a single Django version, e.g. 3.1.x.
  • You do NOT need to install this tool as part of your project dependencies, it is a CLI tool, not a Django package to be installed in your site.

Contributors

Thanks goes to these wonderful people (emoji key):


Bruno Alla

💻 📖 🤔

Aarni Koskela

💻 🤔 ⚠️

Adam Johnson

📖

Nikita Sobolev

📖

Chris VanderKolk

💻

John Vandenberg

🐛 💻

Anjishnu

🚇

Drew Winstel

🤔

This project follows the all-contributors specification. Contributions of any kind welcome!

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

Comments
  • Add an option to skip paths (e.g. node_modules)

    Add an option to skip paths (e.g. node_modules)

    Is your feature request related to a problem? Please describe. I use django-tailwind for CSS in a project. One of the JS libraries it imports has some Python 2 code that it puts inside my theme/static_src/node_modules/ directory, which is already in my .gitignore. Because my project is using Python 3.8, the code modder throws syntax errors for those 23 files (which is technically correct).

    Describe the solution you'd like I'd like the ability to exclude paths (via a command-line switch or other means) or have the option to have django-codemod skip files ignored by git.

    Additional context N/A, but this tool is excellent!

    enhancement 
    opened by drewbrew 8
  • Add support for adding `on_delete` for `ForeignKey` and `OneToOneField`

    Add support for adding `on_delete` for `ForeignKey` and `OneToOneField`

    Adding a feature to handle adding the on_delete argument to ForeignKey and OneToOneField types: https://docs.djangoproject.com/en/dev/releases/1.9/#foreignkey-and-onetoonefield-on-delete-argument

    TODO:

    • [x] Add some more tests
    • [x] Address adding the models import if it doesn't exist
    • [x] Support detecting the on_delete call when passed as the second position argument
    • [x] Fix on_delete matcher which doesn't seem to be finding things right
    • [x] Test internally with a complicated codebase 💃

    Stretch:

    • [ ] ~Add an input so folks can add in subclasses~ (Edit: Probably going to do this in a future PR)

    Refs #23

    enhancement 
    opened by cvanderkolk 7
  • Allow both removed-in and deprecated-in

    Allow both removed-in and deprecated-in

    I'm not sure if this is a bit controversial since the original explicitly only allowed either option, but I don't see harm in a "just bring me up to date fam" option (speaking of which, --all could be added separately).

    • makes --removed-in and --deprecated-in repeatable
    • allows mixing and matching the two * adds an --all option
    opened by akx 6
  • codemod goes all over the place and triggers OOM

    codemod goes all over the place and triggers OOM

    I was building my first fixer, found at its current horrid state at https://github.com/browniebroke/django-codemod/pull/123 (4803651c26), then I ran the following on a file which definitely needs the update

    djcodemod --removed-in 2.0 redirect_urls/utils.py
    

    The file in question can be found at https://github.com/pmac/django-redirect-urls/

    I go get a coffee, and get otherwise distracted, etc, etc. A few hours later I come back and find my machine is out of memory, and codemod is having fun in my pnpm global node_modules , which is rather large.

    I am sure I will find out how and why, but it isnt immediately clear to me, and I dare say something needs to prevent this happening to other people.

    I had thousands of these:

    Codemodding /home/jayvdb/.asdf/installs/nodejs/8.14.0/.npm/pnpm-global/1/node_modules/.registry.npmjs.org/node-gyp/3.8.0/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py
    Traceback (most recent call last):
      File "/usr/lib/python3.8/site-packages/libcst/_parser/base_parser.py", line 152, in _add_token
        plan = stack[-1].dfa.transitions[transition]
    KeyError: ReservedString(,)
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/lib/python3.8/site-packages/libcst/codemod/_cli.py", line 283, in _parallel_exec_process_stub
        input_tree = parse_module(
      File "/usr/lib/python3.8/site-packages/libcst/_parser/entrypoints.py", line 71, in parse_module
        result = _parse(
      File "/usr/lib/python3.8/site-packages/libcst/_parser/entrypoints.py", line 51, in _parse
        result = parser.parse()
      File "/usr/lib/python3.8/site-packages/libcst/_parser/base_parser.py", line 111, in parse
        self._add_token(token)
      File "/usr/lib/python3.8/site-packages/libcst/_parser/base_parser.py", line 187, in _add_token
        raise ParserSyntaxError(
    libcst._exceptions.ParserSyntaxError: Syntax Error @ 31:17.
    Incomplete input. Encountered ',', but expected ':'.
    
      except OSError, e:
                    ^
    
    Failed to codemod /home/jayvdb/.asdf/installs/nodejs/8.14.0/.npm/pnpm-global/1/node_modules/.registry.npmjs.org/node-gyp/3.8.0/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py
    

    Here is the output at the end when it was killed (kinda nice that my oom killer did kill this and not my desktop apps, which it often targets first)

    38m 42s 0.0540% complete, 1194h 25m 20s estimated for 1362939 files to go...Terminated
    
    bug 
    opened by jayvdb 6
  • ImportError on an Apple M1 Mac related to libcst

    ImportError on an Apple M1 Mac related to libcst

    Describe the bug A clear and concise description of what the bug is. ImportError on an Apple M1 Mac.

    libcst seems to be installed for x86_64, not the required arm64e.

    To Reproduce Steps to reproduce the behavior:

    % pipx --version

    1.0.0
    

    % pipx install django-codemod

      installed package django-codemod 1.10.0, Python 3.9.12
      These apps are now globally available
        - djcodemod
    done! ✨ 🌟 ✨
    

    % djcodemod run --deprecated-in 1.3 .

    Running codemods: ActionCheckboxNameTransformer
    Executing codemod...
    Traceback (most recent call last):
      File "/Users/cclauss/.local/bin/djcodemod", line 8, in <module>
        sys.exit(djcodemod())
      File "/Users/cclauss/.local/pipx/venvs/django-codemod/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
        return self.main(*args, **kwargs)
      File "/Users/cclauss/.local/pipx/venvs/django-codemod/lib/python3.9/site-packages/rich_click/rich_group.py", line 21, in main
        return super().main(*args, standalone_mode=False, **kwargs)
      File "/Users/cclauss/.local/pipx/venvs/django-codemod/lib/python3.9/site-packages/click/core.py", line 1055, in main
        rv = self.invoke(ctx)
      File "/Users/cclauss/.local/pipx/venvs/django-codemod/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
      File "/Users/cclauss/.local/pipx/venvs/django-codemod/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/Users/cclauss/.local/pipx/venvs/django-codemod/lib/python3.9/site-packages/click/core.py", line 760, in invoke
        return __callback(*args, **kwargs)
      File "/Users/cclauss/.local/pipx/venvs/django-codemod/lib/python3.9/site-packages/django_codemod/cli.py", line 188, in run
        call_command(command_instance, files)
      File "/Users/cclauss/.local/pipx/venvs/django-codemod/lib/python3.9/site-packages/django_codemod/cli.py", line 195, in call_command
        result = parallel_exec_transform_with_prettyprint(
      File "/Users/cclauss/.local/pipx/venvs/django-codemod/lib/python3.9/site-packages/libcst/codemod/_cli.py", line 623, in parallel_exec_transform_with_prettyprint
        parse_module(
      File "/Users/cclauss/.local/pipx/venvs/django-codemod/lib/python3.9/site-packages/libcst/_parser/entrypoints.py", line 109, in parse_module
        result = _parse(
      File "/Users/cclauss/.local/pipx/venvs/django-codemod/lib/python3.9/site-packages/libcst/_parser/entrypoints.py", line 42, in _parse
        from libcst.native import parse_expression, parse_module, parse_statement
    ImportError: dlopen(/Users/cclauss/.local/pipx/venvs/django-codemod/lib/python3.9/site-packages/libcst/native.cpython-39-darwin.so, 0x0002):
        tried: '/Users/cclauss/.local/pipx/venvs/django-codemod/lib/python3.9/site-packages/libcst/native.cpython-39-darwin.so'
        (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e'))
    

    Additional context Add any other context about the problem here.

    bug 
    opened by cclauss 5
  • ParserSyntaxError when a module have a

    ParserSyntaxError when a module have a "from django.utils import timezone" import

    Describe the bug

    I'm migrating a medium-sized codebase, and I found this strange behavior: if the code has a "from django.utils import timezone" import, a ParserSyntaxError is raised

    $ pre-commit run -a
    djcodemod................................................................Failed
    - hook id: djcodemod
    - exit code: 1
    
    Running codemods: AssignmentTagTransformer, CookieDateTransformer, FixedOffsetTransformer, FloatRangeFormFieldTransformer, FloatRangeModelFieldTransformer, InlineHasAddPermissionsTransformer, ModelsPermalinkTransformer, OnDeleteTransformer, QuerySetPaginatorTransformer, SignalDisconnectWeakTransformer, URLResolversTransformer
    Executing codemod...
    Finished codemodding 62 files!
     - Transformed 62 files successfully.
     - Skipped 0 files.
     - Failed to codemod 0 files.
     - 0 warnings were generated.
    Running codemods: AssignmentTagTransformer, CookieDateTransformer, FixedOffsetTransformer, FloatRangeFormFieldTransformer, FloatRangeModelFieldTransformer, InlineHasAddPermissionsTransformer, ModelsPermalinkTransformer, OnDeleteTransformer, QuerySetPaginatorTransformer, SignalDisconnectWeakTransformer, URLResolversTransformer
    Executing codemod...
    Codemodding /home/luzfcb/projects/big_project/foobar/tests/test_managers.py
    Traceback (most recent call last):
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/_parser/base_parser.py", line 152, in _add_token
        plan = stack[-1].dfa.transitions[transition]
    KeyError: ReservedString(import)
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/codemod/_cli.py", line 295, in _execute_transform
        output_tree = transformer.transform_module(input_tree)
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/codemod/_command.py", line 88, in transform_module
        tree = self._instantiate_and_run(transform, tree)
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/codemod/_command.py", line 58, in _instantiate_and_run
        return inst.transform_module(tree)
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/codemod/_codemod.py", line 108, in transform_module
        return self.transform_module_impl(tree_with_metadata)
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/codemod/_visitor.py", line 32, in transform_module_impl
        return tree.visit(self)
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/_nodes/module.py", line 91, in visit
        result = super(Module, self).visit(visitor)
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/_nodes/base.py", line 235, in visit
        leave_result = visitor.on_leave(self, with_updated_children)
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/matchers/_visitors.py", line 512, in on_leave
        retval = CSTTransformer.on_leave(self, original_node, updated_node)
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/_visitors.py", line 72, in on_leave
        updated_node = leave_func(original_node, updated_node)
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/codemod/visitors/_add_imports.py", line 393, in leave_Module
        *[
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/codemod/visitors/_add_imports.py", line 394, in <listcomp>
        parse_statement(
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/_parser/entrypoints.py", line 100, in parse_statement
        result = _parse(
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/_parser/entrypoints.py", line 51, in _parse
        result = parser.parse()
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/_parser/base_parser.py", line 111, in parse
        self._add_token(token)
      File "/home/luzfcb/.cache/pre-commit/repof_bg4wfe/py_env-python3/lib/python3.9/site-packages/libcst/_parser/base_parser.py", line 187, in _add_token
        raise ParserSyntaxError(
    libcst._exceptions.ParserSyntaxError: Syntax Error @ 1:7.
    Incomplete input. Encountered 'import', but expected '.', '...', or 'NAME'.
    
    from  import datetime
          ^
    
    Failed to codemod /home/luzfcb/projects/big_project/foobar/tests/test_managers.py
    
    

    To Reproduce

    pipx install "django-codemod==1.5.5"
    
    echo "from django.utils import timezone" > foobar.py
    
    djcodemod run --deprecated-in 1.9 --deprecated-in 1.10 --deprecated-in 1.11 --deprecated-in 2.0 --deprecated-in 2.1 --deprecated-in 2.2 foobar.py
    
    

    Additional context

    bug 
    opened by luzfcb 5
  • chore(ci): merge test, lint and commitlint workflows

    chore(ci): merge test, lint and commitlint workflows

    Fixes #214

    What this PR does : Merges test.yml, lint.yml and commitlint.yml into a single file ci.yml.

    This is my first ever attempt at dealing with CI, so, do let me know if I need to correct something! Thanks :)

    tests 
    opened by iamshnoo 4
  • Add tests to sdist

    Add tests to sdist

    Describe the feature Currently the tests are not included in the PyPI sdist. As a result in order to do packaging for openSUSE at https://build.opensuse.org/package/show/devel:languages:python:django/python-django-codemod , I need to fetch the sdist from Github, which is a few extra steps.

    Please can the tests be added to the sdist.

    To Reproduce Download sdist from PyPI, untar and see that now tests are present.

    bug 
    opened by jayvdb 3
  • django.contrib.postgres.fields.jsonb not captured by codemod

    django.contrib.postgres.fields.jsonb not captured by codemod

    Link to Django docs Link to release note section where the change and suitable replacement is mentioned:

    https://docs.djangoproject.com/en/dev/releases/3.1/#postgresql-jsonfield

    Quote of the relevant paragraph

    In case links gets outdated/removed:

    PostgreSQL JSONField¶ django.contrib.postgres.fields.JSONField and django.contrib.postgres.forms.JSONField are deprecated in favor of models.JSONField and forms.JSONField.

    The undocumented django.contrib.postgres.fields.jsonb.KeyTransform and django.contrib.postgres.fields.jsonb.KeyTextTransform are also deprecated in favor of the transforms in django.db.models.fields.json.

    The new JSONFields, KeyTransform, and KeyTextTransform can be used on all supported database backends.

    Deprecation timeline

    • Deprecated in: 3.1
    • Removed in: 4.0

    My thought is that this scenario should be covered by djcodemod although the case is not explicitly covered in the release notes for 3.1.

    It shows up as a deprecation when doing checks but djcodemod doesn't fix:

    mint_develop_django | pool.Pool.properties: (fields.W904) django.contrib.postgres.fields.JSONField is deprecated. Support for it (except in historical migrations) will be removed in Django 4.0.
    mint_develop_django |   HINT: Use django.db.models.JSONField instead.
    

    The offending import in models.py is:

    from django.contrib.postgres.fields.jsonb import JSONField
    
    

    Probably an artifact of the way Pycharm offers imports.

    enhancement 
    opened by campbellmc 3
  • Allow running specific codemod(s)

    Allow running specific codemod(s)

    Fixes #207.

    $ djcodemod run --help
    Usage: djcodemod run [OPTIONS] PATH...
    
      Automatically fixes deprecations removed Django deprecations.
    
      This command takes the path to target as argument and a version of Django
      to select code modifications to apply.
    
    Options:
      --removed-in VERSION            The version of Django where feature are
                                      removed.
    
      --deprecated-in VERSION         The version of Django where deprecations
                                      started.
    
      --codemod (see `djcodemod list`)
                                      Choose a specific codemod to run. Can be
                                      repeated.
    
      --help                          Show this message and exit.
    
    opened by akx 3
  • Merge test, lint and commitlint workflows

    Merge test, lint and commitlint workflows

    We have 3 workflows that run during CI at the moment: test.yml, lint.yml and commitlint.yml. We could simplify this by merging them into a single ci.yml workflow, with 3 separate jobs test, lint and commitlint.

    good first issue hacktoberfest 
    opened by browniebroke 3
  • fix(deps): update dependency rich to v13

    fix(deps): update dependency rich to v13

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | rich | <13 -> <14 | age | adoption | passing | confidence |


    Release Notes

    Textualize/rich

    v13.0.0

    Compare Source

    Fixed
    Changed
    Added

    v12.6.0

    Compare Source

    Added
    Fixed
    Changed
    • Removed border from code blocks in Markdown

    v12.5.1

    Compare Source

    Fixed

    v12.5.0

    Compare Source

    Added
    • Environment variables JUPYTER_COLUMNS and JUPYTER_LINES to control width and height of console in Jupyter
    • Markdown friendly Box style, MARKDOWN, for rendering tables ready to copy into markdown files
    • inspect will prefix coroutine functions with async def
    • Style.__add__ will no longer return NotImplemented
    • Remove rich._lru_cache
    Changed
    • Default width of Jupyter console size is increased to 115
    • Optimized Segment.divide
    Fixed

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    dependencies 
    opened by renovate[bot] 1
  • Django 4  django.dispatch.Signal unexpected keyword argument providing_args

    Django 4 django.dispatch.Signal unexpected keyword argument providing_args

    SUSE Tumbleweed has updated django to 4.0, and while fixing django packages I've noticed a lot of packages are failing with this. e.g. https://build.opensuse.org/package/show/home:jayvdb:branches:devel:languages:python:django/python-django-avatar

    https://docs.djangoproject.com/en/dev/releases/4.0/

    See Features deprecated in 3.1 for details on these changes, including how to remove usage of these features. .. The providing_args argument for django.dispatch.Signal is removed.

    Deprecation timeline

    • Deprecated in: 3.1
    • Removed in: 4.0
    enhancement 
    opened by jayvdb 5
  • Option to show diffs

    Option to show diffs

    Is your feature request related to a problem? Please describe. When running djcodemod in a build worker, it would be useful to show the changes it made so the logs record the transformations made, and also so it is easy to copy the diffs to submit upstream.

    This is especially useful when working from tarballs, as there is no VCS to be able to generate diffs.

    Describe the solution you'd like A disabled-by-default flag like --show-diffs which emits the changes which are being written to disk as patch-compatible stdout .

    Additional context e.g. it takes a couple of secs to add `djcodemod run --removed-in 4.0 test_project/ to the build scripts for https://build.opensuse.org/package/show/home:jayvdb:branches:devel:languages:python:django/python-django-debreach , to allow me to provide a more detailed issue at https://github.com/lpomfrey/django-debreach/issues/21

    But I really should check the diffs to make sure djcodemod is not introducing bugs in the process, and if there were diffs I could have easily added to the upstream issue an inline patch for the first which djcodemod knows how to fix, which gets them closer to the harder second problem which djcodemod doesnt know how to solve.

    enhancement 
    opened by jayvdb 1
  • Dependency Dashboard

    Dependency Dashboard

    This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

    Open

    These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

    Detected dependencies

    github-actions
    .github/workflows/ci.yml
    • actions/checkout v3
    • snok/install-poetry v1.3.3
    • actions/setup-python v4
    • codecov/codecov-action v3.1.1
    • actions/checkout v3
    • actions/setup-python v4
    • actions/checkout v3
    • wagoid/commitlint-github-action v5.3.0
    • actions/checkout v3
    • relekang/python-semantic-release v7.32.2
    .github/workflows/codeql.yml
    • actions/checkout v3
    • github/codeql-action v2
    • github/codeql-action v2
    • github/codeql-action v2
    .github/workflows/hacktoberfest.yml
    • browniebroke/hacktoberfest-labeler-action v2.3.0
    .github/workflows/issue-manager.yml
    • tiangolo/issue-manager 0.4.0
    .github/workflows/labels.yml
    • actions/checkout v3
    • actions/setup-python v4
    .github/workflows/poetry-upgrade.yml
    • browniebroke/github-actions v1
    .github/workflows/semantic-release.yml
    • actions/checkout v3
    • relekang/python-semantic-release v7.32.2
    poetry
    pyproject.toml
    • click <9
    • libcst ==0.4.9
    • pathspec >=0.6,<1
    • rich <13
    • rich-click >=1.0
    • parameterized ^0.8.0
    • pytest ^7.0
    • pytest-cov ^4.0
    • pytest-mock ^3.3
    • myst-parser >=0.16
    • sphinx >=4.0
    • sphinx-rtd-theme >=1.0
    pre-commit
    .pre-commit-config.yaml
    • pre-commit/pre-commit-hooks v4.4.0
    • python-poetry/poetry 1.3.1
    • pre-commit/mirrors-prettier v3.0.0-alpha.4
    • asottile/pyupgrade v3.3.1
    • PyCQA/isort 5.11.4
    • psf/black 22.12.0
    • codespell-project/codespell v2.2.2
    • PyCQA/flake8 6.0.0
    • commitizen-tools/commitizen v2.39.1
    • PyCQA/bandit 1.7.4

    • [ ] Check this box to trigger a request for Renovate to run again on this repository
    opened by renovate[bot] 0
Releases(v1.11.3)
Django CacheMiddleware has a multi-threading issue with pylibmc

django-pylibmc-bug Django CacheMiddleware has a multi-threading issue with pylibmc. CacheMiddleware shares a thread-unsafe cache object with many thre

Iuri de Silvio 1 Oct 19, 2022
A visual indicator of what environment/system you're using in django

A visual indicator of what environment/system you're using in django

Mark Walker 4 Nov 26, 2022
Django-discord-bot - Framework for creating Discord bots using Django

django-discord-bot Framework for creating Discord bots using Django Uses ASGI fo

Jamie Bliss 1 Mar 04, 2022
Django Livre Bank

Django Livre Bank Projeto final da academia Construdelas. API de um banco fictício com clientes, contas e transações. Integrantes da equipe Bárbara Sa

Cecília Costa 3 Dec 22, 2021
Django React - Purity Dashboard (Open-Source) | AppSeed

Django React Purity Dashboard Start your Development with an Innovative Admin Template for Chakra UI and React. Purity UI Dashboard is built with over

App Generator 19 Sep 19, 2022
Example project demonstrating using Django’s test runner with Coverage.py

Example project demonstrating using Django’s test runner with Coverage.py Set up with: python -m venv --prompt . venv source venv/bin/activate python

Adam Johnson 5 Nov 29, 2021
Auth module for Django and GarpixCMS

Garpix Auth Auth module for Django/DRF projects. Part of GarpixCMS. Used packages: django rest framework social-auth-app-django django-rest-framework-

GARPIX CMS 18 Mar 14, 2022
✋ Auto logout a user after specific time in Django

django-auto-logout Auto logout a user after specific time in Django. Works with Python 🐍 ≥ 3.7, Django 🌐 ≥ 3.0. ✔️ Installation pip install django-a

Georgy Bazhukov 21 Dec 26, 2022
Modular search for Django

Haystack Author: Daniel Lindsley Date: 2013/07/28 Haystack provides modular search for Django. It features a unified, familiar API that allows you to

Haystack Search 3.4k Jan 08, 2023
A clone of https://virgool.io written in django

Virgool clone A clone of virgool blog written in django Installation first rename the .env.sample to .env and fill it. with docker docker-compose up -

Danial Selmipoor 7 Dec 23, 2022
Blog focused on skills enhancement and knowledge sharing. Tech Stack's: Vue.js, Django and Django-Ninja

Blog focused on skills enhancement and knowledge sharing. Tech Stack's: Vue.js, Django and Django-Ninja

Wanderson Fontes 2 Sep 21, 2022
Super simple bar charts for django admin list views visualizing the number of objects based on date_hierarchy using Chart.js.

Super simple bar charts for django admin list views visualizing the number of objects based on date_hierarchy using Chart.js.

foorilla LLC 4 May 18, 2022
Django Rest Framework + React application.

Django Rest Framework + React application.

2 Dec 19, 2022
Zendesk Assignment - Django Based Ticket Viewer

Zendesk-Coding-Challenge Django Based Ticket Viewer The assignment has been made using Django. Important methods have been scripted in views.py. Excep

Akash Sampurnanand Pandey 0 Dec 23, 2021
Django Federated Login provides an authentication bridge between Django projects and OpenID-enabled identity providers.

Django Federated Login Django Federated Login provides an authentication bridge between Django projects and OpenID-enabled identity providers. The bri

Bouke Haarsma 18 Dec 29, 2020
django-reversion is an extension to the Django web framework that provides version control for model instances.

django-reversion django-reversion is an extension to the Django web framework that provides version control for model instances. Requirements Python 3

Dave Hall 2.8k Jan 02, 2023
An API was build with Django to store and retrieve information about various musical instruments.

The project is meant to be a starting point, an experimentation or a basic example of a way to develop an API with Django. It is an exercise on using Django and various python technologies and design

Kostas Ziovas 2 Dec 25, 2021
Use webpack to generate your static bundles without django's staticfiles or opaque wrappers.

django-webpack-loader Use webpack to generate your static bundles without django's staticfiles or opaque wrappers. Django webpack loader consumes the

2.4k Dec 24, 2022
Django-environ allows you to utilize 12factor inspired environment variables to configure your Django application.

Django-environ django-environ allows you to use Twelve-factor methodology to configure your Django application with environment variables. import envi

Daniele Faraglia 2.7k Jan 07, 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 03, 2023