Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove Turbo from Dashboard #309

Merged
merged 22 commits into from
Dec 31, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
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
41 changes: 10 additions & 31 deletions apps/interfaces/dashboard/entry/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
TemplateView,
UpdateView,
)
from turbo_response import TurboFrame, redirect_303

from application import entry as entry_app
from application.indieweb import extract as indieweb_extract
Expand Down Expand Up @@ -72,7 +71,7 @@ def form_valid(self, form, named_forms=None):
self.request,
f"Saved {form.cleaned_data['m_post_kind']}. {mark_safe(permalink_a_tag)}",
)
return redirect_303(self.get_redirect_url(entry=entry))
return redirect(self.get_redirect_url(entry=entry))

def _get_location(self, location_form) -> entry_app.Location | None:
if location_form.cleaned_data["point"]:
Expand Down Expand Up @@ -176,7 +175,7 @@ def form_valid(self, form, named_forms=None):
self.request,
f"Saved {form.instance.t_post.m_post_kind.key}. {mark_safe(permalink_a_tag)}",
)
return redirect_303(self.request.build_absolute_uri())
return redirect(self.request.build_absolute_uri())

def get_response(self, context):
return render(self.request, self.template_name, context=context)
Expand Down Expand Up @@ -229,7 +228,6 @@ class ExtractLinkedPageMetaView(FormView):
success_form = forms.CreateReplyForm
invalidate_template: str | None = None
validate_template: str | None = None
turbo_frame = ""
url_key = ""

def get_context_data(self, **kwargs):
Expand Down Expand Up @@ -262,7 +260,7 @@ def form_valid(self, form):
form=self.success_form(initial=initial, p_author=self.request.user),
named_forms=self.get_named_forms(),
)
return TurboFrame(self.turbo_frame).template(self.validate_template, context).response(self.request)
return TemplateResponse(self.request, self.validate_template, context)

def form_invalid(self, form):
return render(
Expand All @@ -279,14 +277,12 @@ def form_invalid(self, form):
class CreateStatusView(CreateEntryView):
form_class = forms.CreateStatusForm
template_name = "entry/note/create.html"
turbo_template_name = "entry/note/_create.html"


class UpdateStatusView(UpdateEntryView):
form_class = forms.UpdateStatusForm
template_name = "entry/note/update.html"
m_post_kind = MPostKinds.note
turbo_template_name = "entry/note/_update.html"


# Article CRUD views
Expand Down Expand Up @@ -357,7 +353,7 @@ def form_valid(self, form, named_forms=None):
self.request,
f"Saved {form.instance.t_post.m_post_kind.key}. {mark_safe(permalink_a_tag)}",
)
return redirect_303(self.request.build_absolute_uri())
return redirect(self.request.build_absolute_uri())


# Reply CRUD views
Expand Down Expand Up @@ -402,11 +398,11 @@ def form_valid(self, form, named_forms=None):
self.request,
f"Saved {form.cleaned_data['m_post_kind']}. {mark_safe(permalink_a_tag)}",
)
return redirect_303(self.get_redirect_url(entry=entry))
return redirect(self.get_redirect_url(entry=entry))

def form_invalid(self, form, named_forms):
context = self.get_context_data(form=form)
return TurboFrame("reply-form").template("entry/reply/_form.html", context).response(self.request)
return TemplateResponse(self.request, "entry/reply/_form.html", context)

def get_context_data(self, **kwargs):
return super().get_context_data(**kwargs, submit_form=forms.PublishStatusVisibilityForm())
Expand All @@ -418,7 +414,6 @@ class ExtractReplyMetaView(ExtractLinkedPageMetaView):
invalidate_template = "entry/reply/_linked_page_form.html"
validate_template = "entry/reply/_form.html"
url_key = "u_in_reply_to"
turbo_frame = "reply-form"


class UpdateReplyView(UpdateEntryView):
Expand Down Expand Up @@ -464,7 +459,7 @@ def form_valid(self, form, named_forms=None):
self.request,
f"Saved {form.instance.t_post.m_post_kind.key}. {mark_safe(permalink_a_tag)}",
)
return redirect_303(self.request.build_absolute_uri())
return redirect(self.request.build_absolute_uri())


# Bookmarks
Expand Down Expand Up @@ -516,11 +511,11 @@ def form_valid(self, form, named_forms=None):
self.request,
f"Saved {form.cleaned_data['m_post_kind']}. {mark_safe(permalink_a_tag)}",
)
return redirect_303(self.get_redirect_url(entry=entry))
return redirect(self.get_redirect_url(entry=entry))

def form_invalid(self, form):
context = self.get_context_data(form=form)
return TurboFrame("bookmark-form").template("entry/bookmark/_form.html", context).response(self.request)
return TemplateResponse(self.request, "entry/bookmark/_form.html", context)

def get_context_data(self, **kwargs):
return super().get_context_data(**kwargs, submit_form=forms.PublishStatusVisibilityForm())
Expand All @@ -533,7 +528,6 @@ class ExtractBookmarkMetaView(ExtractLinkedPageMetaView):
invalidate_template = "entry/bookmark/_linked_page_form.html"
validate_template = "entry/bookmark/_form.html"
url_key = "u_bookmark_of"
turbo_frame = "bookmark-form"

def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
Expand Down Expand Up @@ -585,7 +579,7 @@ def form_valid(self, form, named_forms=None):
self.request,
f"Saved {form.instance.t_post.m_post_kind.key}. {mark_safe(permalink_a_tag)}",
)
return redirect_303(self.request.build_absolute_uri())
return redirect(self.request.build_absolute_uri())


@login_required
Expand Down Expand Up @@ -618,11 +612,6 @@ def __init__(self, *args, **kwargs):
if self.m_post_kind_key:
self.m_post_kind = get_object_or_404(post_models.MPostKind, key=self.m_post_kind_key)

def get_template_names(self):
if self.request.turbo.frame:
return "entry/fragments/posts.html"
return "entry/posts.html"

def get_queryset(self):
qs = models.TEntry.objects.all().select_related(
"t_post",
Expand All @@ -648,15 +637,6 @@ def get_context_data(self, *args, **kwargs):
)
return context

def render_to_response(self, context: dict[str, Any], **response_kwargs):
if self.request.turbo.frame:
return (
TurboFrame(self.request.turbo.frame)
.template("entry/fragments/posts.html", context)
.response(self.request)
)
return super().render_to_response(context, **response_kwargs)


@login_required
def article_delete(request, pk: int):
Expand Down Expand Up @@ -691,7 +671,6 @@ class QuickEntry(CreateStatusView):
"""

template_name = "entry/note/quick.html"
turbo_template_name = "entry/note/_quick.html"
form_class = forms.QuickCreateStatusForm

def get_redirect_url(self, entry):
Expand Down
38 changes: 11 additions & 27 deletions apps/interfaces/dashboard/files/views.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
import json

from bs4 import BeautifulSoup
from django import http
from django.contrib.auth.decorators import login_required
from django.db import transaction
from django.urls import reverse_lazy
from django.utils.decorators import method_decorator
from django.views.generic import DeleteView, DetailView, ListView
from turbo_response.mixins import HttpResponseSeeOther, TurboFrameTemplateResponseMixin

from data.files.models import TFile
from domain.files import queries as file_queries


@method_decorator(login_required, name="dispatch")
class FilesList(TurboFrameTemplateResponseMixin, ListView):
class FilesList(ListView):
template_name = "files/tfiles_list.html"
paginate_by = 20

Expand All @@ -25,37 +25,22 @@ def get_context_data(self, *args, object_list=None, **kwargs):


@method_decorator(login_required, name="dispatch")
class FileDetail(TurboFrameTemplateResponseMixin, DetailView):
class FileDetail(DetailView):
template_name = "files/tfile_detail.html"
queryset = TFile.objects.all()
turbo_frame_dom_id = "modal"

def get_context_data(self, **kwargs):
kwargs["page"] = self.request.GET.get("page")
kwargs["insert"] = self.request.GET.get("insert")
if "turbo_frame_target" not in kwargs:
target = self.get_turbo_frame_dom_id()
kwargs["turbo_frame_target"] = target
return super().get_context_data(**kwargs)

def render_to_response(self, context, **response_kwargs):
if self.request.turbo.frame:
return self.render_turbo_frame(context, **response_kwargs)
return super().render_to_response(context, **response_kwargs)


@method_decorator(login_required, name="dispatch")
class FileDelete(TurboFrameTemplateResponseMixin, DeleteView):
class FileDelete(DeleteView):
queryset = TFile.objects.all()
template_name = "files/tfile_delete.html"
turbo_frame_dom_id = "modal"
success_url = reverse_lazy("files")

def render_to_response(self, context, **response_kwargs):
if self.request.turbo.frame:
return self.render_turbo_frame(context, **response_kwargs)
return super().render_to_response(context, **response_kwargs)

def get_success_url(self):
return f"{super().get_success_url()}?page={self.request.GET.get('page')}"

Expand All @@ -81,26 +66,25 @@ def delete(self, request, *args, **kwargs):
t_entry.save()
self.object.delete()
success_url = self.get_success_url()
return HttpResponseSeeOther(success_url)
return http.HttpResponseRedirect(success_url)


@method_decorator(login_required, name="dispatch")
class FileBrowser(TurboFrameTemplateResponseMixin, ListView):
class FileBrowser(ListView):
template_name = "files/tfiles_browser.html"
paginate_by = 20
turbo_frame_dom_id = "modal"

def get_template_names(self) -> list[str]:
if self.request.htmx.trigger_name:
return [self.template_name]
return ["files/_browser_gallery.html"]

def get_queryset(self):
return TFile.objects.all().order_by("-created_at")

def get_context_data(self, *args, object_list=None, **kwargs):
return super().get_context_data(*args, object_list=object_list, nav="files")

def render_to_response(self, context, **response_kwargs):
if self.request.turbo.frame:
return self.render_turbo_frame(context, **response_kwargs)
return super().render_to_response(context, **response_kwargs)


@method_decorator(login_required, name="dispatch")
class TrixFigure(DetailView):
Expand Down
4 changes: 2 additions & 2 deletions apps/interfaces/dashboard/indieweb/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
from django.db import transaction
from django.http import HttpResponseBadRequest, JsonResponse
from django.shortcuts import get_object_or_404, redirect, render
from django.template.response import TemplateResponse
from django.utils import timezone
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_GET, require_POST
from rest_framework import status
from turbo_response import TurboFrame

from application.indieweb import webmentions as webmention_app
from data.indieweb.models import TWebmention
Expand All @@ -32,7 +32,7 @@ def review_webmention(request, pk: int, approval: bool):
"webmentions": webmentions,
"unread_count": len(webmentions),
}
return TurboFrame("webmentions").template("indieweb/fragments/webmentions.html", context).response(request)
return TemplateResponse(request, "indieweb/fragments/webmentions.html", context)


@login_required
Expand Down
5 changes: 2 additions & 3 deletions apps/interfaces/dashboard/trips/views.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
from django.contrib.auth.decorators import login_required
from django.db import transaction
from django.shortcuts import render, resolve_url
from django.shortcuts import redirect, render, resolve_url
from django.utils.decorators import method_decorator
from django.views.generic import CreateView, DeleteView, ListView, UpdateView
from django.views.generic.base import ContextMixin
from django.views.generic.edit import ProcessFormView, SingleObjectTemplateResponseMixin
from turbo_response import redirect_303

from data.trips.models import TTrip
from interfaces.dashboard.trips.forms import TLocationModelForm, TTripModelForm
Expand Down Expand Up @@ -44,7 +43,7 @@ def form_valid(self, form, named_forms=None):
for named_form in named_forms.values():
named_form.prepare_data(instance)
named_form.save()
return redirect_303(resolve_url(self.redirect_url, pk=instance.pk))
return redirect(resolve_url(self.redirect_url, pk=instance.pk))

def form_invalid(self, form, named_forms=None):
context = self.get_context_data(form=form, named_forms=named_forms)
Expand Down
26 changes: 11 additions & 15 deletions apps/interfaces/dashboard/wordpress/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@
from django.contrib.auth.decorators import login_required
from django.db import transaction
from django.http import Http404, HttpResponse, JsonResponse
from django.shortcuts import get_object_or_404, render
from django.shortcuts import get_object_or_404, redirect, render
from django.template.defaultfilters import linebreaks_filter, safe
from django.urls import reverse
from django.utils.decorators import method_decorator
from django.views.generic import CreateView, ListView
from turbo_response import TurboFrame, redirect_303

from application.indieweb.location import location_to_pointfield_input
from data.entry.models import TCheckin, TLocation
Expand Down Expand Up @@ -60,7 +59,7 @@ def get(self, request, *args, **kwargs):
try:
return super().get(request, *args, **kwargs)
except Http404:
return redirect_303("wordpress:t_wordpress_create")
return redirect("wordpress:t_wordpress_create")


@method_decorator(login_required, name="dispatch")
Expand All @@ -80,7 +79,7 @@ def category_mappings(request, pk):
if request.method == "POST" and formset.is_valid():
formset.save()
messages.success(request, "Updated Category Mapping")
return redirect_303("wordpress:t_wordpress_list")
return redirect("wordpress:t_wordpress_list")
context = {
"t_wordpress": t_wordpress,
"formset": formset,
Expand All @@ -96,7 +95,7 @@ def post_kind_mappings(request, pk):
if request.method == "POST" and formset.is_valid():
formset.save()
messages.success(request, "Updated Post Kind Mapping")
return redirect_303("wordpress:t_wordpress_list")
return redirect("wordpress:t_wordpress_list")
context = {
"t_wordpress": t_wordpress,
"formset": formset,
Expand Down Expand Up @@ -131,16 +130,13 @@ def import_attachment(request, uuid):
t_attachment.save()
response = HttpResponse(status=201)
response["Location"] = request.build_absolute_uri(t_file.get_absolute_url())
return (
TurboFrame(uuid)
.template(
"wordpress/_attachment.html",
context={
"t_wordpress_attachment": t_attachment,
"img_src": t_attachment.t_file.get_absolute_url(),
},
)
.response(request)
return render(
request,
"wordpress/_attachment.html",
context={
"t_wordpress_attachment": t_attachment,
"img_src": t_attachment.t_file.get_absolute_url(),
},
)


Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{% if render_location == "ADMIN.NAV.LEFT" %}
<li class="{% if nav == 'exercise' %}selected{% endif %} w-28 p-1 mb-2" data-select-target="menuItem"><a href="{% url "plugin_exercise_admin:exercise" %}"><span class="mr-1">🏃‍</span>Exercise</a></li>
<li class="{% if nav == 'exercise' %}selected{% endif %} w-28 p-1 mb-2"><a href="{% url "plugin_exercise_admin:exercise" %}"><span class="mr-1">🏃‍</span>Exercise</a></li>
{% elif render_location == "ADMIN.NAV.LEFT.MOBILE" %}
<li class="{% if nav == "health" %}border-l-4 border-secondary{% endif %} p-1 mb-2">
<a href="{% url "plugin_exercise_admin:exercise" %}" class="w-full inline-block">
Expand Down
4 changes: 2 additions & 2 deletions apps/tanzawa_plugin/health/templates/health/add.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
{% block left_nav %}{% endblock %}

{% block content %}
<turbo-frame id="messages">
<div id="messages">
{% if messages %}
{% include "fragments/messages.html" %}
{% endif %}
</turbo-frame>
</div>
{% include "health/fragments/form.html" %}
{% endblock %}
Loading
Loading