Skip to content

Commit

Permalink
Merge pull request #289 from clabs/dev
Browse files Browse the repository at this point in the history
Various improvements
  • Loading branch information
ethrgeist authored Nov 16, 2024
2 parents 9a45c78 + 77af497 commit 0ed7470
Show file tree
Hide file tree
Showing 7 changed files with 129 additions and 49 deletions.
6 changes: 5 additions & 1 deletion src/rockon/base/templates/navbars/crew_context.html
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
{% if is_crewmember == True %}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Crew</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{% url 'crew:guestlist_entries' slug=current_event.slug %}">Gästeliste</a>
{% if group.name == 'crew' and current_event.bid_vote_allowed %}
{% if current_event.bid_vote_allowed %}
<a class="dropdown-item" aria-current="page" href="{% url 'bands:bid_vote' slug=current_event.slug %}">Band Bewertung</a>
{% endif %}
</div>
</li>
{% endif %}
{% for group in user.groups.all %}
{% if group.name == 'crewcoord' %}
<li class="nav-item dropdown">
Expand Down Expand Up @@ -35,10 +37,12 @@
</li>
{% endif %}
{% endfor %}
{% if is_crewmember == True %}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Werkzeuge</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{% url 'tools_qrcode_generator' %}">QR Code Generator</a>
<a class="dropdown-item disabled" href="#">Link-Shortener</a>
</div>
</li>
{% endif %}
7 changes: 7 additions & 0 deletions src/rockon/crew/models/crew.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from __future__ import annotations

from django.db.models import Q

from rockon.base.models import Event
from rockon.library.custom_model import CustomModel, models

Expand All @@ -13,3 +15,8 @@ class Crew(CustomModel):

def __str__(self):
return self.name

def is_member(self, user):
return self.crew_members.filter(
user=user, state__in=["confirmed", "arrived"]
).exists()
144 changes: 100 additions & 44 deletions src/rockon/crew/templates/join.html
Original file line number Diff line number Diff line change
@@ -1,34 +1,49 @@
{% extends 'base.html' %} {% block content %}
{% load static %}{% load compress %}
<h1>CREW ANMELDUNG - {{ event.name }}</h1>
<div class="row" style="height: 33vh; background-image: url({{ event.get_image_url }}); background-size: cover; background-position: center center; background-repeat: no-repeat"></div>

{% extends "base.html" %}
{% block content %}
{% load static %}
{% load compress %}
<h1>CREW ANMELDUNG - {{ current_event.name }}</h1>
<div class="row"
style="height: 33vh;
background-image: url({{ current_event.get_image_url }});
background-size: cover;
background-position: center center;
background-repeat: no-repeat"></div>
<script nonce="{{request.csp_nonce}}">
window.rockon_data = {
api_crew_signup: "{% url "api_crew_signup" slug=slug %}",
success_redirect: "{% url "crew:join_submitted" %}",
success_redirect: "{% url "crew:join_submitted" slug=slug %}",
}
</script>
{% compress js %}
<script src="{% static 'js/crewjoin-form.js' %}"></script>
<script src="{% static 'js/crewjoin-form.js' %}"></script>
{% endcompress %}
<form id="signup" class="row align-items-center needs-validation" novalidate>
<form id="signup"
class="row align-items-center needs-validation"
novalidate>
{% csrf_token %}

<section class="row p-4 form-section">
<div>
<h3>Themen</h3>
</div>
<label>Für welche Themen interessierst du dich? Du kannst dir Themenbereiche und/oder Teams aussuchen, die für dich interessant klingen. Nicht das richtige dabei? Keine Sorge, wir finden für jeden etwas!</label>
<label>
Für welche Themen interessierst du dich? Du kannst dir Themenbereiche und/oder Teams aussuchen, die für dich interessant klingen. Nicht das richtige dabei? Keine Sorge, wir finden für jeden etwas!
</label>
<div class="row row-cols-1 row-cols-md-3 g-4 pb-3">
{% for team_category in team_categories %}
<div class="col">
<div class="card h-100" data-teamcategory="{{ team_category.id }}">
<img class="card-img-top img-fluid" src="{{ team_category.get_image_url }}" />
<img class="card-img-top img-fluid"
src="{{ team_category.get_image_url }}" />
<div class="card-header">
<h5 class="card-title">{{ team_category }}</h5>
<div class="form-check form-switch">
<input class="form-check-input" data-teamcategory="{{ team_category.id }}" type="checkbox" role="switch" id="teamcategory_{{ team_category.id }}" name="teamcategory_{{ team_category.id }}" />
<input class="form-check-input"
data-teamcategory="{{ team_category.id }}"
type="checkbox"
role="switch"
id="teamcategory_{{ team_category.id }}"
name="teamcategory_{{ team_category.id }}" />
<label class="form-check-label" for="teamcategory_{{ team_category.id }}">Interesse</label>
</div>
</div>
Expand All @@ -41,7 +56,12 @@ <h5 class="card-text">Teams</h5>
{% if team.is_public %}
<li class="list-group-item">
<div class="form-check form-switch">
<input class="form-check-input" data-team="{{ team.id }}" type="checkbox" role="switch" id="team_{{ team.id }}" name="team_{{ team.id }}" />
<input class="form-check-input"
data-team="{{ team.id }}"
type="checkbox"
role="switch"
id="team_{{ team.id }}"
name="team_{{ team.id }}" />
<label class="form-check-label" for="team_{{ team.id }}">{{ team }}</label>
</div>
</li>
Expand All @@ -56,7 +76,6 @@ <h5 class="card-text">Teams</h5>
{% endfor %}
</div>
</section>

<section class="row p-4 form-section">
<div class="col-lg-8">
<div class="row">
Expand All @@ -71,8 +90,14 @@ <h3>Formale Qualifikationen und Fähigkeiten</h3>
<label>Welche Qualifikationen und Weiterbildungen hast du?</label>
{% for skill in skills %}
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" role="switch" id="skill_{{ skill.id }}" name="skill_{{ skill.id }}" />
<label class="form-check-label" for="skill_{{ skill.id }}">{{ skill.icon|safe }} &nbsp;&nbsp;{{ skill }} - <i>{{ skill.explanation }}</i></label>
<input class="form-check-input"
type="checkbox"
role="switch"
id="skill_{{ skill.id }}"
name="skill_{{ skill.id }}" />
<label class="form-check-label" for="skill_{{ skill.id }}">
{{ skill.icon|safe }} &nbsp;&nbsp;{{ skill }} - <i>{{ skill.explanation }}</i>
</label>
</div>
{% endfor %}
</div>
Expand All @@ -88,15 +113,15 @@ <h3>Formale Qualifikationen und Fähigkeiten</h3>
<div>
<h4>Warum erheben wir diese Informationen?</h4>
</div>
<p>Einzelne Tätigkeiten, die du im Rahmen von {{ event.name }} ausführen könntest, erforden eine formale Qualifikation. Für uns ist es in der Planung wichtig zu wissen, ob ihr z.B. entsprechende Führerscheine habt oder Ersthelfer seid.</p>
<p>
Einzelne Tätigkeiten, die du im Rahmen von {{ current_event.name }} ausführen könntest, erforden eine formale Qualifikation. Für uns ist es in der Planung wichtig zu wissen, ob ihr z.B. entsprechende Führerscheine habt oder Ersthelfer seid.
</p>
</div>
</section>

<section class="row p-4 form-section">
<div>
<h3>Anwesenheit</h3>
</div>

<div class="row">
<div class="col-sm-12 g-4">
<label>An welchen Tagen kannst du vor Ort sein?</label>
Expand All @@ -120,8 +145,12 @@ <h5 class="card-title">{{ phase.name }}</h5>
<ul class="list-group list-group-flush">
{% for day in phase.days %}
<li class="list-group-item">
<input class="form-check-input" type="checkbox" id="attendance_{{ day.id }}" name="attendance_{{ day.id }}" />
<label class="form-check-label date-format-huge" for="attendance_{{ day.id }}">{{ day }}</label>
<input class="form-check-input"
type="checkbox"
id="attendance_{{ day.id }}"
name="attendance_{{ day.id }}" />
<label class="form-check-label date-format-huge"
for="attendance_{{ day.id }}">{{ day }}</label>
</li>
{% endfor %}
</ul>
Expand All @@ -134,41 +163,56 @@ <h5 class="card-title">{{ phase.name }}</h5>
<div class="row">
<div class="col-sm-12 g-4">
<label for="skills_note" class="form-label">Anmerkungen zu deiner Anwesenheit</label>
<textarea class="form-control" id="note_attendance" name="note_attendance" rows="2"></textarea>
<textarea class="form-control"
id="note_attendance"
name="note_attendance"
rows="2"></textarea>
</div>
</div>
</section>

<section class="row p-4 form-section">
<div>
<h3>Übernachtung</h3>
</div>
<label>Aus verschiedenen Gründen ist eine Übernachtung erst ab 18 Jahren möglich.</label>
<div class="col-sm-12 g-4">
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" role="switch" id="stays_overnight" name="stays_overnight" {%if not allow_overnight %}disabled{% endif %} />
<input class="form-check-input"
type="checkbox"
role="switch"
id="stays_overnight"
name="stays_overnight"
{% if not allow_overnight %}disabled{% endif %} />
<label class="form-check-label" for="stays_overnight">Ich übernachte vor Ort.</label>
</div>
</div>
</section>

<section class="row p-4 form-section">
<div>
<h3>Freistellung</h3>
</div>
<label>Wir versuchen dir zu helfen, eine Freistellung für diese ehrenamtliche Tätigkeit zu bekommen.</label>
<div class="col-sm-12 g-4">
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" role="switch" id="leave_of_absence" name="leave_of_absence" />
<label class="form-check-label" for="leave_of_absence">Ich brauche eine Befreiung von Schule, Universität oder ähnlichem.</label>
<input class="form-check-input"
type="checkbox"
role="switch"
id="leave_of_absence"
name="leave_of_absence" />
<label class="form-check-label" for="leave_of_absence">
Ich brauche eine Befreiung von Schule, Universität oder ähnlichem.
</label>
</div>
</div>
<div class="col-sm-12 g-4">
<label for="leave_of_absence_note" class="form-label">Anmerkungen zu meiner Befreiung</label>
<textarea class="form-control" id="leave_of_absence_note" name="leave_of_absence_note" rows="2" disabled></textarea>
<textarea class="form-control"
id="leave_of_absence_note"
name="leave_of_absence_note"
rows="2"
disabled></textarea>
</div>
</section>

<section class="row p-4 form-section">
<div class="col-lg-8">
<div class="row">
Expand Down Expand Up @@ -202,7 +246,10 @@ <h3>Essen &amp; T-Shirt</h3>
<div class="row">
<div class="col-sm-12 g-4">
<label for="nutrition_note" class="form-label">Anmerkungen zu Essensgewohnheiten, Unverträglichkeiten, etc.</label>
<textarea class="form-control" id="nutrition_note" name="nutrition_note" rows="3"></textarea>
<textarea class="form-control"
id="nutrition_note"
name="nutrition_note"
rows="3"></textarea>
</div>
</div>
</div>
Expand All @@ -212,17 +259,16 @@ <h3>Essen &amp; T-Shirt</h3>
<label for="crew_shirt" class="form-label">T-Shirt</label>
<select id="crew_shirt" name="crew_shirt" class="form-select not-empty">
<option value="" selected></option>
{% for shirt in shirts %}
<option value="{{ shirt.id }}">{{ shirt }}</option>
{% endfor %}
{% for shirt in shirts %}<option value="{{ shirt.id }}">{{ shirt }}</option>{% endfor %}
</select>
<div class="valid-feedback"></div>
<div class="invalid-feedback">Bitte wähle T-Shirt Größe und Schnitt aus.</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 g-4">
Erklärung Schnitt:<ul>
Erklärung Schnitt:
<ul>
<li>
<strong>fitted</strong>: figurbetonter Schnitt
</li>
Expand All @@ -239,11 +285,12 @@ <h3>Essen &amp; T-Shirt</h3>
<div>
<h4>Warum erheben wir diese Informationen?</h4>
</div>
<p>Während du mit uns zusammen die Veranstaltung begleitest, wollen wir uns natürlich um dein leibliches Wohl kümmern. Daher ist es für unsere Planung super wichtig, dass wir wissen worauf wir achten müssen!</p>
<p>
Während du mit uns zusammen die Veranstaltung begleitest, wollen wir uns natürlich um dein leibliches Wohl kümmern. Daher ist es für unsere Planung super wichtig, dass wir wissen worauf wir achten müssen!
</p>
<p>Desweiteren gibt es für die Crew natürlich ein T-Shirt als Dankeschön. Und das sollte dir natürlich auch passen.</p>
</div>
</section>

<section class="row p-4 form-section">
<div>
<h3>Verschiedenes</h3>
Expand All @@ -253,29 +300,39 @@ <h3>Verschiedenes</h3>
<textarea class="form-control" id="general_note" name="general_note" rows="3"></textarea>
</div>
</section>

<section class="row p-4 form-section">
<div>
<h3>Rechtliches</h3>
</div>
<div class="col-md-12">
<div class="form-check form-switch">
<input class="form-check-input not-empty" type="checkbox" role="switch" id="allow_contact" name="allow_contact" />
<label class="form-check-label" for="allow_contact">Ich bin damit einverstanden, dass der CPYE e.V. mich für Dinge rund um den Rocktreff und das Spielfest kontaktieren darf.</label>
<input class="form-check-input not-empty"
type="checkbox"
role="switch"
id="allow_contact"
name="allow_contact" />
<label class="form-check-label" for="allow_contact">
Ich bin damit einverstanden, dass der CPYE e.V. mich für Dinge rund um den Rocktreff und das Spielfest kontaktieren darf.
</label>
<div class="valid-feedback"></div>
<div class="invalid-feedback">Bitte erlaube uns, dich zu kontaktieren.</div>
</div>
</div>
<div class="col-md-12">
<div class="form-check form-switch">
<input class="form-check-input not-empty" type="checkbox" role="switch" id="read_privacy" name="read_privacy" />
<label class="form-check-label" for="read_privacy">Ich habe die <a href="{% url 'rockon_privacy' %}" target="_blank">Datenschutzbestimmungen</a> zur Kenntnis genommen und erkläre mich mit der Speicherung und Verarbeitung personenbezogener Daten im Rahmen der Veranstaltungen Rocktreff und Spielfest einverstanden.</label>
<input class="form-check-input not-empty"
type="checkbox"
role="switch"
id="read_privacy"
name="read_privacy" />
<label class="form-check-label" for="read_privacy">
Ich habe die <a href="{% url 'rockon_privacy' %}" target="_blank">Datenschutzbestimmungen</a> zur Kenntnis genommen und erkläre mich mit der Speicherung und Verarbeitung personenbezogener Daten im Rahmen der Veranstaltungen Rocktreff und Spielfest einverstanden.
</label>
<div class="valid-feedback"></div>
<div class="invalid-feedback">Bitte bestätige, dass du die Datenschutzbestimmungen gelesen hast.</div>
</div>
</div>
</section>

<section class="row p-4 form-section">
<div class="d-grid gap-2 col-12 mx-auto pt-3">
<div class="row g-2">
Expand All @@ -300,5 +357,4 @@ <h3>Rechtliches</h3>
</div>
</section>
</form>

{% endblock %}
{% endblock content %}
6 changes: 3 additions & 3 deletions src/rockon/crew/templates/join_profile_incomplete.html
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{% extends 'base.html' %} {% block content %}
{% extends "base.html" %} {% block content %}
{% load static %}
<h1>CREW ANMELDUNG - {{ event.name }}</h1>
<div class="row" style="height: 33vh; background-image: url({{ event.get_image_url }}); background-size: cover; background-position: center center; background-repeat: no-repeat"></div>
<div class="row" style="height: 33vh; background-image: url({{ current_event.get_image_url }}); background-size: cover; background-position: center center; background-repeat: no-repeat"></div>
<div class="alert alert-warning mt-3" role="alert">
Bitte vervollständige hier <a href="{% url 'base:account' %}">dein Account</a>, bevor du dich für die Crew anmeldest.
</div>
{% endblock %}
{% endblock content %}
1 change: 0 additions & 1 deletion src/rockon/crew/views/join.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ def join(request, slug):
days=18 * 365
)
extra_context = {
"event": event,
"og_title": f"Crewanmeldung {event.name}",
"og_description": f"Crewanmeldung für die Veranstaltung {event.name}, sei Teil des Teams!",
"shirts": shirts,
Expand Down
13 changes: 13 additions & 0 deletions src/rockon/library/context_processors/is_crewmember.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from __future__ import annotations

from rockon.base.models import Event


def is_crewmember(request):
if request.user.is_authenticated:
event_id = request.session.get("current_event_id")
if event_id is not None:
current_event = Event.objects.get(id=event_id)
is_member = current_event.crews.is_member(request.user)
return {"is_crewmember": is_member}
return {"is_crewmember": False}
1 change: 1 addition & 0 deletions src/rockon/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@
"rockon.library.context_processors.sentry_frontend.get_sentry_data",
"rockon.library.context_processors.get_domain.get_domain",
"rockon.library.context_processors.current_event.current_event",
"rockon.library.context_processors.is_crewmember.is_crewmember",
],
},
},
Expand Down

0 comments on commit 0ed7470

Please sign in to comment.