Correct me if I'm wrong, but shouldn't the following statement work based on if my variable is true or false?
if twitter_mode:
print "Hello"
else:
pass
Correct me if I'm wrong, but shouldn't the following statement work based on if my variable is true or false?
if twitter_mode:
print "Hello"
else:
pass
Try replacing twitter_mode with True for debugging purposes and see if it works.
Exactly. If the if condition is true, the first block is executed, otherwise the second (else) block. The condition doesn't need to be exactly True, it needs to be an object that is considered a true value. (To get the truth value of an object, use bool(obj). bool behaves exactly the same as an implicit conversion in an if statement condition.) Most objects are true, the most important cases of false objects are None, False, numbers that are exactly zero (like 0, 0.0, 0j, decimal.Decimal("0")), and containers that are empty (like (), [], {}, collections.OrderedDict(())).
By the way, if your else block is empty, just remove it.
If there is a specific piece of actual code that behaves differently than you'd expect, then please post that code. ;)
To address your points:
else block empty. I will fill later, (as this is an inner function)if statements work - but twitter_mode is a True or False variable and my code above isn't working.See the full WIP code here.
Try removing twitter_mode from the if statement and replacing it with true or false. I think your problem exists because twitter_mode is being set incorrectly.
@Webmaster4o Already had tried this in the initial debugging, but I also think there is an issue the way the variable is created- So I'm going to set up config.py and import that. I think it'll make things easier in the long run anyway.
Watch out for the line twitter_mode = str(settings['twitter']) because bool(False) != bool('False').
Try removing the local copies of config.twitter_mode and config.feed and always use the attributes of config instead. That way you won't have any issues with the local copy being different from the config attribute.
@ccc Already took care of it ;) accidentally did this somehow..
@dgelessus Could you explain more in depth? Not sure what you mean.
Near the beginning of your gist, you have these two lines:
news_url = config.feed
twitter_mode = config.twitter_mode
What you're doing here is you're assigning the current values of config.feed and config.twitter_mode to the local (well, actually global, from the perspective of the current module) variables news_url and twitter_mode. Although the variables' values are the same, the variables themselves are not linked in any way. If you change config.twitter_mode, the global variable twitter_mode doesn't change, and vice versa.
Further on in your settings_action method, you declare news_url and twitter_mode as global, but never assign to them - instead you assign to config.feed and config.twitter_mode. Now the variables from config and the current module are no longer in sync. To avoid this issue, simply remove the globals news_url and twitter_mode, and always use config.feed and config.twitter_mode.
@dgelessus Gotcha. Thanks for explaining that for me. It's been a long day...
Would changing the variables be like writing to a file but writing over the current .py file?
Not sure what you mean exactly. If you assign something to an attribute of the config module, you don't modify the actual source file. The changes are as temporary as any other variable. The important part is that you store your data in a single place (the config module) and not under multiple separate names.
@dgelessus Let me rephrase, How would I edit the variables in config.py? Would I edit it like any other text file?
Yes, edit it like any other file.