On 06/04/2015 09:52 PM, Thomas De Schampheleire wrote:
What you mean is this, right?

         if log_category is None:
             log_category = {
                 'notice': 'info',
                 'warning': 'info',
                 'error': 'error',
                 'success': 'debug',
             }[category]

         {
             'debug': log.debug,
             'info': log.info,
             'warning': log.warning,
             'error': log.error,
         }[log_category]('Flash: %s' % message)

Do you really find this more readable than with the intermediate variables?
For example in the second case, I find it much less obvious that it's
a function call.

Regarding placing these variables outside the function: what is the
reasoning here? Since they are only used and relevant for that
function, isn't it more logical to scope it as such?

Python "constants" are executed when they are assigned, so it is generally better to make them as global as possible and avoid defining them inside functions or loops. I also like that reading the program doesn't get interrupted by things not directly related to the problem flow.


But ... from what I have seen, I think I really would suggest something like this:

def __call__(self, message, category=None, ignore_duplicate=False, logf=None):
        '''Show a message to the user _and_ log it

        category: notice (default), warning, error, success
        logf: a custom log function - such as log.debug

If logf is not set, the message is logged as log.info, except success
        is logged as log.debug.
        '''
        if logf is None:
            logf = log.info
            if category == 'success':
                logf = log.debug

        logf('Flash %s: %s', category, message)

        super(Flash, self).__call__(message, category, ignore_duplicate)

(because I think flash error messages also only should be shown to admins if they configure info logging.)

/Mads
_______________________________________________
kallithea-general mailing list
[email protected]
http://lists.sfconservancy.org/mailman/listinfo/kallithea-general

Reply via email to