No, you're not, but, there isn't a way to load or inject the app settings
so that diffsettings and other project level things (like testing) can see
them? That's my question. I've read something on a github repo but it seems
clunky and over-done. My main goal really is to change some settings on the
tests so I can test different scenarios.

Right now it seems I can do it by manually changing the "constants"
importing app.settings, saving the old values, assigning new values and
restoring at the end. But, as the settings.py is loaded once, the
"validation" is also done once (the ImproperlyConfigured part).

Now, my new question: If I do an object Settings or something like that,
and set the __getattr__ to "dinamically" get the settings of the project
settings and if it's not there default to a setting of the same object,
then I should be able to change the settings with
"@override_settings(SETTING_A=True)" or "with
self.settings(SETTING_A=True):".

And, for example, on the explicit case of SETTING_B that depends on
SETTING_A, I could override it's getter (and setter maybe) so I could raise
the exceptions if needed. The thing is, I know __get__ descriptor has
"priority" over "__getattr__" but on the same class (or object). If i use
the @property decorator I will still have "precedence" over getattr? Since
I'm applying it's __get__ descriptor to an object inside.

Just want to know if my approach would work. As I see it, it's like lazy
loading the settings so if the settings change in the project environment,
they should also change in the app. Or something like that is what I'm
trying to do.

What do you think? What would you do?

Thank you.

--
Tres42
Pedro J. Aramburu


On Thu, Jan 3, 2013 at 3:37 PM, Bill Freeman <ke1g...@gmail.com> wrote:

> This approach is only useful for modules that import app.settings and use
> things that it defines.  It doesn't affect things that import settings from
> django.conf .
>
> Your app can import settings from app, and get your settings.  That's not
> going to affect any other app.  If you want to affect what other apps see,
> you must either put the settings in the main settings file, or modify
> django.conf.settings itself.  This last is fraught with peril, since you
> can't reliably control the order in which you modify the settings object
> versus when other modules may use its values in a persistent way.
>
> Or am I missing your point?
>
> Bill
>
>
> On Thu, Jan 3, 2013 at 12:05 AM, Pedro J. Aramburu <
> paramb...@tres42.com.ar> wrote:
>
>> Hi, I'm having troubles using the override_settings decorator. The thing
>> is I'm writing an app that has it's own settings and I'm doing it with the
>> approach of putting a settings.py file on the app folder with something
>> like this:
>>
>> from django.conf import settings
>> from django.core.exceptions import ImproperlyConfigured
>>
>>
>> SETTING_A = getattr(settings, 'APP_SETTING_A', False)
>>
>> SETTING_B = getattr(settings, 'APP_SETTING_B', False)
>>
>> if SETTING_A and not SETTING_B:
>>     raise ImproperlyConfigured('"SETTING_A" is set to True but
>> "SETTING_B" is missing.')
>> -----
>> Where SETTING_B should be a tuple that depends on SETTING_A (I know I
>> didn't type check yet). Then I use the settings importing app.settings. The
>> thing is, I believe, that the settings are loaded once and as they're
>> outside the project settings.py, override settings doesn't have any effect.
>>
>> What would you recommend?
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Django users" group.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msg/django-users/-/22xrwU84AG8J.
>> To post to this group, send email to django-users@googlegroups.com.
>> To unsubscribe from this group, send email to
>> django-users+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/django-users?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-users@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>

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

Reply via email to