Skip to content

Commit 3ba8c33

Browse files
Fixes 404 and url rename (#1235)
* urls fix * fix pages and schedule communication * implemented suggestions --------- Co-authored-by: Mario Behling <mb@mariobehling.de>
1 parent 0e787fe commit 3ba8c33

File tree

9 files changed

+45
-41
lines changed

9 files changed

+45
-41
lines changed

app/eventyay/agenda/templates/agenda/fragment_nav.html

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
{% load i18n %}
22
{% load safelink %}
3+
{% load event_tags %}
34

45
<a href="{% url 'presale:event.index' event=request.event.slug organizer=request.event.organizer.slug %}" class="header-tab">
56
<i class="fa fa-ticket"></i> {% translate "Tickets" %}
67
</a>
78
{% if schedule or request.event.current_schedule %}
8-
<a href="{{ request.event.urls.schedule }}" class="header-tab {% if "/schedule/" in request.path_info %}active{% endif %}">
9+
<a href="{{ request.event.urls.schedule }}" class="header-tab {% if '/schedule/' in request.path_info %}active{% endif %}">
910
<i class="fa fa-calendar"></i> {{ phrases.schedule.schedule }}
1011
</a>
1112
{% endif %}
1213
{% if request.event.display_settings.schedule_display != "list" %}
13-
<a href="{{ request.event.urls.talks }}" class="header-tab {% if "/talk/" in request.path_info %} active{% endif %}">
14+
<a href="{{ request.event.urls.talks }}" class="header-tab {% if '/sessions/' in request.path_info %} active{% endif %}">
1415
<i class="fa fa-comments-o"></i> {{ phrases.schedule.sessions }}
1516
</a>
1617
{% endif %}
17-
{% if schedule or request.event.current_schedule %}
18-
<a href="{{ request.event.urls.speakers }}" class="header-tab {% if "/speaker/" in request.path_info %} active{% endif %}">
18+
{% if request.event.speakers.exists %}
19+
<a href="{{ request.event.urls.speakers }}" class="header-tab {% if '/speakers/' in request.path_info %} active{% endif %}">
1920
<i class="fa fa-group"></i> {{ phrases.schedule.speakers }}
2021
</a>
2122
{% endif %}
@@ -27,7 +28,7 @@
2728

2829
{% with cfp=request.event.cfp %}
2930
{% if cfp.is_open or access_code.is_valid %}
30-
<a class="header-tab {% if "/cfp" in request.path_info %} active{% endif %}"
31+
<a class="header-tab {% if '/cfp' in request.path_info %} active{% endif %}"
3132
href="{% url 'cfp:event.start' event=request.event.slug organizer=request.event.organizer.slug %}">
3233
<i class="fa fa-bullhorn"></i> {% translate "Call for Speakers" %}
3334
</a>
@@ -38,6 +39,6 @@
3839
{% endif %}
3940
{% endwith %}
4041

41-
<a id="join-event-link" href='{% url "agenda:event.onlinevideo.join" organizer=request.event.organizer.slug event=request.event.slug %}' class="header-tab">
42+
<a id="join-event-link" href="{% url 'agenda:event.onlinevideo.join' organizer=request.event.organizer.slug event=request.event.slug %}" class="header-tab">
4243
<i class="fa fa-video-camera"></i> {% translate "Join online video" %}
4344
</a>

app/eventyay/agenda/urls.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,21 +60,20 @@ def get_schedule_urls(regex_prefix, name_prefix=''):
6060
),
6161
*get_schedule_urls('schedule'),
6262
*get_schedule_urls('schedule/v/<version>', 'versioned-'),
63-
path('sneak/', featured.sneakpeek_redirect, name='oldsneak'),
6463
path('featured/', featured.FeaturedView.as_view(), name='featured'),
65-
path('speaker/', speaker.SpeakerList.as_view(), name='speakers'),
64+
path('speakers/', speaker.SpeakerList.as_view(), name='speakers'),
6665
path(
67-
'speaker/avatar.svg',
66+
'speakers/avatar.svg',
6867
speaker.empty_avatar_view,
6968
name='speakers.avatar',
7069
),
7170
path(
72-
'speaker/by-id/<int:pk>/',
71+
'speakers/by-id/<int:pk>/',
7372
speaker.SpeakerRedirect.as_view(),
7473
name='speaker.redirect',
7574
),
76-
path('talk/', schedule.ScheduleView.as_view(), name='talks'),
77-
path('talk/<slug>/', talk.TalkView.as_view(), name='talk'),
75+
path('sessions/', schedule.ScheduleView.as_view(), name='talks'),
76+
path('talk/<slug>/', talk.TalkView.as_view(), name='talk.detail'),
7877
path(
7978
'talk/<slug>/og-image',
8079
talk.TalkSocialMediaCard.as_view(),
@@ -96,17 +95,17 @@ def get_schedule_urls(regex_prefix, name_prefix=''):
9695
name='review',
9796
),
9897
path(
99-
'speaker/<code>/',
98+
'speakers/<code>/',
10099
speaker.SpeakerView.as_view(),
101100
name='speaker',
102101
),
103102
path(
104-
'speaker/<code>/og-image',
103+
'speakers/<code>/og-image',
105104
speaker.SpeakerSocialMediaCard.as_view(),
106105
name='speaker-social',
107106
),
108107
path(
109-
'speaker/<code>/talks.ics',
108+
'speakers/<code>/talks.ics',
110109
speaker.SpeakerTalksIcalView.as_view(),
111110
name='speaker.talks.ical',
112111
),

app/eventyay/agenda/views/schedule.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ def my_exporters(self):
171171

172172
@context
173173
def show_talk_list(self):
174-
return self.request.path.endswith('/talk/') or self.request.event.display_settings['schedule'] == 'list'
174+
return self.request.path.endswith('/sessions/') or self.request.event.display_settings['schedule'] == 'list'
175175

176176

177177
@cache_page(60 * 60 * 24)

app/eventyay/base/models/event.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -824,8 +824,8 @@ class urls(EventUrls):
824824
schedule = '{base}schedule/'
825825
schedule_nojs = '{schedule}nojs'
826826
featured = '{base}featured/'
827-
talks = '{base}talk/'
828-
speakers = '{base}speaker/'
827+
talks = '{base}sessions/'
828+
speakers = '{base}speakers/'
829829
changelog = '{schedule}changelog/'
830830
feed = '{schedule}feed.xml'
831831
export = '{schedule}export/'
@@ -1889,18 +1889,15 @@ def has_paid_things(self):
18891889

18901890
@property
18911891
def talk_schedule_url(self):
1892-
url = urljoin(TALK_HOSTNAME, f'{self.slug}/schedule')
1893-
return url
1892+
return self.urls.schedule.full
18941893

18951894
@property
18961895
def talk_session_url(self):
1897-
url = urljoin(TALK_HOSTNAME, f'{self.slug}/talk')
1898-
return url
1896+
return self.urls.talks.full
18991897

19001898
@property
19011899
def talk_speaker_url(self):
1902-
url = urljoin(TALK_HOSTNAME, f'{self.slug}/speaker')
1903-
return url
1900+
return self.urls.speakers.full
19041901

19051902
@property
19061903
def talk_dashboard_url(self):

app/eventyay/base/models/profile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class Meta:
6060

6161
class urls(EventUrls):
6262
"""URL patterns for public speaker profile views."""
63-
public = '{self.event.urls.base}speaker/{self.user.code}/'
63+
public = '{self.event.urls.base}speakers/{self.user.code}/'
6464
social_image = '{public}og-image'
6565
talks_ical = '{self.urls.public}talks.ics'
6666

app/eventyay/common/templatetags/event_tags.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,5 @@ def cfp_locale_switch_url(context, locale_code):
3434
query['locale'] = locale_code
3535
query['next'] = request.get_full_path()
3636
return f"{base}?{query.urlencode()}"
37+
38+

app/eventyay/frontend/schedule-editor/src/api.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,10 @@ const api = {
9090
},
9191

9292
async saveTalk(talk: TalkPayload,{ action = 'PATCH' }: { action?: string } = {}): Promise<Talk | void> {
93-
const url = new URL(window.location.href);
94-
url.pathname = `${url.pathname}api/talks/${talk.id ? `${talk.id}/` : ''}`;
95-
url.search = window.location.search;
93+
const talksBase = `${basePath}/orga/event/${this.eventSlug}/schedule/api/talks/`;
94+
const urlPath = talk.id ? `${talksBase}${talk.id}/` : talksBase;
95+
const params = new URLSearchParams(window.location.search);
96+
const url = params.toString() ? `${urlPath}?${params.toString()}` : urlPath;
9697

9798
let payload: HttpRequestBody = null;
9899
if (action !== 'DELETE') {
@@ -117,7 +118,7 @@ const api = {
117118
};
118119
}
119120

120-
const response = await this.http<Talk>(action, url.toString(), payload);
121+
const response = await this.http<Talk>(action, url, payload);
121122

122123
if (action !== 'DELETE') {
123124
return TalkSchema.parse(response);

app/eventyay/presale/templates/pretixpresale/event/fragment_nav.html

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@
1414
<i class="fa fa-calendar"></i> {% translate "Schedule" %}
1515
</a>
1616

17-
<a href="{{ request.event.talk_session_url }}" class="header-tab">
17+
<a href="{{ request.event.talk_session_url }}" class="header-tab {% if '/sessions/' in request.path_info %}active{% endif %}">
1818
<i class="fa fa-comments-o"></i> {% translate "Sessions" %}
1919
</a>
2020

21-
<a href="{{ request.event.talk_speaker_url }}" class="header-tab">
22-
<i class="fa fa-group"></i> {% translate "Speakers" %}
23-
</a>
21+
{% if request.event.speakers.exists %}
22+
<a href="{{ request.event.talk_speaker_url }}" class="header-tab {% if '/speakers/' in request.path_info %}active{% endif %}">
23+
<i class="fa fa-group"></i> {% translate "Speakers" %}
24+
</a>
25+
{% endif %}
2426
{% endif %}
2527

2628
{% with cfp=request.event.cfp %}
@@ -37,8 +39,8 @@
3739
{% endwith %}
3840

3941
<div class="video-link">
40-
<a id='join-event-link' class="header-tab join-event {% if request.path_info == '/onlinevideo' %}underline{% endif %}"
41-
href='{% eventurl request.event "presale:event.onlinevideo.join" %}'>
42+
<a id="join-event-link" class="header-tab join-event {% if request.path_info == '/onlinevideo' %}underline{% endif %}"
43+
href="{% eventurl request.event 'presale:event.onlinevideo.join' %}">
4244
<i class="fa fa-video-camera"></i> {% translate "Join online video" %}
4345
</a>
4446
</div>

app/eventyay/webapp/src/store/schedule.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,18 @@ export default {
2222
if (pretalx.url) {
2323
return pretalx.url
2424
}
25-
if (!pretalx.domain || !pretalx.event) return ''
26-
if (!pretalx.domain.endsWith('/')) {
27-
pretalx.domain += '/'
28-
}
29-
const url = new URL(`${pretalx.event}/schedule/widgets/schedule.json`, pretalx.domain)
25+
if (!pretalx.domain || !pretalx.event || !pretalx.organizer) return ''
26+
const domain = pretalx.domain.endsWith('/') ? pretalx.domain : pretalx.domain + '/'
27+
const path = `${pretalx.organizer}/${pretalx.event}/schedule/widgets/schedule.json`
28+
const url = new URL(path, domain)
3029
return url.toString()
3130
},
3231
pretalxApiBaseUrl(state, getters, rootState) {
3332
if (!rootState.world.pretalx?.domain || !rootState.world.pretalx?.event) return
34-
return rootState.world.pretalx.domain + 'api/events/' + rootState.world.pretalx.event
33+
const domain = rootState.world.pretalx.domain.endsWith('/')
34+
? rootState.world.pretalx.domain
35+
: rootState.world.pretalx.domain + '/'
36+
return domain + 'api/events/' + rootState.world.pretalx.event
3537
},
3638
rooms(state, getters, rootState) {
3739
if (!state.schedule) return

0 commit comments

Comments
 (0)