def test_format_text_split_long_link(self): original = ('https://blueprints.launchpad.net/stackalytics/+spec/' 'stackalytics-core') expected = ('https://​blueprints.launchpad.net/​' 'stackalytics/​+spec/​stackalytics-core') self.assertEqual(expected, utils.format_text(original))
def make_commit_message(record): s = record['message'] module = record['module'] # NOTE(aostapenko) Keeping default value here not to brake links # with existing storage data gerrit_hostname = record.get('gerrit_hostname', 'review.opendev.org') s = utils.format_text(s) # insert links s = re.sub( re.compile('(blueprint\s+)([\w-]+)', flags=re.IGNORECASE), r'\1<a href="https://blueprints.launchpad.net/' + module + r'/+spec/\2" class="ext_link">\2</a>', s) s = re.sub( re.compile('(bug[\s#:]*)([\d]{5,7})', flags=re.IGNORECASE), r'\1<a href="https://bugs.launchpad.net/bugs/\2" ' r'class="ext_link">\2</a>', s) # NOTE(aostapenko) Setting http here as it's common practice to redirect # http -> https, but not vice versa s = re.sub( r'\s+(I[0-9a-f]{40})', r' <a href="http://%s/#/q/\1" ' % gerrit_hostname + r'class="ext_link">\1</a>', s) s = utils.unwrap_text(s) return s
def extend_record(record): record = vault.extend_record(record) _extend_record_common_fields(record) if record['record_type'] == 'commit': record['branches'] = ','.join(record['branches']) if 'correction_comment' not in record: record['correction_comment'] = '' record['message'] = make_commit_message(record) if record['commit_date']: record['commit_date_str'] = format_datetime(record['commit_date']) elif record['record_type'] == 'mark': review = vault.get_memory_storage().get_record_by_primary_key( record['review_id']) patch = vault.get_memory_storage().get_record_by_primary_key( utils.get_patch_id(record['review_id'], record['patch'])) if not review or not patch: return None _extend_by_parent_info(record, review, 'parent_') _extend_by_parent_info(record, patch, 'patch_') elif record['record_type'] == 'patch': review = vault.get_memory_storage().get_record_by_primary_key( record['review_id']) _extend_by_parent_info(record, review, 'parent_') elif record['record_type'] == 'email': record['email_link'] = record.get('email_link') or '' record['blueprint_links'] = [] for bp_id in record.get('blueprint_id', []): bp_module, bp_name = bp_id.split(':') record['blueprint_links'].append( make_blueprint_link(bp_module, bp_name)) elif record['record_type'] in ['bpd', 'bpc']: record['summary'] = utils.format_text(record['summary']) if record.get('mention_count'): record['mention_date_str'] = format_datetime( record['mention_date']) record['blueprint_link'] = make_blueprint_link(record['module'], record['name']) elif record['record_type'] in ['bugr', 'bugf']: record['number'] = record['web_link'].split('/')[-1] record['title'] = filter_bug_title(record['title']) record['status_class'] = re.sub('\s+', '', record['status']) elif record['record_type'] == 'tr': record['date_str'] = format_date(record['date']) # no need for hours return record
def make_commit_message(record): s = record['message'] s = utils.format_text(s) # insert links s = re.sub( re.compile('(bug[\s#:]*)([\d]{5,7})', flags=re.IGNORECASE), r'\1<a href="https://bugs.launchpad.net/bugs/\2" ' r'class="ext_link">\2</a>', s) s = re.sub( r'\s+(I[0-9a-f]{40})', r' <a href="https://review.openstack.org/#q,\1,n,z" ' r'class="ext_link">\1</a>', s) s = utils.unwrap_text(s) return s
def get_activity_json(records): start_record = int(flask.request.args.get('start_record') or 0) page_size = int(flask.request.args.get('page_size') or DEFAULT_RECORDS_LIMIT) result = [] memory_storage_inst = get_memory_storage() for record in records: if record['record_type'] == 'commit': commit = record.copy() commit['branches'] = ','.join(commit['branches']) if 'correction_comment' not in commit: commit['correction_comment'] = '' commit['message'] = make_commit_message(record) _extend_record(commit) result.append(commit) elif record['record_type'] == 'mark': review = record.copy() parent = memory_storage_inst.get_record_by_primary_key( review['review_id']) if parent: review['review_attempt'] = parent.get('review_attempt') review['subject'] = parent['subject'] review['url'] = parent['url'] review['parent_author_link'] = make_link( parent['author_name'], '/', {'user_id': parent['user_id'], 'company': ''}) _extend_record(review) result.append(review) elif record['record_type'] == 'email': email = record.copy() _extend_record(email) email['email_link'] = email.get('email_link') or '' result.append(email) elif ((record['record_type'] == 'bpd') or (record['record_type'] == 'bpc')): blueprint = record.copy() _extend_record(blueprint) blueprint['summary'] = utils.format_text(record['summary']) if 'mention_date' in record: blueprint['mention_date_str'] = format_datetime( record['mention_date']) result.append(blueprint) result.sort(key=lambda x: x['date'], reverse=True) return result[start_record:start_record + page_size]
def make_commit_message(record): s = record['message'] module = record['module'] s = utils.format_text(s) # insert links s = re.sub(re.compile('(blueprint\s+)([\w-]+)', flags=re.IGNORECASE), r'\1<a href="https://blueprints.launchpad.net/' + module + r'/+spec/\2" class="ext_link">\2</a>', s) s = re.sub(re.compile('(bug[\s#:]*)([\d]{5,7})', flags=re.IGNORECASE), r'\1<a href="https://bugs.launchpad.net/bugs/\2" ' r'class="ext_link">\2</a>', s) s = re.sub(r'\s+(I[0-9a-f]{40})', r' <a href="https://review.openstack.org/#q,\1,n,z" ' r'class="ext_link">\1</a>', s) s = utils.unwrap_text(s) return s
def extend_record(record): record = record.copy() _extend_record_common_fields(record) if record['record_type'] == 'commit': record['branches'] = ','.join(record['branches']) if 'correction_comment' not in record: record['correction_comment'] = '' record['message'] = make_commit_message(record) if record['commit_date']: record['commit_date_str'] = format_datetime(record['commit_date']) elif record['record_type'] == 'mark': parent = vault.get_memory_storage().get_record_by_primary_key( record['review_id']) if not parent: return None parent = parent.copy() _extend_record_common_fields(parent) for k, v in parent.iteritems(): record['parent_%s' % k] = v record['review_number'] = parent.get('review_number') record['subject'] = parent['subject'] record['url'] = parent['url'] elif record['record_type'] == 'email': record['email_link'] = record.get('email_link') or '' record['blueprint_links'] = [] for bp_id in record.get('blueprint_id', []): bp_module, bp_name = bp_id.split(':') record['blueprint_links'].append( make_blueprint_link(bp_module, bp_name)) elif record['record_type'] in ['bpd', 'bpc']: record['summary'] = utils.format_text(record['summary']) if record.get('mention_count'): record['mention_date_str'] = format_datetime( record['mention_date']) record['blueprint_link'] = make_blueprint_link(record['module'], record['name']) return record
def _extend_record(record): if record['record_type'] == 'commit': commit = record.copy() commit['branches'] = ','.join(commit['branches']) if 'correction_comment' not in commit: commit['correction_comment'] = '' commit['message'] = make_commit_message(record) _extend_record_common_fields(commit) return commit elif record['record_type'] == 'mark': review = record.copy() parent = get_memory_storage().get_record_by_primary_key( review['review_id']) if parent: review['review_number'] = parent.get('review_number') review['subject'] = parent['subject'] review['url'] = parent['url'] review['parent_author_link'] = make_link( parent['author_name'], '/', {'user_id': parent['user_id'], 'company': ''}) _extend_record_common_fields(review) return review elif record['record_type'] == 'email': email = record.copy() _extend_record_common_fields(email) email['email_link'] = email.get('email_link') or '' return email elif ((record['record_type'] == 'bpd') or (record['record_type'] == 'bpc')): blueprint = record.copy() _extend_record_common_fields(blueprint) blueprint['summary'] = utils.format_text(record['summary']) if record.get('mention_count'): blueprint['mention_date_str'] = format_datetime( record['mention_date']) blueprint['blueprint_link'] = make_blueprint_link( blueprint['name'], blueprint['module']) return blueprint
def make_commit_message(record): s = record['message'] module = record['module'] # NOTE(aostapenko) Keeping default value here not to brake links # with existing storage data gerrit_hostname = record.get('gerrit_hostname', 'review.openstack.org') s = utils.format_text(s) # insert links s = re.sub(re.compile('(blueprint\s+)([\w-]+)', flags=re.IGNORECASE), r'\1<a href="https://blueprints.launchpad.net/' + module + r'/+spec/\2" class="ext_link">\2</a>', s) s = re.sub(re.compile('(bug[\s#:]*)([\d]{5,7})', flags=re.IGNORECASE), r'\1<a href="https://bugs.launchpad.net/bugs/\2" ' r'class="ext_link">\2</a>', s) # NOTE(aostapenko) Setting http here as it's common practice to redirect # http -> https, but not vice versa s = re.sub(r'\s+(I[0-9a-f]{40})', r' <a href="http://%s/#/q/\1" ' % gerrit_hostname + r'class="ext_link">\1</a>', s) s = utils.unwrap_text(s) return s
def test_format_text_split_full_class_path_middle_line(self): original = 'some text tests.unit.benchmark.scenarios.test_base wide' expected = ('some text tests.​unit.​benchmark.​' 'scenarios.​test_base wide') self.assertEqual(expected, utils.format_text(original))