from django.http import HttpResponseBadRequest
from django.views.generic.base import ContextMixin, TemplateResponseMixin, View


class MarkdownPreviewView(TemplateResponseMixin, ContextMixin, View):
    def post(self, request, *args, **kwargs):
        try:
            self.preview_data = data = request.POST["preview"]
        except KeyError:
            return HttpResponseBadRequest("No preview data specified.")

        return self.render_to_response(
            self.get_context_data(
                preview_data=data,
            )
        )


class ProblemMarkdownPreviewView(MarkdownPreviewView):
    template_name = "problem/preview.html"


class BlogMarkdownPreviewView(MarkdownPreviewView):
    template_name = "blog/preview.html"


class ContestMarkdownPreviewView(MarkdownPreviewView):
    template_name = "contest/preview.html"


class CommentMarkdownPreviewView(MarkdownPreviewView):
    template_name = "comments/preview.html"


class ProfileMarkdownPreviewView(MarkdownPreviewView):
    template_name = "user/preview.html"


class OrganizationMarkdownPreviewView(MarkdownPreviewView):
    template_name = "organization/preview.html"


class SolutionMarkdownPreviewView(MarkdownPreviewView):
    template_name = "solution-preview.html"


class LicenseMarkdownPreviewView(MarkdownPreviewView):
    template_name = "license-preview.html"


class TicketMarkdownPreviewView(MarkdownPreviewView):
    template_name = "ticket/preview.html"