Skip to content

Commit

Permalink
Adding dating, plus proper escaping
Browse files Browse the repository at this point in the history
  • Loading branch information
Almad committed Dec 30, 2024
1 parent 9971bd2 commit 0a0ed1b
Show file tree
Hide file tree
Showing 9 changed files with 135 additions and 42 deletions.
30 changes: 30 additions & 0 deletions ddcz/forms/dating.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
from django import forms
from django.utils.html import escape
from ..models import Dating
from ..geo import CZECHOSLOVAK_REGIONS


class DatingForm(forms.ModelForm):
area = forms.ChoiceField(
choices=CZECHOSLOVAK_REGIONS,
label="Kraj",
required=True,
)

class Meta:
model = Dating
fields = [
"name",
"email",
"group",
"phone",
"mobile",
"age",
"area",
"experience",
"text",
]

def clean_text(self):
text = self.cleaned_data["text"]
return escape(text) if text else ""
39 changes: 7 additions & 32 deletions ddcz/forms/market.py
Original file line number Diff line number Diff line change
@@ -1,37 +1,8 @@
from django import forms
from django.core.validators import EmailValidator
from django.utils.html import escape
from ddcz.models import Market


CZECH_REGIONS = [
("", "-- Vyberte kraj --"),
("Celá ČR", "Celá ČR"),
("Celá SR", "Celá SR"),
# Czech Republic
("Praha", "Praha"),
("Středočeský", "Středočeský"),
("Jihočeský", "Jihočeský"),
("Plzeňský", "Plzeňský"),
("Karlovarský", "Karlovarský"),
("Ústecký", "Ústecký"),
("Liberecký", "Liberecký"),
("Královéhradecký", "Královéhradecký"),
("Pardubický", "Pardubický"),
("Vysočina", "Vysočina"),
("Jihomoravský", "Jihomoravský"),
("Olomoucký", "Olomoucký"),
("Zlínský", "Zlínský"),
("Moravskoslezský", "Moravskoslezský"),
# Slovak Republic
("Bratislavský", "Bratislavský"),
("Trnavský", "Trnavský"),
("Trenčianský", "Trenčianský"),
("Nitrianský", "Nitrianský"),
("Žilinský", "Žilinský"),
("Banskobystrický", "Banskobystrický"),
("Prešovský", "Prešovský"),
("Košický", "Košický"),
]
from ddcz.geo import CZECHOSLOVAK_REGIONS


class MarketForm(forms.ModelForm):
Expand All @@ -42,7 +13,7 @@ class MarketForm(forms.ModelForm):
)

area = forms.ChoiceField(
choices=CZECH_REGIONS,
choices=CZECHOSLOVAK_REGIONS,
label="Kraj",
required=True,
)
Expand All @@ -59,3 +30,7 @@ class Meta:
"mobile": "Mobil",
"text": "Text inzerátu",
}

def clean_text(self):
text = self.cleaned_data["text"]
return escape(text) if text else ""
29 changes: 29 additions & 0 deletions ddcz/geo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
CZECHOSLOVAK_REGIONS = [
("", "-- Vyberte kraj --"),
("Celá ČR", "Celá ČR"),
("Celá SR", "Celá SR"),
# Czech Republic
("Praha", "Praha"),
("Středočeský", "Středočeský"),
("Jihočeský", "Jihočeský"),
("Plzeňský", "Plzeňský"),
("Karlovarský", "Karlovarský"),
("Ústecký", "Ústecký"),
("Liberecký", "Liberecký"),
("Královéhradecký", "Královéhradecký"),
("Pardubický", "Pardubický"),
("Vysočina", "Vysočina"),
("Jihomoravský", "Jihomoravský"),
("Olomoucký", "Olomoucký"),
("Zlínský", "Zlínský"),
("Moravskoslezský", "Moravskoslezský"),
# Slovak Republic
("Bratislavský", "Bratislavský"),
("Trnavský", "Trnavský"),
("Trenčianský", "Trenčianský"),
("Nitrianský", "Nitrianský"),
("Žilinský", "Žilinský"),
("Banskobystrický", "Banskobystrický"),
("Prešovský", "Prešovský"),
("Košický", "Košický"),
]
19 changes: 15 additions & 4 deletions ddcz/models/used/social.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,18 @@
("daruji", "Daruji"),
)

DATING_SECTION_CHOICES = (
("hledam_hrace", "Hledám hráče"),
("hledam_druzinu", "Hledám družinu"),
("hledam_pj", "Hledám PJ"),
("nabizim_druzinu", "Nabízím družinu"),
("nabizim_pj", "Nabízím se jako PJ"),
)


class Dating(models.Model):
name = MisencodedCharField(
max_length=40, blank=True, null=True, db_column="jmeno", verbose_name="Jméno"
max_length=40, db_column="jmeno", verbose_name="Jméno", default="Anonym"
)
email = MisencodedCharField(max_length=40, blank=True, null=True)
phone = MisencodedCharField(
Expand All @@ -30,7 +38,7 @@ class Dating(models.Model):
blank=True, null=True, db_column="vek", verbose_name="Věk"
)
area = MisencodedCharField(
max_length=40, blank=True, null=True, db_column="okres", verbose_name="Okres"
max_length=40, blank=True, null=True, db_column="okres", verbose_name="Kraj"
)
experience = MisencodedCharField(
max_length=20,
Expand All @@ -42,9 +50,12 @@ class Dating(models.Model):
published = models.DateTimeField(
blank=True, null=True, db_column="datum", verbose_name="Datum"
)
text = MisencodedTextField(blank=True, null=True, db_column="text")
text = MisencodedTextField(db_column="text", default="")
group = MisencodedCharField(
max_length=20, blank=True, null=True, db_column="sekce", verbose_name="Sekce"
max_length=20,
choices=DATING_SECTION_CHOICES,
db_column="sekce",
verbose_name="Sekce",
)

class Meta:
Expand Down
31 changes: 31 additions & 0 deletions ddcz/templates/dating/create.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{% extends 'public.html' %}
{% load html %}

{% block content %}
<div id="page-dating">
<h1 class="page-heading">Přidat inzerát do seznamky</h1>
<p>Zadejte pouze údaje, které chcete zveřejnit.</p>
<form method="POST">
{% csrf_token %}

{% for field in form %}
<div class="form-group">
{{ field.label_tag }}
{{ field }}
{% if field.errors %}
<div class="field-error">
{{ field.errors }}
</div>
{% endif %}
{% if field.help_text %}
<div class="field-help">
{{ field.help_text }}
</div>
{% endif %}
</div>
{% endfor %}

<button type="submit">Přidat inzerát</button>
</form>
</div>
{% endblock %}
6 changes: 3 additions & 3 deletions ddcz/templates/dating/list.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<div id="page-dating">
<h1 class="page-heading">Seznamka</h1>
<p>Seznamka slouží k seznamování hráčů a PJů. Pokud chcete něco prodat, nebo něco sháníte vkládejte inzeráty do <a href="{% url 'ddcz:market' %}">inzerce</a>.</p>
<p>Seznamka slouží k seznamování hráčů a PJů. Pokud chcete něco prodat, nebo něco sháníte vkládejte inzeráty do <a href="{% url 'ddcz:market' %}">inzerce</a>. Pro přidání inzerátu do seznamky <a href="{% url 'ddcz:dating-create' %}">použijte tento formulář</a>.</p>
{% pagination items %}
{% for i in items %}
<article class="dating">
Expand All @@ -20,10 +20,10 @@ <h1 class="page-heading">Seznamka</h1>
{% endif %}
</p>
<p>
<span class="label">Sekce:</span><span class="value">{{ i.group | dating_group_map }}</span>
<span class="label">Sekce:</span><span class="value">{{ i.get_group_display }}</span>
</p>
<p>
<span class="label">Okres:</span><span class="value">{{ i.area }}</span>
<span class="label">Kraj:</span><span class="value">{{ i.area }}</span>
</p>
{% if i.age %}
<p>
Expand Down
2 changes: 1 addition & 1 deletion ddcz/templates/market/list.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

<div id="page-market">
<h1 class="page-heading">Inzerce</h1>
<p>Zde můžete nabídnout k prodeji, nebo zde naopak můžete koupit, vyměnit či darovat vše co se týká fantasy či Dračího doupěte. Pro přidání inzerátu <a href="{% url 'ddcz:market_create' %}">použijte tento formulář</a>.</p>
<p>Zde můžete nabídnout k prodeji, nebo zde naopak můžete koupit, vyměnit či darovat vše co se týká fantasy či Dračího doupěte. Pro přidání inzerátu <a href="{% url 'ddcz:market-create' %}">použijte tento formulář</a>.</p>
<p>Prosíme vás, abyste inzeráty týkající se seznamování hráčů přidávali do <a href="{% url 'ddcz:dating' %}">Seznamky</a>. Takové inzeráty budou z této rubriky mazány. </p>
{% pagination items %}
<br>
Expand Down
5 changes: 3 additions & 2 deletions ddcz/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,10 @@
path("aktuality/", news.list, name="news"),
path("novinky/", news.newsfeed, name="newsfeed"),
path("seznamka/", views.dating, name="dating"),
path("seznamka/pridat/", views.misc.dating_create, name="dating-create"),
path("inzerce/", views.market, name="market"),
path("inzerce/pridej/", views.market_create, name="market_create"),
path("inzerce/smaz/<int:id>/", views.market_delete, name="market_delete"),
path("inzerce/pridej/", views.market_create, name="market-create"),
path("inzerce/smaz/<int:id>/", views.market_delete, name="market-delete"),
path("linky/", views.links, name="links-list"),
### Discussions & Tavern
path("forum/", views.phorum, name="phorum-list"),
Expand Down
16 changes: 16 additions & 0 deletions ddcz/views/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from django.http import Http404
from django.shortcuts import render, get_object_or_404, redirect
from django.views.decorators.http import require_http_methods
from django.utils import timezone

from ..models import (
Market,
Expand All @@ -15,6 +16,7 @@
MARKET_SECTION_CHOICES,
)
from ..forms.market import MarketForm
from ..forms.dating import DatingForm

DEFAULT_LIST_SIZE = 10

Expand Down Expand Up @@ -148,3 +150,17 @@ def market_delete(request, id):
if market_item.user_profile == request.ddcz_profile:
market_item.delete()
return redirect("ddcz:market")


def dating_create(request):
if request.method == "POST":
form = DatingForm(request.POST)
if form.is_valid():
dating_item = form.save(commit=False)
dating_item.published = timezone.now()
form.save()
return redirect("ddcz:dating")
else:
form = DatingForm()

return render(request, "dating/create.html", {"form": form})

0 comments on commit 0a0ed1b

Please sign in to comment.