Skip to content

Commit 08e8bd9

Browse files
committed
add filter for project owners
1 parent c30843d commit 08e8bd9

3 files changed

Lines changed: 63 additions & 10 deletions

File tree

registration/deployment.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ spec:
1414
spec:
1515
containers:
1616
- name: icrsbot
17-
image: icroboticssociety/icrs-bot:1.0.2-rc5 # Replace with your Python Docker image and tag
17+
image: icroboticssociety/icrs-bot:1.0.2-rc6 # Replace with your Python Docker image and tag
1818
ports:
1919
- containerPort: 5000 # Port your Python application is listening on
2020
imagePullPolicy: "Always"

registration/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[project]
22
name = "ICRS Discord Bot"
3-
version = "1.0.2-rc5"
3+
version = "1.0.2-rc6"
44
description = "Main ICRS Discord Bot."
55
requires-python = ">=3.8"

registration/src/commands/project_admin.py

Lines changed: 61 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,17 @@
99
]
1010

1111

12+
def project_description(res: requests.Response):
13+
projects = [f" * ({r['id']}) : {r['title']} - (Created: {r['created_at']})\n" +
14+
" * Description: " + str(r["description"]) +
15+
f"\n * Owners: {', '.join('<@' + str(a) + '>' for a in r['project_owners'])if r['project_owners'] else '**Warning No Project Owners**'}"
16+
f"\n * Members: {', '.join('<@' + str(a) + '>' for a in r['project_members']) if r['project_members'] else 'No Other Members'}"
17+
f"\n * Tags: { ', '.join(str(a) for a in r['tags']) if r['tags'] else 'No Tags'}"
18+
for r in res.json()]
19+
projects_description = "\n\n".join(projects)
20+
return projects_description
21+
22+
1223
class ProjectAdminDashboard(discord.ui.View):
1324
def __init__(
1425
self,
@@ -20,24 +31,66 @@ async def list_projects_(self, interaction: discord.Interaction, button):
2031
res = requests.get(SERVER_IP + "/project/all", params={"count": 10})
2132
if res.status_code == 200:
2233
logging.debug("List project")
23-
projects = [f" * ({r['id']}) : {r['title']} - (Created: {r['created_at']})\n" +
24-
" * Description: " + str(r["description"]) +
25-
f"\n * Owners: {', '.join('<@' + str(a) + '>' for a in r['project_owners'])if r['project_owners'] else '**Warning No Project Owners**'}"
26-
f"\n * Members: {', '.join('<@' + str(a) + '>' for a in r['project_members']) if r['project_members'] else 'No Other Members'}"
27-
f"\n * Tags: { ', '.join(str(a) for a in r['tags']) if r['tags'] else 'No Tags'}"
28-
for r in res.json()]
34+
projects_description = project_description(res)
35+
await interaction.response.edit_message(
36+
embed=discord.Embed(
37+
title="Projects Summary:",
38+
description=projects_description
39+
),
40+
view=None,
41+
)
42+
else:
43+
await interaction.response.edit_message(
44+
embed=error_msg(
45+
title="List Project Error",
46+
msg=f"Could not get projects {res.reason}"
47+
),
48+
view=None,
49+
)
50+
51+
@discord.ui.button(style=discord.ButtonStyle.green, label='List Project: Filter Owner',)
52+
async def list_projects_owner_(self, interaction: discord.Interaction, button):
53+
await interaction.response.edit_message(
54+
embed=discord.Embed(
55+
title="Select User:",
56+
description="Select User - get which projects they own."
57+
),
58+
view=ProjectFilterOwner(),
59+
)
60+
61+
62+
class ProjectFilterOwner(discord.ui.View):
63+
def __init__(self, *, timeout=180):
64+
super().__init__(timeout=timeout)
65+
66+
@discord.ui.select(
67+
cls=discord.ui.UserSelect,
68+
min_values=1,
69+
max_values=1,
70+
)
71+
async def select_(
72+
self,
73+
interaction: discord.Interaction,
74+
select: discord.ui.UserSelect):
75+
id = select.values[0].id
76+
logging.debug(f"Project filter owner user {id}")
77+
res = requests.get(
78+
SERVER_IP + "/project/owned/discord/full/filtered", params={"discord_id": id, "count": 10, })
79+
if res.status_code == 200:
80+
logging.debug("List project")
81+
projects_description = project_description(res)
2982
await interaction.response.edit_message(
3083
embed=discord.Embed(
3184
title="Projects Summary:",
32-
description="\n\n".join(projects)
85+
description=projects_description,
3386
),
3487
view=None,
3588
)
3689
else:
3790
await interaction.response.edit_message(
3891
embed=error_msg(
3992
title="List Project Error",
40-
description=f"Could not get projects {res.reason}"
93+
msg=f"Could not get projects {res.reason}",
4194
),
4295
view=None,
4396
)

0 commit comments

Comments
 (0)