from django.template.loader import render_to_string
from django.utils.safestring import mark_safe
from django.utils.translation import gettext as _
from wagtail.admin.panels import EditHandler


class FormSubmissionsPanel(EditHandler):
    template = "wagtailforms/edit_handlers/form_responses_panel.html"

    def bind_to(self, model=None, instance=None, request=None, form=None):
        new = super().bind_to(model=model)
        if self.heading is None:
            new.heading = _("{} submissions").format(model.get_verbose_name())
        return new

    def render(self):
        Submission = self.model.get_submission_class()
        submissions = Submission.objects.filter(page=self.instance)
        submission_count = submissions.count()

        if not submission_count:
            return ""

        return mark_safe(
            render_to_string(
                self.template,
                {
                    "self": self,
                    "submission_count": submission_count,
                    "last_submit_time": (
                        submissions.order_by("submit_time").last().submit_time
                    ),
                },
            )
        )
