def make_email_tuple(self, dom_message): subject = getTopText(dom_message, 'MessageSubject') errormsg = getTopText(dom_message, 'ErrorMessage') senttime = getTopText(dom_message, 'SentTime') size = getTopAttribute(dom_message, 'MessageSize', 'value') if subject.strip() != '': return (subject, errormsg, senttime, size) return None
def make_email_tuple(self, dom_message): subject=getTopText(dom_message, 'MessageSubject') errormsg=getTopText(dom_message, 'ErrorMessage') senttime=getTopText(dom_message, 'SentTime') size=getTopAttribute(dom_message, 'MessageSize', 'value') if subject.strip() != '': return (subject, errormsg, senttime, size) return None
def get(self): userid = self.request.get('userid') selected_bucket = self.request.get('buckets') # Sanity checks # """ Testing for empty user string """ if userid.strip() == '': errorhandler(self.response,'Empty User ID') return """ Testing for valid results """ logging.debug('selected bucket=%s', selected_bucket) buckets = [] if selected_bucket.strip() != '': buckets = [selected_bucket] """ get object corresponding for the user """ result_bunch = gscloud.get_userobjects(userid, buckets) if len(result_bunch.result) == 0: errorhandler(self.response,'User Status files not found') return # output variable # pids = '' failed = 0 success = 0 stats = [] errors_dict = {} template_values = {'buckets': config.Buckets, 'selectedBucket' : selected_bucket} gamme_helper = GammeParserHelper() """parsing each object from the results""" for object in result_bunch.result: dom = parseString(object.obj_uri.get_contents_as_string()) user = getTopText(dom, 'SourceUser') # this case shouldn't arise # if user != userid: pass pids = pids + ' ' + object.pid main_status = getTopAttribute(dom, 'MigrationStatus', 'value') insert_with_priority(template_values, 'main_status', main_status, config.Status_priority) """retrieving results for all the categories""" for category in config.Migration_categories: d = dom.getElementsByTagName(category + 'MigrationStatus') if d == None: pass key = category + '_status' template_values[key] = d[0].getElementsByTagName('MigrationStatus')[0].getAttribute('value') if category == 'Email': bunch = gamme_helper.process_email_stats(d[0]) success += bunch.success failed += bunch.failed ## Find detailed error message report ## failed_msgs = d[0].getElementsByTagName('FailedMessages') if failed_msgs == None: pass for message in failed_msgs: tuple = gamme_helper.make_email_tuple(message) if tuple != None: matched = False for error_pattern in config.Error_categories: if re.match(error_pattern, tuple[1]): error_cat = config.Error_categories[error_pattern] gamme_helper.set_dict(errors_dict, error_cat, tuple) matched = True break; if matched == False: error_cat = 'Other failed messages' gamme_helper.set_dict(errors_dict, error_cat, tuple) """create result to be used for template rendering""" i = 1 errors_results = [] for key in errors_dict: uri_link = key + ' (' + str(len(errors_dict[key])-1) +')' errors_results.append((uri_link, 'link_' + str(i), 'div_' + str(i), errors_dict[key])) i += 1 stats.append('Messages Migrated: ' + str(success)) stats.append('Messages Failed: ' + str(failed)) try: stats.append('Percentage Success: ' + str(success*100/(success+failed))) except ZeroDivisionError: stats.append('Percentage Success: -') """ template values used by jijna2 to render index.html""" template_values['user_name'] = userid template_values['email_stats'] = stats template_values['error_results'] = errors_results template_values['pids'] = pids template = jinja_environment.get_template('index.html') self.response.out.write(template.render(template_values))
def get(self): userid = self.request.get('userid') selected_bucket = self.request.get('buckets') # Sanity checks # """ Testing for empty user string """ if userid.strip() == '': errorhandler(self.response, 'Empty User ID') return """ Testing for valid results """ logging.debug('selected bucket=%s', selected_bucket) buckets = [] if selected_bucket.strip() != '': buckets = [selected_bucket] """ get object corresponding for the user """ result_bunch = gscloud.get_userobjects(userid, buckets) if len(result_bunch.result) == 0: errorhandler(self.response, 'User Status files not found') return # output variable # pids = '' failed = 0 success = 0 stats = [] errors_dict = {} template_values = { 'buckets': config.Buckets, 'selectedBucket': selected_bucket } gamme_helper = GammeParserHelper() """parsing each object from the results""" for object in result_bunch.result: dom = parseString(object.obj_uri.get_contents_as_string()) user = getTopText(dom, 'SourceUser') # this case shouldn't arise # if user != userid: pass pids = pids + ' ' + object.pid main_status = getTopAttribute(dom, 'MigrationStatus', 'value') insert_with_priority(template_values, 'main_status', main_status, config.Status_priority) """retrieving results for all the categories""" for category in config.Migration_categories: d = dom.getElementsByTagName(category + 'MigrationStatus') if d == None: pass key = category + '_status' template_values[key] = d[0].getElementsByTagName( 'MigrationStatus')[0].getAttribute('value') if category == 'Email': bunch = gamme_helper.process_email_stats(d[0]) success += bunch.success failed += bunch.failed ## Find detailed error message report ## failed_msgs = d[0].getElementsByTagName('FailedMessages') if failed_msgs == None: pass for message in failed_msgs: tuple = gamme_helper.make_email_tuple(message) if tuple != None: matched = False for error_pattern in config.Error_categories: if re.match(error_pattern, tuple[1]): error_cat = config.Error_categories[ error_pattern] gamme_helper.set_dict( errors_dict, error_cat, tuple) matched = True break if matched == False: error_cat = 'Other failed messages' gamme_helper.set_dict(errors_dict, error_cat, tuple) """create result to be used for template rendering""" i = 1 errors_results = [] for key in errors_dict: uri_link = key + ' (' + str(len(errors_dict[key]) - 1) + ')' errors_results.append((uri_link, 'link_' + str(i), 'div_' + str(i), errors_dict[key])) i += 1 stats.append('Messages Migrated: ' + str(success)) stats.append('Messages Failed: ' + str(failed)) try: stats.append('Percentage Success: ' + str(success * 100 / (success + failed))) except ZeroDivisionError: stats.append('Percentage Success: -') """ template values used by jijna2 to render index.html""" template_values['user_name'] = userid template_values['email_stats'] = stats template_values['error_results'] = errors_results template_values['pids'] = pids template = jinja_environment.get_template('index.html') self.response.out.write(template.render(template_values))