diff options
author | Luke Barnard <lukebarnard1@users.noreply.github.com> | 2017-11-09 15:41:51 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-09 15:41:51 +0000 |
commit | 0ea5310290232f3c6f0fe30c68826d9dd210020c (patch) | |
tree | 42dec34b7687d4a20a463437d7f214604e2ad7b4 | |
parent | Merge pull request #2656 from matrix-org/rav/fix_deactivate (diff) | |
parent | Namespace visibility options for groups (diff) | |
download | synapse-0ea5310290232f3c6f0fe30c68826d9dd210020c.tar.xz |
Merge pull request #2657 from matrix-org/erikj/group_visibility_namespace
Namespace visibility options for groups
-rw-r--r-- | synapse/groups/groups_server.py | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/synapse/groups/groups_server.py b/synapse/groups/groups_server.py index a8039f4788..0b995aed70 100644 --- a/synapse/groups/groups_server.py +++ b/synapse/groups/groups_server.py @@ -556,8 +556,8 @@ class GroupsServerHandler(object): group_id, requester_user_id, and_exists=True, and_is_admin=requester_user_id ) - if config_key == "visibility": - is_public = _parse_visibility_from_contents(content) + if config_key == "m.visibility": + is_public = _parse_visibility_dict(content) yield self.store.update_room_in_group_visibility( group_id, room_id, @@ -840,15 +840,25 @@ def _parse_visibility_from_contents(content): public or not """ - visibility = content.get("visibility") + visibility = content.get("m.visibility") if visibility: - vis_type = visibility["type"] - if vis_type not in ("public", "private"): - raise SynapseError( - 400, "Synapse only supports 'public'/'private' visibility" - ) - is_public = vis_type == "public" + return _parse_visibility_dict(visibility) else: is_public = True return is_public + + +def _parse_visibility_dict(visibility): + """Given a dict for the "m.visibility" config return if the entity should + be public or not + """ + vis_type = visibility.get("type") + if not vis_type: + return True + + if vis_type not in ("public", "private"): + raise SynapseError( + 400, "Synapse only supports 'public'/'private' visibility" + ) + return vis_type == "public" |