From 827f18a07a2aa18f9de5000e1cbc8e41ae986c9f Mon Sep 17 00:00:00 2001 From: Lingchaox Xin Date: Thu, 4 Jul 2013 10:48:39 +0800 Subject: [PATCH] Pylint for requests/mailer.py Change-Id: I9dd63af3776022f53bafb7590f0bb549907c8335 --- requests/mailer.py | 107 +++++++++++++++++++++++++++++------------------------ 1 file changed, 59 insertions(+), 48 deletions(-) diff --git a/requests/mailer.py b/requests/mailer.py index db94ce9..d611d08 100644 --- a/requests/mailer.py +++ b/requests/mailer.py @@ -15,26 +15,25 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # Temple Place - Suite 330, Boston, MA 02111-1307, USA. -from string import Template -import copy +"""A wrapped mail handler used in request jobs""" + import os +from urllib2 import HTTPError -""" -def := { event_name1: ( trigger, trigger ), - event_name2: ( trigger, ), - } -trigger := { 'temp': 'template name', - 'cond': lambda incline function - 'sub': string template for subject - 'to': list of To: - 'cc': list of Cc: - 'from': From: - 'fields': list of variables to be expand in template - 'detail?': True/False, whether need detailed reqinfo - 'tgtprj': the field name in obsEvent as the target prj - } -NOTE: multiple triggers need be IN STRICT ORDER -""" +# def := { event_name1: ( trigger, trigger ), +# event_name2: ( trigger, ), +# } +# trigger := { 'temp': 'template name', +# 'cond': lambda incline function +# 'sub': string template for subject +# 'to': list of To: +# 'cc': list of Cc: +# 'from': From: +# 'fields': list of variables to be expand in template +# 'detail?': True/False, whether need detailed reqinfo +# 'tgtprj': the field name in obsEvent as the target prj +# } +# NOTE: multiple triggers need be IN STRICT ORDER IGNORE_HOME = True @@ -198,17 +197,20 @@ MAIL_TRIGGERS = { USERDATA_CACHE = {} def logger(level, msg): + """Print log message""" print level, msg -def _get_reqinfo(bs, rid, details): +def _get_reqinfo(_bs, rid, details): + """Get request info""" try: - return bs.gen_request_info(str(rid), show_detail=details) - except Exception, e: - logger('error', 'failed to get info for req: %s, abort!' %rid) - logger('error', str(e)) + return _bs.gen_request_info(str(rid), show_detail=details) + except HTTPError, err: + logger('error', 'failed to get info for req: %s, abort!' % rid) + logger('error', str(err)) return '' def _is_valid_submitter(temp, author, enabled_users): + """Judge whether the author is valid submitter or not""" if temp in ('obs_request_newpkg', 'obs_request_create'): if enabled_users: if author not in enabled_users: @@ -216,59 +218,66 @@ def _is_valid_submitter(temp, author, enabled_users): return True -def mailer(request, bs, request_data, sr_enabled_users = None, templates_dir = '.'): +def mailer(request, _bs, request_data, sr_enabled_users=None, \ + templates_dir='.'): """ Sending mail to mailing list for different kinds of reqs """ return_dict = {} - if request['type'] not in MAIL_TRIGGERS.keys(): + if request['type'] not in MAIL_TRIGGERS: return {} rid = request['id'] - for ev, triggers in MAIL_TRIGGERS.iteritems(): - if request['type'] != ev: + for event, triggers in MAIL_TRIGGERS.iteritems(): + if request['type'] != event: continue for tri in triggers: - if not tri['cond'] or tri['cond'](bs, request): + if not tri['cond'] or tri['cond'](_bs, request): tgtprj = request[tri['tgtprj']] if tgtprj is None: - logger('info', 'ignore requests for empty targetproject: %s' % ev) + logger('info', 'ignore requests for empty targetproject:%s' + % event) return return_dict if IGNORE_HOME and tgtprj.startswith('home'): - logger('info', 'ignore requests for home project: %s' % ev) + logger('info', 'ignore requests for home project: %s' % \ + event) return return_dict - if not _is_valid_submitter(tri['temp'], request['author'], sr_enabled_users): - bs.req_decline(rid, msg=AUTO_REJECT_COMMENT) + if not _is_valid_submitter(tri['temp'], request['author'], \ + sr_enabled_users): + _bs.req_decline(rid, msg=AUTO_REJECT_COMMENT) return return_dict - logger('info', 'sending mail for %s %s' %(ev, tri['temp'])) + logger('info', 'sending mail for %s %s' %(event, tri['temp'])) - reqinfo = _get_reqinfo(bs, rid, tri['detail?']).splitlines() + reqinfo = _get_reqinfo(_bs, rid, tri['detail?']).splitlines() # get first 100 lines if reqinfo exceed 100 lines if len(reqinfo) > 100: reqinfo = reqinfo[0:100] - reqinfo.append('\nPlease refer to OBS webUI for more details about this SR.') + reqinfo.append('\nPlease refer to OBS webUI for more ' \ + 'details about this SR.') return_dict['reqinfo'] = '\n'.join(reqinfo) # prepare email 'to' list return_dict['To'] = [] - for to in tri['to']: - if isinstance(request_data[to], list): - return_dict['To'] += request_data[to] - elif isinstance(request_data[to], str) or isinstance(request_data[to], unicode): - return_dict['To'] += request_data[to].split(',') + for _to in tri['to']: + if isinstance(request_data[_to], list): + return_dict['To'] += request_data[_to] + elif isinstance(request_data[_to], str) or \ + isinstance(request_data[_to], unicode): + return_dict['To'] += request_data[_to].split(',') # prepare email 'cc' list return_dict['Cc'] = [] - for cc in tri['cc']: - if isinstance(request_data[cc], list): - return_dict['Cc'] += request_data[cc] - elif isinstance(request_data[cc], str) or isinstance(request_data[cc], unicode): - return_dict['Cc'] += request_data[cc].split(',') + for _cc in tri['cc']: + if isinstance(request_data[_cc], list): + return_dict['Cc'] += request_data[_cc] + elif isinstance(request_data[_cc], str) or \ + isinstance(request_data[_cc], unicode): + return_dict['Cc'] += request_data[_cc].split(',') # CC mailinglist and the author of superseded SRs for desp in request_data['descriptions']: return_dict['Cc'].append(desp['GIT_AUTHOR_EMAIL']) @@ -281,7 +290,8 @@ def mailer(request, bs, request_data, sr_enabled_users = None, templates_dir = ' return_dict['template'] = tri['temp'] from string import Template - return_dict['subject'] = Template(tri['sub']).safe_substitute(request, reqid=str(rid)) + return_dict['subject'] = Template(tri['sub']).safe_substitute(\ + request, reqid=str(rid)) # other items from obs_event for var in tri['fields']: @@ -289,9 +299,10 @@ def mailer(request, bs, request_data, sr_enabled_users = None, templates_dir = ' break - if 'template' in return_dict.keys(): + if 'template' in return_dict: - template_str = file(os.path.join(templates_dir, return_dict['template'])).read() + template_str = file(os.path.join(templates_dir, \ + return_dict['template'])).read() msg = [] try: from Cheetah.Template import Template -- 2.7.4