Rewrite _EventInternalMetadata to back it with a _dict
Mostly, this gives mypy an easier time.pull/6872/head
parent
43b2be9764
commit
9551911f88
|
@ -1,6 +1,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Copyright 2014-2016 OpenMarket Ltd
|
# Copyright 2014-2016 OpenMarket Ltd
|
||||||
# Copyright 2019 New Vector Ltd
|
# Copyright 2019 New Vector Ltd
|
||||||
|
# Copyright 2020 The Matrix.org Foundation C.I.C.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
|
@ -97,33 +98,55 @@ class DefaultDictProperty(DictProperty):
|
||||||
|
|
||||||
|
|
||||||
class _EventInternalMetadata(object):
|
class _EventInternalMetadata(object):
|
||||||
def __init__(self, internal_metadata_dict):
|
__slots__ = ["_dict"]
|
||||||
self.__dict__ = dict(internal_metadata_dict)
|
|
||||||
|
|
||||||
def get_dict(self):
|
def __init__(self, internal_metadata_dict: JsonDict):
|
||||||
return dict(self.__dict__)
|
# we have to copy the dict, because it turns out that the same dict is
|
||||||
|
# reused. TODO: fix that
|
||||||
|
self._dict = dict(internal_metadata_dict)
|
||||||
|
|
||||||
def is_outlier(self):
|
outlier = DictProperty("outlier") # type: bool
|
||||||
return getattr(self, "outlier", False)
|
out_of_band_membership = DictProperty("out_of_band_membership") # type: bool
|
||||||
|
send_on_behalf_of = DictProperty("send_on_behalf_of") # type: str
|
||||||
|
recheck_redaction = DictProperty("recheck_redaction") # type: bool
|
||||||
|
soft_failed = DictProperty("soft_failed") # type: bool
|
||||||
|
proactively_send = DictProperty("proactively_send") # type: bool
|
||||||
|
redacted = DictProperty("redacted") # type: bool
|
||||||
|
txn_id = DictProperty("txn_id") # type: str
|
||||||
|
token_id = DictProperty("token_id") # type: str
|
||||||
|
stream_ordering = DictProperty("stream_ordering") # type: int
|
||||||
|
|
||||||
def is_out_of_band_membership(self):
|
# XXX: These are set by StreamWorkerStore._set_before_and_after.
|
||||||
|
# I'm pretty sure that these are never persisted to the database, so shouldn't
|
||||||
|
# be here
|
||||||
|
before = DictProperty("before") # type: str
|
||||||
|
after = DictProperty("after") # type: str
|
||||||
|
order = DictProperty("order") # type: int
|
||||||
|
|
||||||
|
def get_dict(self) -> JsonDict:
|
||||||
|
return dict(self._dict)
|
||||||
|
|
||||||
|
def is_outlier(self) -> bool:
|
||||||
|
return self._dict.get("outlier", False)
|
||||||
|
|
||||||
|
def is_out_of_band_membership(self) -> bool:
|
||||||
"""Whether this is an out of band membership, like an invite or an invite
|
"""Whether this is an out of band membership, like an invite or an invite
|
||||||
rejection. This is needed as those events are marked as outliers, but
|
rejection. This is needed as those events are marked as outliers, but
|
||||||
they still need to be processed as if they're new events (e.g. updating
|
they still need to be processed as if they're new events (e.g. updating
|
||||||
invite state in the database, relaying to clients, etc).
|
invite state in the database, relaying to clients, etc).
|
||||||
"""
|
"""
|
||||||
return getattr(self, "out_of_band_membership", False)
|
return self._dict.get("out_of_band_membership", False)
|
||||||
|
|
||||||
def get_send_on_behalf_of(self):
|
def get_send_on_behalf_of(self) -> Optional[str]:
|
||||||
"""Whether this server should send the event on behalf of another server.
|
"""Whether this server should send the event on behalf of another server.
|
||||||
This is used by the federation "send_join" API to forward the initial join
|
This is used by the federation "send_join" API to forward the initial join
|
||||||
event for a server in the room.
|
event for a server in the room.
|
||||||
|
|
||||||
returns a str with the name of the server this event is sent on behalf of.
|
returns a str with the name of the server this event is sent on behalf of.
|
||||||
"""
|
"""
|
||||||
return getattr(self, "send_on_behalf_of", None)
|
return self._dict.get("send_on_behalf_of")
|
||||||
|
|
||||||
def need_to_check_redaction(self):
|
def need_to_check_redaction(self) -> bool:
|
||||||
"""Whether the redaction event needs to be rechecked when fetching
|
"""Whether the redaction event needs to be rechecked when fetching
|
||||||
from the database.
|
from the database.
|
||||||
|
|
||||||
|
@ -136,9 +159,9 @@ class _EventInternalMetadata(object):
|
||||||
Returns:
|
Returns:
|
||||||
bool
|
bool
|
||||||
"""
|
"""
|
||||||
return getattr(self, "recheck_redaction", False)
|
return self._dict.get("recheck_redaction", False)
|
||||||
|
|
||||||
def is_soft_failed(self):
|
def is_soft_failed(self) -> bool:
|
||||||
"""Whether the event has been soft failed.
|
"""Whether the event has been soft failed.
|
||||||
|
|
||||||
Soft failed events should be handled as usual, except:
|
Soft failed events should be handled as usual, except:
|
||||||
|
@ -150,7 +173,7 @@ class _EventInternalMetadata(object):
|
||||||
Returns:
|
Returns:
|
||||||
bool
|
bool
|
||||||
"""
|
"""
|
||||||
return getattr(self, "soft_failed", False)
|
return self._dict.get("soft_failed", False)
|
||||||
|
|
||||||
def should_proactively_send(self):
|
def should_proactively_send(self):
|
||||||
"""Whether the event, if ours, should be sent to other clients and
|
"""Whether the event, if ours, should be sent to other clients and
|
||||||
|
@ -162,7 +185,7 @@ class _EventInternalMetadata(object):
|
||||||
Returns:
|
Returns:
|
||||||
bool
|
bool
|
||||||
"""
|
"""
|
||||||
return getattr(self, "proactively_send", True)
|
return self._dict.get("proactively_send", True)
|
||||||
|
|
||||||
def is_redacted(self):
|
def is_redacted(self):
|
||||||
"""Whether the event has been redacted.
|
"""Whether the event has been redacted.
|
||||||
|
@ -173,7 +196,7 @@ class _EventInternalMetadata(object):
|
||||||
Returns:
|
Returns:
|
||||||
bool
|
bool
|
||||||
"""
|
"""
|
||||||
return getattr(self, "redacted", False)
|
return self._dict.get("redacted", False)
|
||||||
|
|
||||||
|
|
||||||
class EventBase(object):
|
class EventBase(object):
|
||||||
|
|
Loading…
Reference in New Issue