diff --git a/events/models.py b/events/models.py
index 8f0b68a..2e06cb6 100644
--- a/events/models.py
+++ b/events/models.py
@@ -409,6 +409,18 @@ class RSVP(TimestampedModel):
return new_page
+ @property
+ def has_previous_page(self) -> bool:
+ return self.page not in (self.Page.EMAIL)
+
+ @property
+ def has_next_page(self) -> bool:
+ return self.page not in (self.Page.NOTES, self.Page.COMPLETED)
+
+ @property
+ def is_finished(self) -> bool:
+ return self.status in (self.Status.YES_JOINING)
+
def is_page_finished(self, page: Page) -> bool:
"""return `True` if page is previous to the furthest reached page"""
return is_previous_page(page, self.Page(self.furthest_page))
diff --git a/events/static/css/styles.css b/events/static/css/styles.css
index 5007a80..a1c2579 100644
--- a/events/static/css/styles.css
+++ b/events/static/css/styles.css
@@ -326,4 +326,15 @@ button {
.hidden {
display: none;
+}
+
+.sticky-button-row {
+ position: sticky;
+ bottom: 0;
+}
+
+.sticky-button-row .button {
+ box-shadow: 0px 0px 30px 2px rgba(0,0,0,0.49);
+ -webkit-box-shadow: 0px 0px 30px 2px rgba(0,0,0,0.49);
+ -moz-box-shadow: 0px 0px 30px 2px rgba(0,0,0,0.49);
}
\ No newline at end of file
diff --git a/events/templates/rsvp/rsvp.html b/events/templates/rsvp/rsvp.html
index cdedfcd..1cade37 100644
--- a/events/templates/rsvp/rsvp.html
+++ b/events/templates/rsvp/rsvp.html
@@ -24,26 +24,8 @@
hx-trigger="load">
-
+
{% endif %}
diff --git a/events/templates/rsvp/rsvp_buttons.html b/events/templates/rsvp/rsvp_buttons.html
new file mode 100644
index 0000000..566d395
--- /dev/null
+++ b/events/templates/rsvp/rsvp_buttons.html
@@ -0,0 +1,25 @@
+
\ No newline at end of file
diff --git a/events/templates/rsvp/rsvp_pages.html b/events/templates/rsvp/rsvp_pages.html
index 1c36675..02b7526 100644
--- a/events/templates/rsvp/rsvp_pages.html
+++ b/events/templates/rsvp/rsvp_pages.html
@@ -6,4 +6,6 @@
{{ page_questions }}
-{{ page_notes }}
\ No newline at end of file
+{{ page_notes }}
+
+{{ buttons }}
\ No newline at end of file
diff --git a/events/views/rsvp.py b/events/views/rsvp.py
index 6359b24..a0f6569 100644
--- a/events/views/rsvp.py
+++ b/events/views/rsvp.py
@@ -131,6 +131,7 @@ def rsvp_pages(request, rid: str, page: str, error: str = ""):
"page_activities": _render_page_activities(request, context, page),
"page_questions": _render_page_questions(request, context, page),
"page_notes": _render_page_notes(request, context, page),
+ "buttons": _render_buttons(request, context, page),
}
response = render(request, "rsvp/rsvp_pages.html", rendercontent)
@@ -320,6 +321,14 @@ def _render_page(
return True, template.render(context=context, request=request)
+def _render_buttons(request, context, page) -> str:
+
+ add_to_context(context, "page", page)
+
+ template = get_template("rsvp/rsvp_buttons.html")
+ return template.render(context=context, request=request)
+
+
# Change the page of the request
def page_change(request, rid: str, page: str):
logger.debug("page_change: id=%s, page=%s", rid, page)