+22
-15
members/forms.py
+22
-15
members/forms.py
···
1
1
from django import forms
2
+
from django.utils.safestring import mark_safe
2
3
3
4
from .models import Member
4
5
···
11
12
"name": forms.TextInput(
12
13
attrs={"class": "w-full p-2 my-4 border rounded-md"}
13
14
),
14
-
"website": forms.URLInput(attrs={"class": "w-full p-2 border rounded-md"}),
15
+
"website": forms.URLInput(
16
+
attrs={"class": "w-full p-2 my-4 border rounded-md"}
17
+
),
15
18
"mastodon": forms.TextInput(
16
19
attrs={"class": "w-full p-2 my-4 border rounded-md"}
17
20
),
18
-
"bluesky": forms.TextInput(attrs={"class": "w-full p-2 border rounded-md"}),
21
+
"bluesky": forms.TextInput(
22
+
attrs={"class": "w-full p-2 my-4 border rounded-md"}
23
+
),
19
24
"instagram": forms.TextInput(
20
25
attrs={"class": "w-full p-2 my-4 border rounded-md"}
21
26
),
22
27
}
23
28
help_texts = {
24
-
"name": "Your artist or organisation name",
25
-
"website": "Your website URL (optional)",
26
-
"mastodon": "Your Mastodon handle (optional), e.g. mastodon.social/@username",
27
-
"bluesky": "Your Bluesky handle (optional), e.g. @username.bsky.social",
28
-
"instagram": "Your Instagram handle (optional), e.g. @username",
29
+
"name": mark_safe(
30
+
'<span class="text-sm text-gray-500 pb-4 block">Your artist or organisation name</span>'
31
+
),
32
+
"website": mark_safe(
33
+
'<span class="text-sm text-gray-500 pb-4 block">Your website URL starting with https (optional)</span>'
34
+
),
35
+
"mastodon": mark_safe(
36
+
'<span class="text-sm text-gray-500 pb-4 block">Your Mastodon handle (optional), e.g. mastodon.social/@username</span>'
37
+
),
38
+
"bluesky": mark_safe(
39
+
'<span class="text-sm text-gray-500 pb-4 block">Your Bluesky handle (optional), e.g. @username.bsky.social</span>'
40
+
),
41
+
"instagram": mark_safe(
42
+
'<span class="text-sm text-gray-500 pb-4 block">Your Instagram handle (optional), e.g. @username</span>'
43
+
),
29
44
}
30
-
31
-
32
-
def __init__(self, *args, **kwargs):
33
-
super().__init__(*args, **kwargs)
34
-
for field in self.fields.values():
35
-
field.help_text = (
36
-
f'<span class="text-sm text-gray-500 pb-4 block">{field.help_text}</span>'
37
-
)
+10
-1
members/templates/base.html
+10
-1
members/templates/base.html
···
3
3
<head>
4
4
<meta charset="UTF-8">
5
5
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6
-
<title>{% block title %}Your Title Here{% endblock %}</title>
6
+
<title>{% block title %}Indiemusi.ch{% endblock %}</title>
7
7
<!-- Add any meta tags, CSS links, or other header elements here -->
8
8
<link rel="stylesheet" href="../static/css/indiemusich.css">
9
9
<script src="https://cdn.tailwindcss.com"></script>
···
33
33
34
34
<main role="main">
35
35
<div class="container mx-auto px-4">
36
+
{% if messages %}
37
+
<div class="messages">
38
+
{% for message in messages %}
39
+
<div class="bg-green-100 border-l-4 border-green-500 text-green-700 p-4 mb-4" role="alert">
40
+
{{ message }}
41
+
</div>
42
+
{% endfor %}
43
+
</div>
44
+
{% endif %}
36
45
{% block content %}
37
46
<!-- Content goes here -->
38
47
{% endblock %}
+7
members/templates/members_list.html
+7
members/templates/members_list.html
···
3
3
{% block content %}
4
4
<div class="container mx-auto px-4 py-8">
5
5
<h1 class="text-3xl font-bold mb-8 text-center">Indiemusi.ch Members</h1>
6
+
7
+
<div class="text-center mb-8">
8
+
<p class="text-lg mb-4">Do you want to be added to our members list?</p>
9
+
<a href="{% url 'member_form' %}" class="inline-block bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded transition-colors">
10
+
Register
11
+
</a>
12
+
</div>
6
13
7
14
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
8
15
{% for member in members %}
+5
members/views.py
+5
members/views.py
···
1
+
from django.contrib import messages
1
2
from django.shortcuts import get_object_or_404, redirect, render
2
3
3
4
from .forms import MemberForm
···
25
26
member = form.save(commit=False)
26
27
member.verified = False # New members start unverified
27
28
member.save()
29
+
messages.success(
30
+
request,
31
+
"Thank you for registering, your submission will be verified by one of our admins soon.",
32
+
)
28
33
return redirect("members_list")
29
34
else:
30
35
form = MemberForm()