#12231: The project path is incorrectly build, it wipe the namespace
-------------------------------------+--------------------------------------
          Reporter:  mleduc          |         Owner:  nobody 
            Status:  new             |     Milestone:  1.2    
         Component:  Core framework  |       Version:  SVN    
        Resolution:                  |      Keywords:  package
             Stage:  Unreviewed      |     Has_patch:  1      
        Needs_docs:  0               |   Needs_tests:  0      
Needs_better_patch:  0               |  
-------------------------------------+--------------------------------------
Changes (by Alex):

  * needs_better_patch:  => 0
  * needs_tests:  => 0
  * needs_docs:  => 0

Old description:

> If by example your django is in an egg like
>
> my.site.project
>
> If you call the django core execution manager with:
>
> mod = __import__('my.site.project')
> django.core.management.execute_manager(mod)
>
> Your project will not be found cause the django core is declaring the
> main DJANGO_SETTINGS_MODULE with:
>
> django.core.management.__init__:
> ...
> project_directory, settings_filename = os.path.split(p)
> if project_directory == os.curdir or not project_directory:
>    project_directory = os.getcwd()
> project_name = os.path.basename(project_directory)
> ...
> os.environ['DJANGO_SETTINGS_MODULE = '%s.%s' % (project_name,
> settings_name)
> ...
>
> The project_name variable represent only the first level of the project
> egg. It could not work with a multilevel package and we now have to use
> the variable 'original_settings_path' which is just optional.
>
> The solution maybe to use the special __package__ variable of the
> settings_mod module.
>
> I attach a patch with this ticket whick correct this problem.

New description:

 If by example your django is in an egg like
 {{{
 my.site.project
 }}}
 If you call the django core execution manager with:
 {{{
 mod = __import__('my.site.project')
 django.core.management.execute_manager(mod)
 }}}
 Your project will not be found cause the django core is declaring the main
 DJANGO_SETTINGS_MODULE with:

 django.core.management.__init__:
 {{{
 ...
 project_directory, settings_filename = os.path.split(p)
 if project_directory == os.curdir or not project_directory:
    project_directory = os.getcwd()
 project_name = os.path.basename(project_directory)
 ...
 os.environ['DJANGO_SETTINGS_MODULE = '%s.%s' % (project_name,
 settings_name)
 ...
 }}}
 The project_name variable represent only the first level of the project
 egg. It could not work with a multilevel package and we now have to use
 the variable 'original_settings_path' which is just optional.

 The solution maybe to use the special __package__ variable of the
 settings_mod module.

 I attach a patch with this ticket whick correct this problem.

Comment:

 Please use preview.

-- 
Ticket URL: <http://code.djangoproject.com/ticket/12231#comment:1>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

--

You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-upda...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=.


Reply via email to