Skip to content

Commit 9772026

Browse files
implemented suggestions
1 parent 1043149 commit 9772026

File tree

7 files changed

+231
-177
lines changed

7 files changed

+231
-177
lines changed

app/eventyay/base/models/event.py

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ def default_roles():
8383
attendee = [
8484
Permission.EVENT_VIEW,
8585
Permission.EVENT_EXHIBITION_CONTACT,
86+
Permission.EVENT_CHAT_DIRECT,
8687
]
8788
viewer = attendee + [Permission.ROOM_VIEW, Permission.ROOM_CHAT_READ]
8889
participant = viewer + [
@@ -1526,6 +1527,13 @@ def get_all_permissions(self, user):
15261527
event_trait_grants = self._get_trait_grants_with_defaults()
15271528
event_roles = self.roles if self.roles is not None else default_roles()
15281529

1530+
# Track if user has any organizer/admin role
1531+
has_organizer_role = False
1532+
organizer_roles = {'admin', 'apiuser', 'scheduleuser', 'video_stage_manager',
1533+
'video_channel_manager', 'video_announcement_manager',
1534+
'video_user_viewer', 'video_user_moderator', 'video_room_manager',
1535+
'video_kiosk_manager', 'video_config_manager'}
1536+
15291537
for role, required_traits in event_trait_grants.items():
15301538
if (
15311539
isinstance(required_traits, list)
@@ -1535,18 +1543,25 @@ def get_all_permissions(self, user):
15351543
)
15361544
and (required_traits or allow_empty_traits)
15371545
):
1538-
role_perms = event_roles.get(role, SYSTEM_ROLES.get(role, []))
1539-
1540-
direct_messaging_def = VIDEO_PERMISSION_BY_FIELD.get('can_video_direct_message')
1541-
if direct_messaging_def and role != 'video_direct_messaging':
1542-
direct_messaging_trait = direct_messaging_def.trait_value(self.slug)
1543-
has_direct_messaging_trait = direct_messaging_trait in user.traits
1544-
1545-
if not has_direct_messaging_trait:
1546-
direct_message_value = Permission.EVENT_CHAT_DIRECT.value
1547-
role_perms = [p for p in role_perms if (p if isinstance(p, str) else p.value) != direct_message_value]
1546+
if role in organizer_roles:
1547+
has_organizer_role = True
15481548

1549+
role_perms = event_roles.get(role, SYSTEM_ROLES.get(role, []))
15491550
result[self].update(role_perms)
1551+
1552+
# If user has organizer/admin role but doesn't have direct messaging trait, remove EVENT_CHAT_DIRECT
1553+
# This ensures organizers only get direct messaging if explicitly granted via team permissions
1554+
# Attendees (without organizer roles) always keep EVENT_CHAT_DIRECT
1555+
if has_organizer_role:
1556+
direct_messaging_def = VIDEO_PERMISSION_BY_FIELD.get('can_video_direct_message')
1557+
if direct_messaging_def:
1558+
direct_messaging_trait = direct_messaging_def.trait_value(self.slug)
1559+
traits = user.traits or []
1560+
has_direct_messaging_trait = direct_messaging_trait in traits
1561+
1562+
if not has_direct_messaging_trait:
1563+
direct_message_value = Permission.EVENT_CHAT_DIRECT.value
1564+
result[self] = {p for p in result[self] if (p if isinstance(p, str) else p.value) != direct_message_value}
15501565

15511566
for room in self.rooms.all():
15521567
room_trait_grants = room.trait_grants if room.trait_grants is not None else {}

app/eventyay/base/models/world.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def default_roles():
3333
attendee = [
3434
Permission.EVENT_VIEW,
3535
Permission.EVENT_EXHIBITION_CONTACT,
36+
Permission.EVENT_CHAT_DIRECT,
3637
]
3738
viewer = attendee + [Permission.ROOM_VIEW, Permission.ROOM_CHAT_READ]
3839
participant = viewer + [

app/eventyay/eventyay_common/templates/eventyay_common/organizers/edit.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,18 @@
99
<h1 class="page-header">{{ organizer.name }}</h1>
1010
<ul class="nav nav-tabs" role="tablist">
1111
<li role="presentation" class="{% if active_section == 'general' %}active{% endif %}">
12-
<a href="#general" aria-controls="general" role="tab" data-toggle="tab">
12+
<a href="#" data-target="#general" aria-controls="general" role="tab" data-toggle="tab">
1313
{% translate "General" %}
1414
</a>
1515
</li>
1616
{% if can_manage_teams %}
1717
<li role="presentation" class="{% if active_section == 'teams' %}active{% endif %}">
18-
<a href="#teams" aria-controls="teams" role="tab" data-toggle="tab">
18+
<a href="#" data-target="#teams" aria-controls="teams" role="tab" data-toggle="tab">
1919
{% translate "Create Team" %}
2020
</a>
2121
</li>
2222
<li role="presentation" class="{% if active_section == 'permissions' %}active{% endif %}">
23-
<a href="#permissions" aria-controls="permissions" role="tab" data-toggle="tab">
23+
<a href="#" data-target="#permissions" aria-controls="permissions" role="tab" data-toggle="tab">
2424
{% translate "Manage Team Permissions" %}
2525
</a>
2626
</li>

app/eventyay/eventyay_common/video/permissions.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,7 @@ def collect_user_video_traits(event_slug: str, team_permission_set: Iterable[str
6363
"""
6464
traits = []
6565
for perm_name in team_permission_set:
66-
definition = VIDEO_PERMISSION_BY_FIELD.get(perm_name)
67-
if definition:
66+
if definition := VIDEO_PERMISSION_BY_FIELD.get(perm_name):
6867
traits.append(definition.trait_value(event_slug))
6968
return traits
7069

0 commit comments

Comments
 (0)