gitter/slack/hipchat: Remove "subject" from conversions.

We (lexically) remove "subject" from the conversion code.  The
`build_message` helper calls `set_topic_name` under the hood,
so things still have "subject" in the JSON.

There was good code coverage on `build_message`.
This commit is contained in:
Steve Howell 2018-11-10 16:10:45 +00:00 committed by Tim Abbott
parent 710095920f
commit d86dd165da
7 changed files with 19 additions and 11 deletions

View File

@ -314,6 +314,7 @@ def build_custom_checkers(by_lang):
'bad_lines': ['subject="foo"', ' MAX_SUBJECT_LEN'], 'bad_lines': ['subject="foo"', ' MAX_SUBJECT_LEN'],
'exclude': FILES_WITH_LEGACY_SUBJECT, 'exclude': FILES_WITH_LEGACY_SUBJECT,
'include_only': set([ 'include_only': set([
'zerver/data_import/',
'zerver/lib/', 'zerver/lib/',
'zerver/views/'])}, 'zerver/views/'])},
{'pattern': '^(?!#)@login_required', {'pattern': '^(?!#)@login_required',

View File

@ -181,10 +181,10 @@ def convert_gitter_workspace_messages(gitter_data: GitterDataT, output_dir: str,
mentioned_user_ids = get_usermentions(message, user_map, mentioned_user_ids = get_usermentions(message, user_map,
user_short_name_to_full_name) user_short_name_to_full_name)
rendered_content = None rendered_content = None
subject = 'imported from gitter' topic_name = 'imported from gitter'
user_id = user_map[message['fromUser']['id']] user_id = user_map[message['fromUser']['id']]
zulip_message = build_message(subject, float(message_time), message_id, message['text'], zulip_message = build_message(topic_name, float(message_time), message_id, message['text'],
rendered_content, user_id, recipient_id) rendered_content, user_id, recipient_id)
zerver_message.append(zulip_message) zerver_message.append(zulip_message)

View File

@ -594,9 +594,9 @@ def process_raw_message_batch(realm_id: int,
rendered_content = None rendered_content = None
if is_pm_data: if is_pm_data:
subject = '' topic_name = ''
else: else:
subject = 'imported from hipchat' topic_name = 'imported from hipchat'
user_id = raw_message['sender_id'] user_id = raw_message['sender_id']
# Another side effect: # Another side effect:
@ -620,7 +620,7 @@ def process_raw_message_batch(realm_id: int,
pub_date=pub_date, pub_date=pub_date,
recipient_id=recipient_id, recipient_id=recipient_id,
rendered_content=rendered_content, rendered_content=rendered_content,
subject=subject, topic_name=topic_name,
user_id=user_id, user_id=user_id,
has_attachment=has_attachment, has_attachment=has_attachment,
) )

View File

@ -326,13 +326,12 @@ def build_stream(date_created: Any, realm_id: int, name: str,
stream_dict['realm'] = realm_id stream_dict['realm'] = realm_id
return stream_dict return stream_dict
def build_message(subject: str, pub_date: float, message_id: int, content: str, def build_message(topic_name: str, pub_date: float, message_id: int, content: str,
rendered_content: Optional[str], user_id: int, recipient_id: int, rendered_content: Optional[str], user_id: int, recipient_id: int,
has_image: bool=False, has_link: bool=False, has_image: bool=False, has_link: bool=False,
has_attachment: bool=True) -> ZerverFieldsT: has_attachment: bool=True) -> ZerverFieldsT:
zulip_message = Message( zulip_message = Message(
rendered_content_version=1, # this is Zulip specific rendered_content_version=1, # this is Zulip specific
subject=subject,
pub_date=pub_date, pub_date=pub_date,
id=message_id, id=message_id,
content=content, content=content,
@ -340,6 +339,7 @@ def build_message(subject: str, pub_date: float, message_id: int, content: str,
has_image=has_image, has_image=has_image,
has_attachment=has_attachment, has_attachment=has_attachment,
has_link=has_link) has_link=has_link)
zulip_message.set_topic_name(topic_name)
zulip_message_dict = model_to_dict(zulip_message, zulip_message_dict = model_to_dict(zulip_message,
exclude=['recipient', 'sender', 'sending_client']) exclude=['recipient', 'sender', 'sending_client'])
zulip_message_dict['sender'] = user_id zulip_message_dict['sender'] = user_id

View File

@ -612,9 +612,9 @@ def channel_message_to_zerver_message(realm_id: int,
has_image = file_info['has_image'] has_image = file_info['has_image']
# construct message # construct message
subject = 'imported from slack' topic_name = 'imported from slack'
zulip_message = build_message(subject, float(message['ts']), message_id, content, zulip_message = build_message(topic_name, float(message['ts']), message_id, content,
rendered_content, added_users[user], recipient_id, rendered_content, added_users[user], recipient_id,
has_image, has_link, has_attachment) has_image, has_link, has_attachment)
zerver_message.append(zulip_message) zerver_message.append(zulip_message)

View File

@ -32,6 +32,10 @@ MATCH_TOPIC = "match_subject"
# unless we do a pretty tricky migration. # unless we do a pretty tricky migration.
LEGACY_PREV_TOPIC = "prev_subject" LEGACY_PREV_TOPIC = "prev_subject"
# This constant is pretty closely coupled to the
# database, but it's the JSON field.
EXPORT_TOPIC_NAME = "subject"
# This is used in low-level message functions in # This is used in low-level message functions in
# zerver/lib/message.py, and it's not user facing. # zerver/lib/message.py, and it's not user facing.
DB_TOPIC_NAME = "subject" DB_TOPIC_NAME = "subject"

View File

@ -40,6 +40,9 @@ from zerver.lib.avatar_hash import (
from zerver.lib.test_classes import ( from zerver.lib.test_classes import (
ZulipTestCase, ZulipTestCase,
) )
from zerver.lib.topic import (
EXPORT_TOPIC_NAME,
)
from zerver.models import ( from zerver.models import (
Realm, Realm,
get_realm, get_realm,
@ -465,10 +468,10 @@ class SlackImporter(ZulipTestCase):
self.assertEqual(zerver_message[2]['content'], 'http://journals.plos.org/plosone/article') self.assertEqual(zerver_message[2]['content'], 'http://journals.plos.org/plosone/article')
self.assertEqual(zerver_message[2]['has_link'], True) self.assertEqual(zerver_message[2]['has_link'], True)
self.assertEqual(zerver_message[3]['subject'], 'imported from slack') self.assertEqual(zerver_message[3][EXPORT_TOPIC_NAME], 'imported from slack')
self.assertEqual(zerver_message[3]['content'], '/me added bot') self.assertEqual(zerver_message[3]['content'], '/me added bot')
self.assertEqual(zerver_message[4]['recipient'], added_recipient['general']) self.assertEqual(zerver_message[4]['recipient'], added_recipient['general'])
self.assertEqual(zerver_message[2]['subject'], 'imported from slack') self.assertEqual(zerver_message[2][EXPORT_TOPIC_NAME], 'imported from slack')
self.assertEqual(zerver_message[1]['recipient'], added_recipient['random']) self.assertEqual(zerver_message[1]['recipient'], added_recipient['random'])
self.assertEqual(zerver_message[3]['id'], zerver_message[0]['id'] + 3) self.assertEqual(zerver_message[3]['id'], zerver_message[0]['id'] + 3)