I didn't realize I had this line in urls.py but *with Gunicorn* I have to 
call it TWICE to have my website working : 

   - Once in project/urls.py at the beginning (else it doesn't recognize 
   project/admin/ url)
   - Once in project/my_website/admin.py at the end (else it doesn't 
   recognize custom overrides in the administration panel).

I guess it's a bug but I can't say why it works only with this 
configuration...

Le mercredi 24 septembre 2014 16:56:50 UTC+2, Josh Cartmell a écrit :
>
> Glad that you got it working!
>
> admin.autodiscover is actually already included in the urls.py of 
> Mezzanine's project template (check out line 10), 
> https://github.com/stephenmcd/mezzanine/blob/master/mezzanine/project_template/urls.py
>
> If you create a project using the mezzanine-project command you don't need 
> to do anything extra.
>
> On Wed, Sep 24, 2014 at 10:36 AM, Jérôme Sivadier <[email protected] 
> <javascript:>> wrote:
>
>> I have finally found the answer of this completely crazy stuff looking at 
>> Django's documentation for Django 1.7 ! Here : 
>> https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.autodiscover
>>  
>> it says that until Django 1.7 you needed to call "admin.autodiscover()" by 
>> yourself. And Mezzanine uses autodiscover in its LazyAdmin, but it is never 
>> called in Django 1.6 until the user calls it explicitly !
>>
>> So as a conclusion : if you use *Django 1.6.x, add*
>> admin.autodiscover()
>>
>> At the end of your *admin.py* application's file !
>> Hope this will help, my problem is now fixed!
>>
>> Le vendredi 12 septembre 2014 16:39:57 UTC+2, Stephen McDonald a écrit :
>>>
>>> My test app that contains my profile model is at the top of 
>>> INSTALLED_APPS too. The order is important, but any importance is forced 
>>> into place by the call to `set_dynamic_settings` at the end of the settings 
>>> module (I believe it forces mezzanine.boot to the top) - if you've removed 
>>> it, that could explain it.
>>>
>>> Otherwise I'd suggest trying a new project with no modifications other 
>>> than adding an app with a profile model, the relevant settings, and nothing 
>>> else. Presumably that should work - you'll then be in a position to apply 
>>> your changes to it step by step, until you can reproduce the error. That 
>>> will at least help you isolate the problem. 
>>>
>>> Good luck.
>>>
>>>
>>>
>>>
>>> On Sat, Sep 13, 2014 at 12:33 AM, Jérôme Sivadier <[email protected]> 
>>> wrote:
>>>
>>>> Maybe it's my settings.py file then :/ The order of INSTALLED_APPS and 
>>>> shouldn't be important, should it?
>>>> Here's my order just in case :
>>>> INSTALLED_APPS = (
>>>>     "myApp_theme",
>>>>     "myApp",
>>>>     "django.contrib.admin",
>>>>     "django.contrib.auth",
>>>>     "django.contrib.contenttypes",
>>>>     "django.contrib.messages",
>>>>     "django.contrib.redirects",
>>>>     "django.contrib.sessions",
>>>>     "django.contrib.sites",
>>>>     "django.contrib.sitemaps",
>>>>     "django.contrib.staticfiles",
>>>>     "mezzanine.boot",
>>>>     "mezzanine.conf",
>>>>     "mezzanine.core",
>>>>     "mezzanine.generic",
>>>> #    "mezzanine.blog",
>>>> #    "mezzanine.forms",
>>>>     "mezzanine.pages",
>>>> #    "mezzanine.galleries",
>>>>     "mezzanine.twitter",
>>>>     "mezzanine.accounts",
>>>>     #"mezzanine.mobile",
>>>> )
>>>>
>>>>
>>>>
>>>> Le vendredi 12 septembre 2014 16:28:20 UTC+2, Stephen McDonald a écrit :
>>>>>
>>>>> I didn't use one.
>>>>>
>>>>> On Sat, Sep 13, 2014 at 12:26 AM, Jérôme Sivadier <[email protected]
>>>>> > wrote:
>>>>>
>>>>>> Thanks for your answer. Could you post your gunicorn configuration 
>>>>>> file? I have certainly made some errors in this part of my project :/
>>>>>>
>>>>>> Le vendredi 12 septembre 2014 16:25:12 UTC+2, Stephen McDonald a 
>>>>>> écrit :
>>>>>>>
>>>>>>> I'm unable to reproduce this - works fine for me with the same 
>>>>>>> gunicorn version.
>>>>>>>
>>>>>>> On Thu, Sep 11, 2014 at 6:40 PM, Jérôme Sivadier <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> I've digged for one day to find what is the problem and here is an 
>>>>>>>> interesting conclusion : Mezzanine was the problem because of 
>>>>>>>> mezzanine.boot.lazy_admin.
>>>>>>>> Let me explain a bit :
>>>>>>>>
>>>>>>>> So I am using Mezzanine (3.0.10) + Gunicorn (19.1.1) and I 
>>>>>>>> discovered model registration does not have the same behaviour using 
>>>>>>>> the 
>>>>>>>> built-in Django webserver and using Gunicorn. Indeed when I use 
>>>>>>>> Gunicorn, 
>>>>>>>> all custom models calling *admin.site.unregister* and then 
>>>>>>>> *admin.site.register* (for instance *User*) are not updated in 
>>>>>>>> Django.
>>>>>>>>
>>>>>>>> After a lot of debugging (based on file writing), I realized that : 
>>>>>>>> * On the first call of *admin.site.register(User, UserAdmin)* (by 
>>>>>>>> Django), *django.contrib.admin.sites.AdminSite.register* is called 
>>>>>>>> and then *mezzanine.boot.lazy_admin.LazyAdminSite.register(User, 
>>>>>>>> UserAdmin)*
>>>>>>>> * Then Mezzanine calls *admin.site.unregister(User)* but it 
>>>>>>>> doesn't go to AdminSite.unregister, it only goes to 
>>>>>>>> LazyAdminSite.unregister
>>>>>>>> * After this, Mezzanine calls *admin.site.register(User, 
>>>>>>>> UserProfileAdmin)* but it doesn't go to AdminSite.register, it 
>>>>>>>> goes right to LazyAdminSite.register
>>>>>>>> ...
>>>>>>>> And so on.
>>>>>>>>
>>>>>>>> In the end, only Mezzanine's LazyAdminSite knows what is the "real" 
>>>>>>>> admin model associated with the given model class but Django does not !
>>>>>>>> Here is a trace of the register/unregister calls done by Mezzanine 
>>>>>>>> and Django :
>>>>>>>> REGISTER <class 'django.contrib.auth.models.Group'>
>>>>>>>> MEZZANINE REGISTER <class 'django.contrib.auth.models.Group'> AS <
>>>>>>>> class 'django.contrib.auth.admin.GroupAdmin'>
>>>>>>>> calling super... 
>>>>>>>> REGISTER <class 'django.contrib.auth.models.User'>
>>>>>>>> MEZZANINE REGISTER <class 'django.contrib.auth.models.User'> AS <
>>>>>>>> class 'django.contrib.auth.admin.UserAdmin'>
>>>>>>>> calling super... 
>>>>>>>> MEZZANINE UNREGISTER <class 'django.contrib.auth.models.User'>
>>>>>>>> MEZZANINE REGISTER <class 'django.contrib.auth.models.User'> AS <
>>>>>>>> class 'mezzanine.core.admin.SitePermissionUserAdmin'>
>>>>>>>>
>>>>>>>> MEZZANINE UNREGISTER <class 'django.contrib.auth.models.User'>
>>>>>>>> MEZZANINE REGISTER <class 'django.contrib.auth.models.User'> AS <
>>>>>>>> class 'mezzanine.accounts.admin.UserProfileAdmin'>
>>>>>>>>
>>>>>>>> MEZZANINE UNREGISTER <class 'django.contrib.auth.models.User'>
>>>>>>>> MEZZANINE REGISTER <class 'django.contrib.auth.models.User'> AS <
>>>>>>>> class 'bm_marketplace.admin.CustomUserProfileAdmin'>
>>>>>>>>
>>>>>>>> REGISTER <class 'django.contrib.redirects.models.Redirect'>
>>>>>>>> MEZZANINE REGISTER <class 'django.contrib.redirects.mode
>>>>>>>> ls.Redirect'> AS <class 'django.contrib.redirects.admi
>>>>>>>> n.RedirectAdmin'>
>>>>>>>> calling super... 
>>>>>>>> REGISTER <class 'django.contrib.sites.models.Site'>
>>>>>>>> MEZZANINE REGISTER <class 'django.contrib.sites.models.Site'> AS <
>>>>>>>> class 'django.contrib.sites.admin.SiteAdmin'>
>>>>>>>> calling super... 
>>>>>>>> REGISTER <class 'mezzanine.conf.models.Setting'>
>>>>>>>> MEZZANINE REGISTER <class 'mezzanine.conf.models.Setting'> AS <
>>>>>>>> class 'mezzanine.conf.admin.SettingsAdmin'>
>>>>>>>> calling super... 
>>>>>>>> REGISTER <class 'mezzanine.generic.models.ThreadedComment'>
>>>>>>>> MEZZANINE REGISTER <class 'mezzanine.generic.models.Thre
>>>>>>>> adedComment'> AS <class 'mezzanine.generic.admin.Threa
>>>>>>>> dedCommentAdmin'>
>>>>>>>> calling super... 
>>>>>>>> REGISTER <class 'mezzanine.pages.models.Page'>
>>>>>>>> MEZZANINE REGISTER <class 'mezzanine.pages.models.Page'> AS <class 
>>>>>>>> 'mezzanine.pages.admin.PageAdmin'>
>>>>>>>> calling super... 
>>>>>>>> REGISTER <class 'mezzanine.pages.models.RichTextPage'>
>>>>>>>> MEZZANINE REGISTER <class 'mezzanine.pages.models.RichTextPage'> 
>>>>>>>> AS <class 'mezzanine.pages.admin.PageAdmin'>
>>>>>>>> calling super... 
>>>>>>>> REGISTER <class 'mezzanine.pages.models.Link'>
>>>>>>>> MEZZANINE REGISTER <class 'mezzanine.pages.models.Link'> AS <class 
>>>>>>>> 'mezzanine.pages.admin.LinkAdmin'>
>>>>>>>> calling super... 
>>>>>>>> REGISTER = Django's AdminSite.register()
>>>>>>>> MEZZANINE REGISTER = Mezzanine's LazyAdminSite.register()
>>>>>>>>
>>>>>>>>
>>>>>>>> So I have tried to Monkey-patch LazyAdminSite.register() by calling 
>>>>>>>> super on register and unregister and it basically works great on my 
>>>>>>>> Gunicorn installation ! But I guess it will have embarrassing 
>>>>>>>> consequences?
>>>>>>>> Here's the working code of LazyAdminSite
>>>>>>>> def register(self, *args, **kwargs):
>>>>>>>>     for name, deferred_args, deferred_kwargs in self._deferred:
>>>>>>>>         if name == "unregister" and deferred_args[0] == args[0]:
>>>>>>>>             self._deferred.append(("register", args, kwargs))
>>>>>>>>             break
>>>>>>>>     #else:
>>>>>>>>     super(LazyAdminSite, self).register(*args, **kwargs)
>>>>>>>>
>>>>>>>> def unregister(self, *args, **kwargs):
>>>>>>>>     self._deferred.append(("unregister", args, kwargs))
>>>>>>>>     super(LazyAdminSite, self).unregister(*args, **kwargs)
>>>>>>>>
>>>>>>>> I can provide additional information / tests if needed.
>>>>>>>>
>>>>>>>> Thanks!
>>>>>>>>
>>>>>>>>
>>>>>>>> Le mercredi 10 septembre 2014 10:50:32 UTC+2, Jérôme Sivadier a 
>>>>>>>> écrit :
>>>>>>>>
>>>>>>>>> Hello,
>>>>>>>>>
>>>>>>>>> I am currently working on a website based on Django (1.6.7) + 
>>>>>>>>> Mezzanine (3.1.10) and I am facing problems with the Admin side.
>>>>>>>>> In my application I have a custom User model (named BMUser) and I 
>>>>>>>>> have declared it in *settings.py* like this : 
>>>>>>>>> AUTH_PROFILE_MODULE = "myApp.BMUser"
>>>>>>>>>
>>>>>>>>> On the development side, everything works great but when I go on 
>>>>>>>>> the production side (same code but I use postgres instead of sqlite 
>>>>>>>>> and 
>>>>>>>>> gunicorn) Mezzanine's *UserProfileAdmin* doesn't show up... I 
>>>>>>>>> only get Django's UserAdmin which doesn't add a reference to 
>>>>>>>>> "myApp.BMUser" 
>>>>>>>>> at the bottom of the user management.
>>>>>>>>>
>>>>>>>>> I have *Mezzanine.accounts* in my INSTALLED_APPS (settings.py) 
>>>>>>>>> and the configuration between development and production side seem to 
>>>>>>>>> be 
>>>>>>>>> the same.
>>>>>>>>>
>>>>>>>>> Any ideas? Thanks in advance !
>>>>>>>>>
>>>>>>>>  -- 
>>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>>> Groups "Mezzanine Users" group.
>>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>>>> send an email to [email protected].
>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> -- 
>>>>>>> Stephen McDonald
>>>>>>> http://jupo.org 
>>>>>>>
>>>>>>  -- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "Mezzanine Users" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to [email protected].
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> -- 
>>>>> Stephen McDonald
>>>>> http://jupo.org 
>>>>>
>>>>  -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Mezzanine Users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>>
>>> -- 
>>> Stephen McDonald
>>> http://jupo.org 
>>>
>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Mezzanine Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Mezzanine Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to