[Django] #24857: Add __main__ entry point as an alias for django-admin

6 views
Skip to first unread message

Django

unread,
May 26, 2015, 2:14:23 AM5/26/15
to django-...@googlegroups.com
#24857: Add __main__ entry point as an alias for django-admin
--------------------------------------------+--------------------
Reporter: tricoder42 | Owner: nobody
Type: New feature | Status: new
Component: Core (Management commands) | Version: master
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------------------+--------------------
There's a original pull request at
https://github.com/django/django/pull/4588

Add `__main__` entry point, so we can call management command via `python
-m django`. It will behave as an alias for `django-admin` (`django-
admin.py`).

--
Ticket URL: <https://code.djangoproject.com/ticket/24857>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
May 26, 2015, 2:15:32 AM5/26/15
to django-...@googlegroups.com
#24857: Add __main__ entry point as an alias for django-admin
-------------------------------------+-------------------------------------
Reporter: tricoder42 | Owner:
| tricoder42
Type: New feature | Status: assigned
Component: Core (Management | Version: master
commands) |
Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by tricoder42):

* owner: nobody => tricoder42
* needs_docs: => 1
* status: new => assigned
* needs_tests: => 1
* needs_better_patch: => 0


--
Ticket URL: <https://code.djangoproject.com/ticket/24857#comment:1>

Django

unread,
May 26, 2015, 2:47:49 AM5/26/15
to django-...@googlegroups.com
#24857: Add __main__ entry point as an alias for django-admin
-------------------------------------+-------------------------------------
Reporter: tricoder42 | Owner:
| tricoder42
Type: New feature | Status: assigned
Component: Core (Management | Version: master
commands) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted

Has patch: 0 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by bmispelon):

* stage: Unreviewed => Accepted


Comment:

I think this is a good idea and there was support for it on the mailing
list thread [1].

The PR looks good but some basic tests would be nice.

[1] https://groups.google.com/forum/#!searchin/django-developers/guessable
/django-developers/_Mrf1nFVchk/tfpGyKatiHIJ

--
Ticket URL: <https://code.djangoproject.com/ticket/24857#comment:2>

Django

unread,
May 26, 2015, 2:52:37 AM5/26/15
to django-...@googlegroups.com
#24857: Add __main__ entry point as an alias for django-admin
-------------------------------------+-------------------------------------
Reporter: tricoder42 | Owner:
| tricoder42
Type: New feature | Status: assigned
Component: Core (Management | Version: master
commands) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by tricoder42):

I've started working on it. I want to make `django/bin/django-admin.py` an
alias for `django/__main__.py` so we don't have to duplicate code (just
two lines though) but the best what I've got so far is:


{{{
# django/bin/django-admin.py
#!/usr/bin/env python
from runpy import run_module

if __name__ == "__main__":
run_module('django')
}}}

Not sure if it's worth it. I'll rather write some tests…

--
Ticket URL: <https://code.djangoproject.com/ticket/24857#comment:3>

Django

unread,
May 26, 2015, 8:51:21 AM5/26/15
to django-...@googlegroups.com
#24857: Add __main__ entry point as an alias for django-admin
-------------------------------------+-------------------------------------
Reporter: tricoder42 | Owner:
| tricoder42
Type: New feature | Status: assigned
Component: Core (Management | Version: master
commands) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by ryanhiebert):

I don't think it's worth it. I expect others will too, given that's how
the duplication is avoided in {{{manage.py}}}.

--
Ticket URL: <https://code.djangoproject.com/ticket/24857#comment:4>

Django

unread,
May 26, 2015, 11:46:53 AM5/26/15
to django-...@googlegroups.com
#24857: Add __main__ entry point as an alias for django-admin
-------------------------------------+-------------------------------------
Reporter: tricoder42 | Owner:
| tricoder42
Type: New feature | Status: assigned
Component: Core (Management | Version: master
commands) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by ryanhiebert):

I've worked on this a bit more, added a couple updates to the PR
referenced in the OP. I spent a little time figuring out how to test it,
but don't have it all worked out yet. Best I can tell so far is that the
tests probably need to live in {{{tests/admin_scripts/tests.py}}}, but I
don't have it worked out what and how is the best way to test.

My first thought is to subclass or copy the {{{DjangoAdmin*}}} tests to
use the python entry point. I could subclass {{{AdminScriptTestCase}}},
but that just seems like a lot of test coupling.

One problem I'm not quite sure how to deal with is that the current tests
don't seem to require that Django be installed properly. I might be able
to just make sure the current working directory is the root of the
repository...

--
Ticket URL: <https://code.djangoproject.com/ticket/24857#comment:5>

Django

unread,
May 26, 2015, 12:47:36 PM5/26/15
to django-...@googlegroups.com
#24857: Add __main__ entry point as an alias for django-admin
-------------------------------------+-------------------------------------
Reporter: tricoder42 | Owner:
| tricoder42
Type: New feature | Status: assigned
Component: Core (Management | Version: master
commands) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by timgraham):

Did you investigate my suggestion of using the subprocess module
(following the example in `tests/model_regress/test_pickle.py`). I don't
think we need to test `python -m django`, but rather just execute the the
`__main__.py` script directly and ensure it works like django-admin (one
test should be enough -- I don't think we don't need to execute all the
admin_script tests through it).

--
Ticket URL: <https://code.djangoproject.com/ticket/24857#comment:6>

Django

unread,
May 26, 2015, 2:38:30 PM5/26/15
to django-...@googlegroups.com
#24857: Add __main__ entry point as an alias for django-admin
-------------------------------------+-------------------------------------
Reporter: tricoder42 | Owner:

Type: New feature | Status: new
Component: Core (Management | Version: master
commands) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by tricoder42):

* owner: tricoder42 =>
* status: assigned => new


Comment:

I agree that simple test will be sufficient:

{{{
import subprocess


def test_module_installed():
call_args = ['python', '-m', 'django', '-v']
assert subprocess.call(call_args) == 0
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/24857#comment:7>

Django

unread,
Sep 7, 2015, 7:56:49 PM9/7/15
to django-...@googlegroups.com
#24857: Add __main__ entry point as an alias for django-admin
-------------------------------------+-------------------------------------
Reporter: tricoder42 | Owner: Tim
| Graham <timograham@…>
Type: New feature | Status: closed

Component: Core (Management | Version: master
commands) |
Severity: Normal | Resolution: fixed

Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Tim Graham <timograham@…>):

* owner: => Tim Graham <timograham@…>
* status: new => closed
* resolution: => fixed


Comment:

In [changeset:"617eff41acc583a3b0f97bb6bcc7efe096dc4891" 617eff4]:
{{{
#!CommitTicketReference repository=""
revision="617eff41acc583a3b0f97bb6bcc7efe096dc4891"
Fixed #24857 -- Added "python -m django" entry point.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/24857#comment:8>

Reply all
Reply to author
Forward
0 new messages