mirror of
https://github.com/element-hq/synapse
synced 2024-08-19 23:10:20 +00:00
Comments
This commit is contained in:
parent
a78cda4baf
commit
8575e3160f
2 changed files with 32 additions and 12 deletions
|
@ -810,6 +810,8 @@ class FederationGroupsSummaryRoomsServlet(BaseFederationServlet):
|
|||
|
||||
|
||||
class FederationGroupsCategoriesServlet(BaseFederationServlet):
|
||||
"""Get all categories for a group
|
||||
"""
|
||||
PATH = (
|
||||
"/groups/(?P<group_id>[^/]*)/categories/$"
|
||||
)
|
||||
|
@ -828,6 +830,8 @@ class FederationGroupsCategoriesServlet(BaseFederationServlet):
|
|||
|
||||
|
||||
class FederationGroupsCategoryServlet(BaseFederationServlet):
|
||||
"""Add/remove/get a category in a group
|
||||
"""
|
||||
PATH = (
|
||||
"/groups/(?P<group_id>[^/]*)/categories/(?P<category_id>[^/]+)$"
|
||||
)
|
||||
|
@ -870,6 +874,8 @@ class FederationGroupsCategoryServlet(BaseFederationServlet):
|
|||
|
||||
|
||||
class FederationGroupsRolesServlet(BaseFederationServlet):
|
||||
"""Get roles in a group
|
||||
"""
|
||||
PATH = (
|
||||
"/groups/(?P<group_id>[^/]*)/roles/$"
|
||||
)
|
||||
|
@ -888,6 +894,8 @@ class FederationGroupsRolesServlet(BaseFederationServlet):
|
|||
|
||||
|
||||
class FederationGroupsRoleServlet(BaseFederationServlet):
|
||||
"""Add/remove/get a role in a group
|
||||
"""
|
||||
PATH = (
|
||||
"/groups/(?P<group_id>[^/]*)/roles/(?P<role_id>[^/]+)$"
|
||||
)
|
||||
|
|
|
@ -140,12 +140,16 @@ class GroupServerStore(SQLBaseStore):
|
|||
|
||||
def _add_room_to_summary_txn(self, txn, group_id, room_id, category_id, order,
|
||||
is_public):
|
||||
"""Add room to summary.
|
||||
"""Add (or update) room's entry in summary.
|
||||
|
||||
This automatically adds the room to the end of the list of rooms to be
|
||||
included in the summary response. If a role is given then user will
|
||||
be added under that category (the category will automatically be added tothe
|
||||
the summary if a user is listed under that role in the summary).
|
||||
Args:
|
||||
group_id (str)
|
||||
room_id (str)
|
||||
category_id (str): If not None then adds the category to the end of
|
||||
the summary if its not already there. [Optional]
|
||||
order (int): If not None inserts the room at that position, e.g.
|
||||
an order of 1 will put the room first. Otherwise, the room gets
|
||||
added to the end.
|
||||
"""
|
||||
|
||||
if category_id is None:
|
||||
|
@ -164,7 +168,7 @@ class GroupServerStore(SQLBaseStore):
|
|||
if not cat_exists:
|
||||
raise SynapseError(400, "Category doesn't exist")
|
||||
|
||||
# TODO: Check room is part of group already
|
||||
# TODO: Check category is part of summary already
|
||||
cat_exists = self._simple_select_one_onecol_txn(
|
||||
txn,
|
||||
table="group_summary_room_categories",
|
||||
|
@ -176,6 +180,7 @@ class GroupServerStore(SQLBaseStore):
|
|||
allow_none=True,
|
||||
)
|
||||
if not cat_exists:
|
||||
# If not, add it with an order larger than all others
|
||||
txn.execute("""
|
||||
INSERT INTO group_summary_room_categories
|
||||
(group_id, category_id, cat_order)
|
||||
|
@ -197,6 +202,7 @@ class GroupServerStore(SQLBaseStore):
|
|||
)
|
||||
|
||||
if order is not None:
|
||||
# Shuffle other room orders that come after the given order
|
||||
sql = """
|
||||
UPDATE group_summary_rooms SET room_order = room_order + 1
|
||||
WHERE group_id = ? AND category_id = ? AND room_order >= ?
|
||||
|
@ -408,12 +414,16 @@ class GroupServerStore(SQLBaseStore):
|
|||
|
||||
def _add_user_to_summary_txn(self, txn, group_id, user_id, role_id, order,
|
||||
is_public):
|
||||
"""Add user to summary.
|
||||
"""Add (or update) user's entry in summary.
|
||||
|
||||
This automatically adds the user to the end of the list of users to be
|
||||
included in the summary response. If a role is given then user will
|
||||
be added under that role (the role will automatically be added to the
|
||||
summary if a user is listed under that role in the summary).
|
||||
Args:
|
||||
group_id (str)
|
||||
user_id (str)
|
||||
role_id (str): If not None then adds the role to the end of
|
||||
the summary if its not already there. [Optional]
|
||||
order (int): If not None inserts the user at that position, e.g.
|
||||
an order of 1 will put the user first. Otherwise, the user gets
|
||||
added to the end.
|
||||
"""
|
||||
if role_id is None:
|
||||
role_id = _DEFAULT_CATEGORY_ID
|
||||
|
@ -431,7 +441,7 @@ class GroupServerStore(SQLBaseStore):
|
|||
if not role_exists:
|
||||
raise SynapseError(400, "Role doesn't exist")
|
||||
|
||||
# TODO: Check room is part of group already
|
||||
# TODO: Check role is part of the summary already
|
||||
role_exists = self._simple_select_one_onecol_txn(
|
||||
txn,
|
||||
table="group_summary_roles",
|
||||
|
@ -443,6 +453,7 @@ class GroupServerStore(SQLBaseStore):
|
|||
allow_none=True,
|
||||
)
|
||||
if not role_exists:
|
||||
# If not, add it with an order larger than all others
|
||||
txn.execute("""
|
||||
INSERT INTO group_summary_roles
|
||||
(group_id, role_id, role_order)
|
||||
|
@ -464,6 +475,7 @@ class GroupServerStore(SQLBaseStore):
|
|||
)
|
||||
|
||||
if order is not None:
|
||||
# Shuffle other users orders that come after the given order
|
||||
sql = """
|
||||
UPDATE group_summary_users SET user_order = user_order + 1
|
||||
WHERE group_id = ? AND role_id = ? AND user_order >= ?
|
||||
|
|
Loading…
Reference in a new issue