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.
* 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>
* 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>
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>
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>
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>
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>
* 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>
* 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>