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 React Project Setup

Django-React-Project-Setup INSTALLATION: python -m pip install drps USAGE: in your cmd: python -m drps Starting fullstack project with Django and Reac

Ghazi Zabalawi 7 Feb 06, 2022
A Django Webapp performing CRUD operations on Library Database.

CRUD operations - Django Library Database A Django Webapp performing CRUD operations on Library Database. Tools & Technologies used: Django MongoDB HT

1 Dec 05, 2021
Twitter-clone using Django (DRF) + VueJS

Twitter Clone work in progress 🚧 A Twitter clone project Table Of Contents About the Project Built With Getting Started Running project License Autho

Ahmad Alwi 8 Sep 08, 2022
demo project for django channels tutorial

django_channels_chat_official_tutorial demo project for django channels tutorial code from tutorial page: https://channels.readthedocs.io/en/stable/tu

lightsong 1 Oct 22, 2021
Updates redisearch instance with igdb data used for kimosabe

igdb-pdt Update RediSearch with IGDB games data in the following Format: { "game_slug": { "name": "game_name", "cover": "igdb_coverart_url",

6rotoms 0 Jul 30, 2021
this is a simple backend for instagram with python and django

simple_instagram_backend this is a simple backend for instagram with python and django it has simple realations and api in 4 diffrent apps: 1-users: a

2 Oct 20, 2021
A Django web application that shortens long URLs. This is a demo project to show off my tech abilities.

Django URL Shortener This project is just a complete and production-ready URL shortener web application to show off my tech and coding abilities. Impo

Seyyed Ali Ayati 5 Jan 26, 2022
Django based webapp pulling in crypto news and price data via api

Deploy Django in Production FTA project implementing containerization of Django Web Framework into Docker to be placed into Azure Container Services a

0 Sep 21, 2022
A Django app for managing robots.txt files following the robots exclusion protocol

Django Robots This is a basic Django application to manage robots.txt files following the robots exclusion protocol, complementing the Django Sitemap

Jazzband 406 Dec 26, 2022
A Django based shop system

django-SHOP Django-SHOP aims to be a the easy, fun and fast e-commerce counterpart to django-CMS. Here you can find the full documentation for django-

Awesto 2.9k Dec 30, 2022
Django web apps for managing schedules.

skdue Description Skdue is a web application that makes your life easier by helping you manage your schedule. With the ability which allows you to cre

Patkamon_Awai 1 Jun 30, 2022
Repo for All the Assignments I have to submit for Internship Application !πŸ˜…

Challenges Repository for All the Assignments I have to submit for Internship Application ! πŸ˜… As You know, When ever We apply for an Internship, They

keshav Sharma 1 Sep 08, 2022
Packs a bunch of smaller CSS files together from 1 folder.

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

1 Dec 09, 2021
A web app which allows user to query the weather info of any place in the world

weather-app This is a web app which allows user to get the weather info of any place in the world as soon as possible. It makes use of OpenWeatherMap

Oladipo Adesiyan 3 Sep 20, 2021
Loguru is an exceeding easy way to do logging in Python

Django Easy Logging Easy Django logging with Loguru Loguru is an exceeding easy way to do logging in Python. django-easy-logging makes it exceedingly

Neutron Sync 8 Oct 17, 2022
Get inside your stronghold and make all your Django views default login_required

Stronghold Get inside your stronghold and make all your Django views default login_required Stronghold is a very small and easy to use django app that

Mike Grouchy 384 Nov 23, 2022
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 04, 2023
This is a basic Todo Application API using Django Rest Framework

Todo Application This is a basic Todo Application API using Django Rest Framework. Todo Section - User can View his previously added todo items, creat

Atharva Parkhe 1 Aug 09, 2022
Automatic class scheduler for Texas A&M written with Python+Django and React+Typescript

Rev Registration Description Rev Registration is an automatic class scheduler for Texas A&M, aimed at easing the process of course registration by gen

Aggie Coding Club 21 Nov 15, 2022
A real-time photo feed using Django and Pusher

BUILD A PHOTO FEED USING DJANGO Here, we will learn about building a photo feed using Django. This is similar to instagram, but a stripped off version

samuel ogundipe 4 Jan 01, 2020