Add telegram details field (#2255)

# What this PR does

## Which issue(s) this PR fixes

## Checklist

- [ ] Unit, integration, and e2e (if applicable) tests updated
- [ ] Documentation added (or `pr:no public docs` PR label added if not
required)
- [ ] `CHANGELOG.md` updated (or `pr:no changelog` PR label added if not
required)
This commit is contained in:
Ildar Iskhakov 2023-06-15 23:52:01 +08:00 committed by GitHub
parent 76309292e2
commit 85beacaeb0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -22,9 +22,11 @@ class ChannelFilterSerializer(OrderedModelSerializerMixin, EagerLoadingMixin, se
required=False,
)
slack_channel = serializers.SerializerMethodField()
# Duplicated telegram channel and telegram_channel_details field for backwards compatibility for old integration page
telegram_channel = OrganizationFilteredPrimaryKeyRelatedField(
queryset=TelegramToOrganizationConnector.objects, filter_field="organization", allow_null=True, required=False
)
telegram_channel_details = serializers.SerializerMethodField()
order = serializers.IntegerField(required=False)
filtering_term_as_jinja2 = serializers.SerializerMethodField()
filtering_term = serializers.CharField(required=False, allow_null=True, allow_blank=True)
@ -48,8 +50,13 @@ class ChannelFilterSerializer(OrderedModelSerializerMixin, EagerLoadingMixin, se
"notify_in_telegram",
"notification_backends",
"filtering_term_as_jinja2",
"telegram_channel_details",
]
read_only_fields = [
"created_at",
"is_default",
"telegram_channel_details",
]
read_only_fields = ["created_at", "is_default"]
def validate(self, data):
filtering_term = data.get("filtering_term")
@ -77,6 +84,18 @@ class ChannelFilterSerializer(OrderedModelSerializerMixin, EagerLoadingMixin, se
"id": obj.slack_channel_pk,
}
def get_telegram_channel_details(self, obj) -> dict[str, any] | None:
if obj.telegram_channel_id is None:
return None
try:
telegram_channel = TelegramToOrganizationConnector.objects.get(pk=obj.telegram_channel_id)
return {
"display_name": telegram_channel.channel_name,
"id": telegram_channel.channel_chat_id,
}
except TelegramToOrganizationConnector.DoesNotExist:
return None
def validate_slack_channel(self, slack_channel_id):
SlackChannel = apps.get_model("slack", "SlackChannel")