Weasy Renderer
This commit is contained in:
		
							parent
							
								
									d5dcfd5fa2
								
							
						
					
					
						commit
						ccdd2c2982
					
				
					 6 changed files with 38 additions and 5 deletions
				
			
		|  | @ -13,7 +13,10 @@ RUN apk update \ | ||||||
|   # Translations dependencies |   # Translations dependencies | ||||||
|   && apk add gettext \ |   && apk add gettext \ | ||||||
|   # https://docs.djangoproject.com/en/dev/ref/django-admin/#dbshell |   # https://docs.djangoproject.com/en/dev/ref/django-admin/#dbshell | ||||||
|   && apk add postgresql-client |   && apk add postgresql-client \ | ||||||
|  |   # https://weasyprint.readthedocs.io/en/latest/install.html | ||||||
|  |   && apk add gcc musl-dev jpeg-dev zlib-dev libffi-dev cairo-dev pango-dev gdk-pixbuf-dev \ | ||||||
|  |   && apk add ttf-ubuntu-font-family | ||||||
| 
 | 
 | ||||||
| # Requirements are installed here to ensure they will be cached. | # Requirements are installed here to ensure they will be cached. | ||||||
| COPY ./requirements /requirements | COPY ./requirements /requirements | ||||||
|  |  | ||||||
|  | @ -10,7 +10,10 @@ RUN apk update \ | ||||||
|   # Pillow dependencies |   # Pillow dependencies | ||||||
|   && apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev \ |   && apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev \ | ||||||
|   # CFFI dependencies |   # CFFI dependencies | ||||||
|   && apk add libffi-dev py-cffi |   && apk add libffi-dev py-cffi \ | ||||||
|  |   # https://weasyprint.readthedocs.io/en/latest/install.html | ||||||
|  |   && apk add gcc musl-dev jpeg-dev zlib-dev libffi-dev cairo-dev pango-dev gdk-pixbuf-dev \ | ||||||
|  |   && apk add ttf-ubuntu-font-family | ||||||
| 
 | 
 | ||||||
| RUN addgroup -S django \ | RUN addgroup -S django \ | ||||||
|     && adduser -S -G django django |     && adduser -S -G django django | ||||||
|  |  | ||||||
|  | @ -20,3 +20,5 @@ djangorestframework==3.10.2  # https://github.com/encode/django-rest-framework | ||||||
| coreapi==2.3.3  # https://github.com/core-api/python-client | coreapi==2.3.3  # https://github.com/core-api/python-client | ||||||
| 
 | 
 | ||||||
| django-markdownx==2.0.28 | django-markdownx==2.0.28 | ||||||
|  | WeasyPrint==48 | ||||||
|  | django-weasyprint==0.5.4 | ||||||
|  |  | ||||||
|  | @ -1,8 +1,9 @@ | ||||||
| from django.urls import path | from django.urls import path | ||||||
| 
 | 
 | ||||||
| from schickmacher.renderer.views import form_view | from schickmacher.renderer.views import form_view, RenderView | ||||||
| 
 | 
 | ||||||
| app_name = 'renderer' | app_name = 'renderer' | ||||||
| urlpatterns = [ | urlpatterns = [ | ||||||
|     path("", view=form_view, name="form") |     path("", view=form_view, name="form"), | ||||||
|  |     path("render", view=RenderView.as_view(), name="render") | ||||||
| ] | ] | ||||||
|  |  | ||||||
|  | @ -1,5 +1,7 @@ | ||||||
| from django.core.handlers.wsgi import WSGIRequest | from django.core.handlers.wsgi import WSGIRequest | ||||||
| from django.shortcuts import render | from django.shortcuts import render | ||||||
|  | from django.views.generic import FormView | ||||||
|  | from django_weasyprint import WeasyTemplateView | ||||||
| from markdownx.utils import markdownify | from markdownx.utils import markdownify | ||||||
| 
 | 
 | ||||||
| from schickmacher.renderer.forms import RendererForm | from schickmacher.renderer.forms import RendererForm | ||||||
|  | @ -18,3 +20,25 @@ def form_view(request: WSGIRequest): | ||||||
|         form = RendererForm() |         form = RendererForm() | ||||||
|     ctx = {"form": form} |     ctx = {"form": form} | ||||||
|     return render(request, 'renderer/render_form.html', ctx) |     return render(request, 'renderer/render_form.html', ctx) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class RenderView(WeasyTemplateView): | ||||||
|  |     template_name = 'renderer/rendered.html' | ||||||
|  | 
 | ||||||
|  |     def get_context_data(self, **kwargs): | ||||||
|  |         form = RendererForm(self.request.POST) | ||||||
|  |         if form.is_valid(): | ||||||
|  |             return { | ||||||
|  |                 'date': form.cleaned_data['date'], | ||||||
|  |                 'content': markdownify(form.cleaned_data['render_content']), | ||||||
|  |                 'title': form.cleaned_data['title'] | ||||||
|  |             } | ||||||
|  |         else: | ||||||
|  |             return { | ||||||
|  |                 'date': 'Error', | ||||||
|  |                 'content': 'Error', | ||||||
|  |                 'title': 'Error' | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |     def post(self, request, *args, **kwargs): | ||||||
|  |         return self.get(request, *args, **kwargs) | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ | ||||||
| 
 | 
 | ||||||
| {% block content %} | {% block content %} | ||||||
|   <h1>{% trans "Renderer" %}</h1> |   <h1>{% trans "Renderer" %}</h1> | ||||||
|   <form class="form-horizontal" method="post" action="{% url 'renderer:form' %}"> |   <form class="form-horizontal" method="post" action="{% url 'renderer:render' %}"> | ||||||
|       {% csrf_token %} |       {% csrf_token %} | ||||||
|       {{ form|crispy }} |       {{ form|crispy }} | ||||||
|     <div class="control-group"> |     <div class="control-group"> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue