diff --git a/ddcz/forms/dating.py b/ddcz/forms/dating.py
new file mode 100644
index 00000000..62db5710
--- /dev/null
+++ b/ddcz/forms/dating.py
@@ -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 ""
diff --git a/ddcz/forms/market.py b/ddcz/forms/market.py
index 19a02d7f..408eb6c8 100644
--- a/ddcz/forms/market.py
+++ b/ddcz/forms/market.py
@@ -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):
@@ -42,7 +13,7 @@ class MarketForm(forms.ModelForm):
)
area = forms.ChoiceField(
- choices=CZECH_REGIONS,
+ choices=CZECHOSLOVAK_REGIONS,
label="Kraj",
required=True,
)
@@ -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 ""
diff --git a/ddcz/geo.py b/ddcz/geo.py
new file mode 100644
index 00000000..b14ab28c
--- /dev/null
+++ b/ddcz/geo.py
@@ -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ý"),
+]
diff --git a/ddcz/models/used/social.py b/ddcz/models/used/social.py
index e04cfbe0..dac0e251 100644
--- a/ddcz/models/used/social.py
+++ b/ddcz/models/used/social.py
@@ -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(
@@ -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,
@@ -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:
diff --git a/ddcz/templates/dating/create.html b/ddcz/templates/dating/create.html
new file mode 100644
index 00000000..6fd4ebeb
--- /dev/null
+++ b/ddcz/templates/dating/create.html
@@ -0,0 +1,31 @@
+{% extends 'public.html' %}
+{% load html %}
+
+{% block content %}
+
+
Přidat inzerát do seznamky
+
Zadejte pouze údaje, které chcete zveřejnit.
+
+
+{% endblock %}
diff --git a/ddcz/templates/dating/list.html b/ddcz/templates/dating/list.html
index 6790a242..93131519 100644
--- a/ddcz/templates/dating/list.html
+++ b/ddcz/templates/dating/list.html
@@ -8,7 +8,7 @@
Seznamka
-
Seznamka slouží k seznamování hráčů a PJů. Pokud chcete něco prodat, nebo něco sháníte vkládejte inzeráty do inzerce.
+
Seznamka slouží k seznamování hráčů a PJů. Pokud chcete něco prodat, nebo něco sháníte vkládejte inzeráty do inzerce. Pro přidání inzerátu do seznamky použijte tento formulář.
{% pagination items %}
{% for i in items %}
@@ -20,10 +20,10 @@ Seznamka
{% endif %}
- Sekce:{{ i.group | dating_group_map }}
+ Sekce:{{ i.get_group_display }}
- Okres:{{ i.area }}
+ Kraj:{{ i.area }}
{% if i.age %}
diff --git a/ddcz/templates/market/list.html b/ddcz/templates/market/list.html
index 3ec036ef..7198636d 100644
--- a/ddcz/templates/market/list.html
+++ b/ddcz/templates/market/list.html
@@ -7,7 +7,7 @@
Inzerce
-
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 použijte tento formulář.
+
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 použijte tento formulář.
Prosíme vás, abyste inzeráty týkající se seznamování hráčů přidávali do Seznamky. Takové inzeráty budou z této rubriky mazány.
{% pagination items %}
diff --git a/ddcz/urls.py b/ddcz/urls.py
index 75b4284e..874b2b07 100644
--- a/ddcz/urls.py
+++ b/ddcz/urls.py
@@ -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/
/", views.market_delete, name="market_delete"),
+ path("inzerce/pridej/", views.market_create, name="market-create"),
+ path("inzerce/smaz//", views.market_delete, name="market-delete"),
path("linky/", views.links, name="links-list"),
### Discussions & Tavern
path("forum/", views.phorum, name="phorum-list"),
diff --git a/ddcz/views/misc.py b/ddcz/views/misc.py
index 9f602d43..47b3257b 100644
--- a/ddcz/views/misc.py
+++ b/ddcz/views/misc.py
@@ -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,
@@ -15,6 +16,7 @@
MARKET_SECTION_CHOICES,
)
from ..forms.market import MarketForm
+from ..forms.dating import DatingForm
DEFAULT_LIST_SIZE = 10
@@ -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})