Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/django_project/web/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ class PresentationRequestAdmin(admin.ModelAdmin):
"email",
"title",
"description",
"target_audience",
"skill_level",
]
search_fields: list[str] = ["id", "presenter", "email", "title", "description", "target_audience"]
list_filter: list[str] = ["target_audience"]
search_fields: list[str] = ["id", "presenter", "email", "title", "description", "skill_level"]
list_filter: list[str] = ["skill_level"]


class EventAdmin(admin.ModelAdmin):
Expand Down
40 changes: 39 additions & 1 deletion src/django_project/web/forms.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,40 @@
# import models
# from web.models import ()
from handyhelpers.forms import HtmxModelForm
from web.models import PresentationRequest, TopicSuggestion


class PresentationRequestForm(HtmxModelForm):
hx_post: str = "/presentation_request"
hx_target: str = "presentation-request-form"
submit_button_text: str = "submit"
success_message: str = "presentation request submitted; thanks!"

class Meta:
model = PresentationRequest
fields: list[str] = ["presenter", "email", "title", "description", "skill_level"]

labels: dict[str, str] = {
"presenter": "Presenter Name",
"email": "Email Address",
"title": "Presentation Title",
"description": "Presentation Description",
"skill_level": "Skill Level",
}


class TopicSuggestionForm(HtmxModelForm):
hx_post: str = "/topic_suggestion"
hx_target: str = "topic-suggestion-form"
submit_button_text: str = "submit"
success_message: str = "topic suggestion submitted; thanks!"

class Meta:
model = TopicSuggestion
fields: list[str] = ["title", "description", "skill_level", "email"]

labels: dict[str, str] = {
"title": "Topic Title",
"description": "Topic Description",
"skill_level": "Skill Level",
"email": "Email Address (optional)",
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 5.2.4 on 2025-07-29 16:23

from django.db import migrations


class Migration(migrations.Migration):
dependencies = [
("web", "0002_event_url"),
]

operations = [
migrations.RenameField(
model_name="presentationrequest",
old_name="target_audience",
new_name="skill_level",
),
]
2 changes: 1 addition & 1 deletion src/django_project/web/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ class PresentationRequest(HandyHelperBaseModel):
email: models.EmailField = models.EmailField(max_length=254, null=False)
title: models.CharField = models.CharField(max_length=128, null=False)
description: models.TextField = models.TextField()
target_audience: models.CharField = models.CharField(
skill_level: models.CharField = models.CharField(
max_length=64,
null=False,
choices=[
Expand Down
224 changes: 149 additions & 75 deletions src/django_project/web/templates/web/full/index.html

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{% for resource in resources %}
<div class="mb-3">
<div class="mb-3 px-3 hover-grow">
<a href="{{ resource.url }}" target="_blank" class="note-link-{{ color }} fw-bold">{{ resource.name }}</a><br />
<span class="text-muted pe-1" style="font-size: 80%;">{{ resource.description }}</span>
</div>
Expand Down
8 changes: 6 additions & 2 deletions src/django_project/web/urls/gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@
path("home/", gui.IndexView.as_view(), name="home"),
# HTMX views
path("htmx/resource-list/<int:pk>/", gui.ResourceListPartialView.as_view(), name="htmx_resource_list"),
path("htmx/past-events/", gui.PastEvents.as_view(), name="htmx_past_events"),
path("htmx/future-events/", gui.FutureEvents.as_view(), name="htmx_future_events"),
path("htmx/past-events/", gui.PastEventsView.as_view(), name="htmx_past_events"),
path("htmx/future-events/", gui.FutureEventsView.as_view(), name="htmx_future_events"),
path(
"htmx/presentation-request/", gui.PresentationRequestFormRequestView.as_view(), name="htmx_presentation_request"
),
path("htmx/topic-suggestion/", gui.TopicSuggestionFormRequestView.as_view(), name="htmx_topic_suggestion"),
]
18 changes: 16 additions & 2 deletions src/django_project/web/views/gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
from django.utils import timezone
from django.views import View
from django.views.generic import TemplateView
from handyhelpers.views.htmx import (
HtmxFormPostSimple,
)
from web.forms import PresentationRequestForm, TopicSuggestionForm
from web.models import Event, Resource, ResourceCategory


Expand Down Expand Up @@ -39,17 +43,27 @@ def get(self, request, pk) -> HttpResponse:
)


class PastEvents(View):
class PastEventsView(View):
def get(self, request) -> HttpResponse:
events: BaseManager[Event] = Event.objects.filter(start_date_time__lt=timezone.now()).order_by(
"-start_date_time"
)
return render(request, "web/partials/past_events.htm", {"events": events})


class FutureEvents(View):
class FutureEventsView(View):
def get(self, request) -> HttpResponse:
events: BaseManager[Event] = Event.objects.filter(start_date_time__gte=timezone.now()).order_by(
"start_date_time"
)
return render(request, "web/partials/future_events.htm", {"events": events})


class PresentationRequestFormRequestView(HtmxFormPostSimple):
form = PresentationRequestForm
success_message: str = "Presentation request received, thanks!"


class TopicSuggestionFormRequestView(HtmxFormPostSimple):
form = TopicSuggestionForm
success_message: str = "Topic suggestion received, thanks!"
Loading