This is a repository for collecting global custom management extensions for the Django Framework.

Overview

Django Extensions

Latest PyPI version Supports Wheel format Coverage

Django Extensions is a collection of custom extensions for the Django Framework.

Getting Started

The easiest way to figure out what Django Extensions are all about is to watch the excellent screencast by Eric Holscher (watch the video on vimeo). In a couple minutes Eric walks you through a half a dozen command extensions. There is also a short screencast on GoDjango's Youtube Channel to help show you even more.

Requirements

Django Extensions requires Django 2.2 or later.

Getting It

You can get Django Extensions by using pip:

$ pip install django-extensions

If you want to install it from source, grab the git repository from GitHub and run setup.py:

$ git clone git://github.com/django-extensions/django-extensions.git
$ cd django-extensions
$ python setup.py install

Installing It

To enable django_extensions in your project you need to add it to INSTALLED_APPS in your projects settings.py file:

INSTALLED_APPS = (
    ...
    'django_extensions',
    ...
)

Using It

Generate (and view) a graphviz graph of app models:

$ python manage.py graph_models -a -o myapp_models.png

Produce a tab-separated list of (url_pattern, view_function, name) tuples for a project:

$ python manage.py show_urls

Check templates for rendering errors:

$ python manage.py validate_templates

Run the enhanced django shell:

$ python manage.py shell_plus

Run the enhanced django runserver, (requires Werkzeug install):

$ python manage.py runserver_plus

Getting Involved

Open Source projects can always use more help. Fixing a problem, documenting a feature, adding translation in your language. If you have some time to spare and like to help us, here are the places to do so:

Documentation

You can view documentation online at:

Or you can look at the docs/ directory in the repository.

Support

Django Extensions is free and always will be. It is development and maintained by developers in an Open Source manner. Any support is welcome. You could help by writing documentation, pull-requests, report issues and/or translations.

Please remember that nobody is paid directly to develop or maintain Django Extensions so we do have to divide our time between putting food on the table, family, this project and the rest of life :-)

Comments
  • Display correct error message for missing imports

    Display correct error message for missing imports

    When a missing import is found in a script, this changes the error message displayed to indicate that there's a missing import, rather than giving a generic error message similar to the one raised when the script does not exist

    For a case such as this: test_script.py

    import nonexistrentpackage
    
    def run():
        print("Test")
    

    The error message raised previously was:

    No (valid) module for script 'test_script' found
    Try running with a higher verbosity level like: -v2 or -v3
    

    This changes the error to be more descriptive, without requiring the user to change the default verbosity mode, i.e.

    Cannot import module 'scripts.test_script': No module named nonexistent.
    No (valid) module for script 'test_script' found
    Try running with a higher verbosity level like: -v2 or -v3
    
    opened by kevgathuku 35
  • Migrations error

    Migrations error

    After the update from 1.5.5 to 1.5.6 this error happens whenever I run makemigrations. Apparently the django can't handle the timefield changes. Btw, we're talking 1.7.* I did not try 1.8.*

    Traceback (most recent call last):
      File "./manage.py", line 11, in <module>
        execute_from_command_line(sys.argv)
      File "env/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
        utility.execute()
      File "env/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute
        self.fetch_command(subcommand).run_from_argv(self.argv)
      File "env/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv
        self.execute(*args, **options.__dict__)
      File "env/lib/python2.7/site-packages/raven/contrib/django/management/__init__.py", line 41, in new_execute
        return original_func(self, *args, **kwargs)
      File "env/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute
        output = self.handle(*args, **options)
      File "env/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py", line 124, in handle
        self.write_migration_files(changes)
      File "/env/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py", line 152, in write_migration_files
        migration_string = writer.as_string()
      File "env/lib/python2.7/site-packages/django/db/migrations/writer.py", line 131, in as_string
        operation_string, operation_imports = OperationWriter(operation).serialize()
      File "env/lib/python2.7/site-packages/django/db/migrations/writer.py", line 88, in serialize
        arg_string, arg_imports = MigrationWriter.serialize(arg_value)
      File "env/lib/python2.7/site-packages/django/db/migrations/writer.py", line 333, in serialize
        return cls.serialize_deconstructed(path, args, kwargs)
      File "env/lib/python2.7/site-packages/django/db/migrations/writer.py", line 239, in serialize_deconstructed
        arg_string, arg_imports = cls.serialize(arg)
      File "env/lib/python2.7/site-packages/django/db/migrations/writer.py", line 409, in serialize
        "topics/migrations/#migration-serializing" % value
    ValueError: Cannot serialize: <class django.db.models.fields.NOT_PROVIDED at 0x105702050>
    There are some values Django cannot serialize into migration files.
    For more, see https://docs.djangoproject.com/en/dev/topics/migrations/#migration-serializing
    
    opened by codingjoe 32
  • Fix #1011 AutoSlugField for foreignkey relationships

    Fix #1011 AutoSlugField for foreignkey relationships

    Fixes #1011

    This PR allows the user to span ForeignKey relationships with AutoSlugField's populate_from argument. It also allows the user use model methods in the populate_from argument.

    @trbs please let me know any feedback or suggestions? Thanks again for your work on this library, and for considering this PR!

    opened by YPCrumble 23
  • Adding list_fields command

    Adding list_fields command

    When working on projects with complex relations it can get confusing to remember how to refer to these relationships in queries. Additionally, sometimes it's annoying to dig through the models.py to find the field name of a particular field. The 'list_fields' command lists out all fields for each model within each installed app.

    improvement need test case 
    opened by OmenApps 22
  • AutoSlugField: fix allow_duplicates

    AutoSlugField: fix allow_duplicates

    Resolves #801

    The issue is that if allow_duplicates is True, create_slug will return the slug directly without setting the attribute (field name) on the model instance. find_unique takes care of this in case allow_duplicates is False or not set.

    opened by beshrkayali 21
  • shell_plus --notebook not working in 1.7

    shell_plus --notebook not working in 1.7

    from docs looks like there's a new setup() method.

    ---------------------------------------------------------------------------
    AppRegistryNotReady                       Traceback (most recent call last)
    <ipython-input-1-7474fc4fe95e> in <module>()
          [CODE ACCESSING MODELS VIA DJANGO ORM]
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\db\models\manager.pyc in manager_method(self, *args, **kwargs)
         90         def create_method(name, method):
         91             def manager_method(self, *args, **kwargs):
    ---> 92                 return getattr(self.get_queryset(), name)(*args, **kwargs)
         93             manager_method.__name__ = method.__name__
         94             manager_method.__doc__ = method.__doc__
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\db\models\query.pyc in filter(self, *args, **kwargs)
        687         set.
        688         """
    --> 689         return self._filter_or_exclude(False, *args, **kwargs)
        690 
        691     def exclude(self, *args, **kwargs):
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\db\models\query.pyc in _filter_or_exclude(self, negate, *args, **kwargs)
        705             clone.query.add_q(~Q(*args, **kwargs))
        706         else:
    --> 707             clone.query.add_q(Q(*args, **kwargs))
        708         return clone
        709 
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\db\models\sql\query.pyc in add_q(self, q_object)
       1285         existing_inner = set(
       1286             (a for a in self.alias_map if self.alias_map[a].join_type == self.INNER))
    -> 1287         clause, require_inner = self._add_q(where_part, self.used_aliases)
       1288         self.where.add(clause, AND)
       1289         for hp in having_parts:
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\db\models\sql\query.pyc in _add_q(self, q_object, used_aliases, branch_negated, current_negated)
       1312                 child_clause, needed_inner = self.build_filter(
       1313                     child, can_reuse=used_aliases, branch_negated=branch_negated,
    -> 1314                     current_negated=current_negated, connector=connector)
       1315                 joinpromoter.add_votes(needed_inner)
       1316             target_clause.add(child_clause, connector)
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\db\models\sql\query.pyc in build_filter(self, filter_expr, branch_negated, current_negated, can_reuse, connector)
       1136         if not arg:
       1137             raise FieldError("Cannot parse keyword query %r" % arg)
    -> 1138         lookups, parts, reffed_aggregate = self.solve_lookup_type(arg)
       1139 
       1140         # Work out the lookup type and remove it from the end of 'parts',
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\db\models\sql\query.pyc in solve_lookup_type(self, lookup)
       1074             if aggregate:
       1075                 return aggregate_lookups, (), aggregate
    -> 1076         _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta())
       1077         field_parts = lookup_splitted[0:len(lookup_splitted) - len(lookup_parts)]
       1078         if len(lookup_parts) == 0:
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\db\models\sql\query.pyc in names_to_path(self, names, opts, allow_many, fail_on_missing)
       1337                 name = opts.pk.name
       1338             try:
    -> 1339                 field, model, direct, m2m = opts.get_field_by_name(name)
       1340             except FieldDoesNotExist:
       1341                 # We didn't found the current field, so move position back
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\db\models\options.pyc in get_field_by_name(self, name)
        414                 return self._name_map[name]
        415             except AttributeError:
    --> 416                 cache = self.init_name_map()
        417                 return cache[name]
        418         except KeyError:
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\db\models\options.pyc in init_name_map(self)
        443         # We intentionally handle related m2m objects first so that symmetrical
        444         # m2m accessor names can be overridden, if necessary.
    --> 445         for f, model in self.get_all_related_m2m_objects_with_model():
        446             cache[f.field.related_query_name()] = (f, model, False, True)
        447         for f, model in self.get_all_related_objects_with_model():
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\db\models\options.pyc in get_all_related_m2m_objects_with_model(self)
        559             cache = self._related_many_to_many_cache
        560         except AttributeError:
    --> 561             cache = self._fill_related_many_to_many_cache()
        562         return list(six.iteritems(cache))
        563 
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\db\models\options.pyc in _fill_related_many_to_many_cache(self)
        573                 else:
        574                     cache[obj] = model
    --> 575         for klass in self.apps.get_models():
        576             if not klass._meta.swapped:
        577                 for f in klass._meta.local_many_to_many:
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\utils\lru_cache.pyc in wrapper(*args, **kwds)
         99                         stats[HITS] += 1
        100                         return result
    --> 101                     result = user_function(*args, **kwds)
        102                     cache[key] = result
        103                     stats[MISSES] += 1
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\apps\registry.pyc in get_models(self, app_mod, include_auto_created, include_deferred, include_swapped)
        166         Set the corresponding keyword argument to True to include such models.
        167         """
    --> 168         self.check_models_ready()
        169         if app_mod:
        170             warnings.warn(
    
    C:\Python\lib\site-packages\django-1.7c1-py2.7.egg\django\apps\registry.pyc in check_models_ready(self)
        129         """
        130         if not self.models_ready:
    --> 131             raise AppRegistryNotReady("Models aren't loaded yet.")
        132 
        133     def get_app_configs(self):
    
    AppRegistryNotReady: Models aren't loaded yet.
    
    opened by jonathanstrong 20
  • Python 3 and Django 1.5 support

    Python 3 and Django 1.5 support

    Pull request for #288

    I've added Python 3 support using six, which I added to install_requires.

    I couldn't find any information about the supported python versions of django-extensions, but if 2.6 is required at least (there are no entries with a version < 2.6 in tox.ini), then we could remove utils/uuid.py

    opened by fhahn 20
  • RandomCharField - Prepopulates random character string.

    RandomCharField - Prepopulates random character string.

    Hello,

    I added support for a random character field. Its purpose is to create an unique id unrelated to the database id to prevent site walking and sequential attacks on something like a unsubscribe link. A sample use case would be a link shortening service like bit.ly, http://bit.ly/1AbL4UC.

    Non-Breaking changes:

    • Factored out query logic to ensure uniqueness to BaseUniqueField.
    • The field value factories have been moved to generators.
    • Added mock as a test requirement.

    Possibly breaking change:

    • The slug field check will only be tried 100 times. Previously there was no limit. That was done because the field value factories have been moved to a generators.

    Please let me know your comments and feedback. I enjoyed working on this code very much!

    opened by dpetzold 19
  • 1.6.0 breaks JSONField

    1.6.0 breaks JSONField

    Hey there, I'm getting test failures when using Django-extensions 1.6.0. The only thing we use from Django-extensions is the JSONField, and using 1.6.0 over 1.5.9 gets some strange JSON errors: ValueError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1).

    I've done some digging and it seems that it's trying to decode the str() representation of a dict, rather than the JSON representation, so I'm guessing there is some issue with serializing dictionaries into the JSONField where only str(), not json.dumps(), is being called.

    opened by orf 18
  • shell_plus --notebook gives bad configuration error

    shell_plus --notebook gives bad configuration error

    I am getting the following error when trying to use shell_plus --notebook:

    [C 04:28:24.002 NotebookApp] Bad config encountered during initialization: [C 04:28:24.003 NotebookApp] Unrecognized flag: '--ext'

    This is my pip environment: backports.ssl-match-hostname==3.4.0.2 certifi==14.5.14 Django==1.7.4 django-account==0.1.14 django-appconf==1.0.1 django-bootstrap-form==3.1 django-debug-toolbar==1.2.2 django-extensions==1.5.0 django-jsonfield==0.9.13 django-registration==1.0 django-suit==0.2.12 django-urlauth==0.1.8 django-user-accounts==1.0.1 djangorestframework==3.0.5 docutils==0.12 eventlog==0.10.0 gnureadline==6.3.3 ipython==3.0.0 Jinja2==2.7.3 jsonschema==2.4.0 MarkupSafe==0.23 metron==1.3.5 mistune==0.5 MySQL-python==1.2.5 nose==1.3.4 numpydoc==0.5 pinax-theme-bootstrap==5.7.1 psycopg2==2.6 ptyprocess==0.4 Pygments==2.0.2 pytz==2014.10 PyYAML==3.11 pyzmq==14.5.0 requests==2.5.3 sh==1.11 simplejson==3.6.5 six==1.9.0 Sphinx==1.2.3 sqlparse==0.1.14 terminado==0.5 tornado==4.1

    bug need patch 
    opened by kutenai 18
  • put the output of show_urls in columns

    put the output of show_urls in columns

    I find the output of show_urls hard to read, so I wrote a simple script to format the output (screenshot).

    It would be nice if this feature were integrated. show_urls could have an option to put the output in columns.

    opened by jabbalaci 18
  • ModelUserFieldPermissionMixin: fix error in checking for the right user of an edited model instance

    ModelUserFieldPermissionMixin: fix error in checking for the right user of an edited model instance

    The mixin so far test for the right user against the first entry of Model.objects.all(). This entry has, most of the time, nothing to do with the actual entry (to edit/update/delete). Now the mixin tests the actual user against the user of the actual model instance given by pk or slug. Fix tests accordingly. Until now, the tests for the mixin confirm the produced results (anonymous user) and test not the real expectation (second user can't get data of the first user).

    opened by HenryJobst 0
  • Using on save(update_fields=[]) TimeStampedModel does not update modified

    Using on save(update_fields=[]) TimeStampedModel does not update modified

    When using the update_feilds kwarg this skips updating the modified field as well. update fields Django Docs

    Something like this could be added to the save() of TimeStampedModel

    update_fields = kwargs.pop('update_fields', None)
            if update_fields and 'modified' not in update_fields:
                update_fields += ['modified']
    
    opened by dhcrain 1
  • Side effects by running test_pipchecker_with_outdated_requirement_on_pip20_1

    Side effects by running test_pipchecker_with_outdated_requirement_on_pip20_1

    When running test_pipchecker_with_outdated_requirement_on_pip20_1 in development, it modifies the environment by installing pip 20.1 without restoring the environment after the test.

    Discovered this issue when working on #1778. The first run it fails, the second run its working again since pip 20.1 does not have that particular issue.

    opened by foarsitter 0
  • Pipchecker fails on Python 3.11 with pip >= 22.1

    Pipchecker fails on Python 3.11 with pip >= 22.1

    When running the tests with Python 3.11 and pip 22.1 or greater an AttributeError is thrown as shown below. It has something to do with https://pip.pypa.io/en/stable/news/#id64

    AttributeError: 'PathDistribution' object has no attribute 'project_name'
    
    /PycharmProjects/django-extensions/venv4/lib/python3.11/site-packages/_distutils_hack/__init__.py:33: UserWarning: Setuptools is replacing distutils.
      warnings.warn("Setuptools is replacing distutils.")
    Traceback (most recent call last):
      File "/PycharmProjects/django-extensions/manage.py", line 13, in <module>
        execute_from_command_line(sys.argv)
      File "/PycharmProjects/django-extensions/venv4/lib/python3.11/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
        utility.execute()
      File "/PycharmProjects/django-extensions/venv4/lib/python3.11/site-packages/django/core/management/__init__.py", line 440, in execute
        self.fetch_command(subcommand).run_from_argv(self.argv)
      File "/PycharmProjects/django-extensions/venv4/lib/python3.11/site-packages/django/core/management/base.py", line 402, in run_from_argv
        self.execute(*args, **cmd_options)
      File "/PycharmProjects/django-extensions/venv4/lib/python3.11/site-packages/django/core/management/base.py", line 448, in execute
        output = self.handle(*args, **options)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/PycharmProjects/django-extensions/django_extensions/management/utils.py", line 62, in inner
        ret = func(self, *args, **kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/PycharmProjects/django-extensions/django_extensions/management/commands/pipchecker.py", line 141, in handle
        self.check_pypi()
      File "/PycharmProjects/django-extensions/django_extensions/management/commands/pipchecker.py", line 167, in check_pypi
        name = dist.project_name
               ^^^^^^^^^^^^^^^^^
    AttributeError: 'PathDistribution' object has no attribute 'project_name'
    
    opened by foarsitter 0
  • flake8 pre-commit hooks version outdated

    flake8 pre-commit hooks version outdated

    Since the version of flake8 is not pinned, the Github actions use a different version of flake8 then pre-commit. This gives inconsistent outcomes between the linter and pre-commit action.

    opened by foarsitter 0
Releases(3.2.1)
  • 3.2.1(Sep 9, 2022)

    What's Changed

    • fix translation interpolation in prospective arabic translations by @matthugs in https://github.com/django-extensions/django-extensions/pull/1740
    • Use list values for requires_system_checks by @danlamanna in https://github.com/django-extensions/django-extensions/pull/1736
    • Added support for Django 4.1. by @felixxm in https://github.com/django-extensions/django-extensions/pull/1763
    • Add option to ignore files on runserver_plus reload by @marciomazza in https://github.com/django-extensions/django-extensions/pull/1762
    • docs: Fix a few typos by @timgates42 in https://github.com/django-extensions/django-extensions/pull/1764
    • Remove default_app_config with change to only support Django 3.2+ by @phillipuniverse in https://github.com/django-extensions/django-extensions/pull/1741
    • Typos by @ollz272 in https://github.com/django-extensions/django-extensions/pull/1751
    • fix(dumpscript): make_aware should not be called if aware already by @blueyed in https://github.com/django-extensions/django-extensions/pull/1745
    • drop python 3.6 as it is EOL by @auvipy in https://github.com/django-extensions/django-extensions/pull/1735
    • Add support for meta indexes and constraints in sqldiff by @noamkush in https://github.com/django-extensions/django-extensions/pull/1726
    • Ensure consistent output in show_urls for django 4.0+ by @jeremy-engel in https://github.com/django-extensions/django-extensions/pull/1759

    New Contributors

    • @matthugs made their first contribution in https://github.com/django-extensions/django-extensions/pull/1740
    • @danlamanna made their first contribution in https://github.com/django-extensions/django-extensions/pull/1736
    • @felixxm made their first contribution in https://github.com/django-extensions/django-extensions/pull/1763
    • @marciomazza made their first contribution in https://github.com/django-extensions/django-extensions/pull/1762
    • @phillipuniverse made their first contribution in https://github.com/django-extensions/django-extensions/pull/1741
    • @ollz272 made their first contribution in https://github.com/django-extensions/django-extensions/pull/1751
    • @auvipy made their first contribution in https://github.com/django-extensions/django-extensions/pull/1735
    • @noamkush made their first contribution in https://github.com/django-extensions/django-extensions/pull/1726
    • @jeremy-engel made their first contribution in https://github.com/django-extensions/django-extensions/pull/1759

    Full Changelog: https://github.com/django-extensions/django-extensions/compare/3.2.0...3.2.1

    Source code(tar.gz)
    Source code(zip)
  • 3.2.0(Jul 11, 2022)

    What's Changed

    • Fix one code format in documentation by @rixx in https://github.com/django-extensions/django-extensions/pull/1704
    • Django 4.0 by @webs86 in https://github.com/django-extensions/django-extensions/pull/1698
    • Fix KeyError: 'werkzeug.server.shutdown' in runserver_plus by @DavidS-cloud in https://github.com/django-extensions/django-extensions/pull/1718
    • Accept both --no-input and --noinput by @PeterJCLaw in https://github.com/django-extensions/django-extensions/pull/1690
    • Update README.rst by @baseplate-admin in https://github.com/django-extensions/django-extensions/pull/1714
    • sort the listdir of jobs, so that jobs will run in a predictable order by @merpius in https://github.com/django-extensions/django-extensions/pull/1722
    • Remove use of deprecated imp module in job system. by @mblayman in https://github.com/django-extensions/django-extensions/pull/1717
    • Added more styles to the sqldsn management command. by @greyhare in https://github.com/django-extensions/django-extensions/pull/1707
    • refactoring code with For Else by @idiomaticrefactoring in https://github.com/django-extensions/django-extensions/pull/1702
    • setup.py: Add project URLs for pypi by @tony in https://github.com/django-extensions/django-extensions/pull/1692
    • Add a management command to raise a test exception. by @YPCrumble in https://github.com/django-extensions/django-extensions/pull/1520
    • adding arabic translation by @NurElHuda in https://github.com/django-extensions/django-extensions/pull/1536
    • Failing test and fixture for syncdata with natural keys by @MattFisher in https://github.com/django-extensions/django-extensions/pull/1551
    • Revert "Failing test and fixture for syncdata with natural keys" by @camilonova in https://github.com/django-extensions/django-extensions/pull/1729
    • Remove django 2.2 as a supported version by @camilonova in https://github.com/django-extensions/django-extensions/pull/1730
    • Flag for graph_models to color code relations based on on_delete. (#1604) by @PauloRSF in https://github.com/django-extensions/django-extensions/pull/1664
    • Add --relation-fields-only flag to graph_models by @dankgen-tobias in https://github.com/django-extensions/django-extensions/pull/1665
    • fix: Max length validation on HexValidator by @abhiabhi94 in https://github.com/django-extensions/django-extensions/pull/1669
    • removed excess calls of "check" and "check_migrations" methods by @avisom in https://github.com/django-extensions/django-extensions/pull/1671
    • Added "managestate" command by @KazakovDenis in https://github.com/django-extensions/django-extensions/pull/1676
    • Allow keeping default values for RandomCharField by @ladmerc in https://github.com/django-extensions/django-extensions/pull/1682
    • Drop use of mock and six by @s-t-e-v-e-n-k in https://github.com/django-extensions/django-extensions/pull/1723
    • Removed extra line by @camilonova in https://github.com/django-extensions/django-extensions/pull/1731
    • Sync Django trove classifiers with test setup by @ulgens in https://github.com/django-extensions/django-extensions/pull/1732
    • Upgrade & clean precommit config by @ulgens in https://github.com/django-extensions/django-extensions/pull/1733

    New Contributors

    • @rixx made their first contribution in https://github.com/django-extensions/django-extensions/pull/1704
    • @webs86 made their first contribution in https://github.com/django-extensions/django-extensions/pull/1698
    • @DavidS-cloud made their first contribution in https://github.com/django-extensions/django-extensions/pull/1718
    • @PeterJCLaw made their first contribution in https://github.com/django-extensions/django-extensions/pull/1690
    • @baseplate-admin made their first contribution in https://github.com/django-extensions/django-extensions/pull/1714
    • @merpius made their first contribution in https://github.com/django-extensions/django-extensions/pull/1722
    • @mblayman made their first contribution in https://github.com/django-extensions/django-extensions/pull/1717
    • @greyhare made their first contribution in https://github.com/django-extensions/django-extensions/pull/1707
    • @idiomaticrefactoring made their first contribution in https://github.com/django-extensions/django-extensions/pull/1702
    • @NurElHuda made their first contribution in https://github.com/django-extensions/django-extensions/pull/1536
    • @PauloRSF made their first contribution in https://github.com/django-extensions/django-extensions/pull/1664
    • @dankgen-tobias made their first contribution in https://github.com/django-extensions/django-extensions/pull/1665
    • @avisom made their first contribution in https://github.com/django-extensions/django-extensions/pull/1671
    • @KazakovDenis made their first contribution in https://github.com/django-extensions/django-extensions/pull/1676
    • @ladmerc made their first contribution in https://github.com/django-extensions/django-extensions/pull/1682
    • @s-t-e-v-e-n-k made their first contribution in https://github.com/django-extensions/django-extensions/pull/1723

    Full Changelog: https://github.com/django-extensions/django-extensions/compare/3.1.5...3.2.0

    Source code(tar.gz)
    Source code(zip)
  • 3.1.5(Nov 7, 2021)

  • 3.1.4(Nov 7, 2021)

    What's Changed

    • Fix name of mixin in docs by @ryanwilsonperkin in https://github.com/django-extensions/django-extensions/pull/1661
    • Fix django.contrib.sites detection in set_default_site command when using AppConfig by @azaghal in https://github.com/django-extensions/django-extensions/pull/1662
    • fix typo by @bragboy in https://github.com/django-extensions/django-extensions/pull/1667
    • Add --rankdir to graph_models by @ppolewicz in https://github.com/django-extensions/django-extensions/pull/1580
    • Add support for Python 3.10 by @joshuadavidthomas in https://github.com/django-extensions/django-extensions/pull/1684
    • Add --sql-truncate cli modifier by @niccolomineo in https://github.com/django-extensions/django-extensions/pull/1687

    New Contributors

    • @ryanwilsonperkin made their first contribution in https://github.com/django-extensions/django-extensions/pull/1661
    • @azaghal made their first contribution in https://github.com/django-extensions/django-extensions/pull/1662
    • @bragboy made their first contribution in https://github.com/django-extensions/django-extensions/pull/1667
    • @ppolewicz made their first contribution in https://github.com/django-extensions/django-extensions/pull/1580
    • @joshuadavidthomas made their first contribution in https://github.com/django-extensions/django-extensions/pull/1684
    • @niccolomineo made their first contribution in https://github.com/django-extensions/django-extensions/pull/1687

    Full Changelog: https://github.com/django-extensions/django-extensions/compare/3.1.3...3.1.4

    Source code(tar.gz)
    Source code(zip)
AWS Interactive CLI - Allows you to execute a complex AWS commands by chaining one or more other AWS CLI dependency

AWS Interactive CLI - Allows you to execute a complex AWS commands by chaining one or more other AWS CLI dependency

Rafael Torres 2 Dec 10, 2021
LSD (Linux Spotify Downloader) is a command line tool for downloading or rather recording content on Spotify.

LSD (Linux Spotify Downloader) is a command line tool for downloading or rather recording content on Spotify.

Jannis Zahn 7 Jun 21, 2022
PwnWiki command line searching tool & bindings written in Python

pwsearch PwnWiki 数据库搜索命令行工具。 安装 您可以直接用 pip 命令从 PyPI 安装 pwsearch: pip3 install -U pwsearch 您也可以 clone 该仓库并直接从源码启动

PwnWiki 20 Jun 21, 2021
Booky - A command line utility for bookmarking files on your terminal!

Booky A command line utility for bookmarking files for quick access With it you can: Bookmark and delete your (aliases of) files at demand Launch them

Pran 1 Sep 11, 2022
A next-generation CLI and TUI that aims to be your personal assistant for everything competitive programming related. 🚀

Competitive Programming Tool Kit The Competitive Programming Tool Kit (cptk for short), is a command line and terminal user interface (CLI and TUI) th

Alon 4 May 21, 2022
👻 Ghoul is an easy to use information service, allowing you to get/add information on someone or something directly from your terminal.

👻 Ghoul is an easy to use information service, allowing you to get/add information on someone or something directly from your terminal. It c

Billy 11 Nov 10, 2021
CLTools provides various tools and command to use in the terminal.

CLTools provides various tools and command to use in the terminal. As of date, CLTools is only able to generate temporary email addresses and receive emails. There are plans to integrate more tools a

Ashwin Chugh 2 Feb 14, 2022
Openstack bucket retention cli

Openstack bucket retention cli

Fatih Sarhan 3 Apr 03, 2022
DShell, a tool that combines with discord.py and Jishaku to present to you, shell channels.

Discord shell or dshell for short is a Python package that combines with discord.py and Jishaku to transform an ordinary Discord channel into one capable of running bash commands using a Discord bot.

11 Nov 15, 2022
A powerful, colorful, beautiful command-line-interface for pypi.org

pypi-command-line pypi-command-line is a colorful, powerful, and beautiful command line interface for pypi.org that is actively maintained Detailed Do

Wasi Master 32 Jun 23, 2022
Faza - Faza terminal, Faza help to beginners for pen testing

Faza terminal simple tool for pen testers Use small letter only for commands Don't use space after command 'help' for more information Installation gi

Ag3ntQ 5 Feb 20, 2022
Command line tool for google dorks

CLI for google dorks This is the command line tool made with pytohn which allows the users to perform Google dorks easily Installation Install google

subrahmanya s hegade 3 Feb 08, 2022
Install python modules from pypi from a previous date in history

pip-rewind is a command-line tool that can rewind pypi module versions (given as command-line arguments or read from a requirements.txt file) to a previous date in time.

Amar Paul 4 Jul 03, 2021
A Neat Application To Manage Your To-Do Lists.

WTD - What To Do? A Neat Application To Manage Your To-Do Lists. One folder can only have one to-do file. Running wth without any subcommands executes

Adam Vajda 1 Oct 24, 2021
Regis-ltmpt-auto - Program register ltmpt 2022 automatis

LTMPT Register Otomatis 2022 Program register ltmpt 2022 automatis dibuat untuk

1 Jan 13, 2022
A lightweight Python module and command-line tool for generating NATO APP-6(D) compliant military symbols from both ID codes and natural language names

Python military symbols This is a lightweight Python module, including a command-line script, to generate NATO APP-6(D) compliant military symbol icon

Nick Royer 5 Dec 27, 2022
A Hikari command handler for people who love ducks.

duckari A Hikari command handler made with love by ducks. Currently Duckari is work in progress. Documentation is WIP. The wiki is no longer used as d

2 Oct 09, 2022
Personal and work vim 8 configuration with submodules

vimfiles Windows Vim 8 configuration files based on the recommendations of Ruslan Osipov, Keep Your vimrc file clean and The musings of bluz71. :help

1 Aug 27, 2022
Command line interface for unasync

CLI for unasync Command line interface for unasync Getting started Install Run the following command to install the package with pip: pip install unas

Leynier Gutiérrez González 3 Apr 04, 2022
You'll never want to use cd again.

Jmp Description Have you ever used the cd command? You'll never touch that outdated thing again when you try jmp. Navigate your filesystem with unprec

Grant Holmes 21 Nov 03, 2022