##// END OF EJS Templates
slack: fixed celery serialization breaking slack_data dataclass
super-admin -
r5169:2045434b default
parent child Browse files
Show More
@@ -145,6 +145,10 b' class SlackIntegrationType(IntegrationTy'
145
145
146 @async_task(ignore_result=True, base=RequestContextTask)
146 @async_task(ignore_result=True, base=RequestContextTask)
147 def post_text_to_slack(settings, slack_data: SlackData):
147 def post_text_to_slack(settings, slack_data: SlackData):
148 # because JSON serialization, if we run async with celery, deserialize to SlackData
149 if isinstance(slack_data, dict):
150 slack_data = SlackData(**slack_data)
151
148 title = slack_data.title
152 title = slack_data.title
149 text = slack_data.text
153 text = slack_data.text
150 fields = slack_data.fields
154 fields = slack_data.fields
@@ -1,4 +1,4 b''
1
1 import dataclasses
2 # Copyright (C) 2010-2023 RhodeCode GmbH
2 # Copyright (C) 2010-2023 RhodeCode GmbH
3 #
3 #
4 # This program is free software: you can redistribute it and/or modify
4 # This program is free software: you can redistribute it and/or modify
@@ -164,3 +164,15 b' def test_lazy_translation_string(baseapp'
164
164
165 assert b'{"label":"hello"}' == ext_json.json.dumps(data)
165 assert b'{"label":"hello"}' == ext_json.json.dumps(data)
166 assert b'{"label2":"singular"}' == ext_json.json.dumps(data2)
166 assert b'{"label2":"singular"}' == ext_json.json.dumps(data2)
167
168
169 def test_serialize_dataclass():
170
171 @dataclasses.dataclass
172 class ExampleStruct:
173 field_str: str
174 field_int: int
175 struct = ExampleStruct(field_int=1, field_str='hello')
176 raw_struct = b'{"field_str":"hello","field_int":1}'
177 assert raw_struct == ext_json.json.dumps(struct)
178 assert struct == ExampleStruct(**ext_json.json.loads(raw_struct))
General Comments 0
You need to be logged in to leave comments. Login now