Skip to content
Snippets Groups Projects
Verified Commit 8c6ceb37 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Add preview mode for card layouts

parent 35df1b8e
No related branches found
No related tags found
No related merge requests found
......@@ -52,6 +52,15 @@ export default {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
},
{
path: "cards/:pk/preview/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
name: "kort.previewCard",
props: {
byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true,
},
},
{
path: "cards/:pk/print/",
component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"),
......
# Generated by Django 4.2.5 on 2023-09-05 14:43
import aleksis.core.managers
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("sites", "0002_alter_domain_unique"),
("kort", "0016_cardprinter_oauth2_client_secret"),
]
operations = [
migrations.AlterModelManagers(
name="card",
managers=[
("objects", aleksis.core.managers.AlekSISBaseManager()),
],
),
migrations.AlterModelManagers(
name="cardlayout",
managers=[
("objects", aleksis.core.managers.AlekSISBaseManager()),
],
),
migrations.AlterModelManagers(
name="cardlayoutmediafile",
managers=[
("objects", aleksis.core.managers.AlekSISBaseManager()),
],
),
migrations.AlterModelManagers(
name="cardprinter",
managers=[
("objects", aleksis.core.managers.AlekSISBaseManager()),
],
),
migrations.AlterModelManagers(
name="cardprintjob",
managers=[
("objects", aleksis.core.managers.AlekSISBaseManager()),
],
),
migrations.AddField(
model_name="card",
name="managed_by_app_label",
field=models.CharField(
blank=True,
editable=False,
max_length=255,
verbose_name="App label of app responsible for managing this instance",
),
),
migrations.AddField(
model_name="cardlayout",
name="managed_by_app_label",
field=models.CharField(
blank=True,
editable=False,
max_length=255,
verbose_name="App label of app responsible for managing this instance",
),
),
migrations.AddField(
model_name="cardlayoutmediafile",
name="managed_by_app_label",
field=models.CharField(
blank=True,
editable=False,
max_length=255,
verbose_name="App label of app responsible for managing this instance",
),
),
migrations.AddField(
model_name="cardprinter",
name="managed_by_app_label",
field=models.CharField(
blank=True,
editable=False,
max_length=255,
verbose_name="App label of app responsible for managing this instance",
),
),
migrations.AddField(
model_name="cardprintjob",
name="managed_by_app_label",
field=models.CharField(
blank=True,
editable=False,
max_length=255,
verbose_name="App label of app responsible for managing this instance",
),
),
migrations.AlterField(
model_name="card",
name="site",
field=models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
related_name="+",
to="sites.site",
),
),
migrations.AlterField(
model_name="cardlayout",
name="site",
field=models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
related_name="+",
to="sites.site",
),
),
migrations.AlterField(
model_name="cardlayoutmediafile",
name="site",
field=models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
related_name="+",
to="sites.site",
),
),
migrations.AlterField(
model_name="cardprinter",
name="cups_printer",
field=models.CharField(
blank=True,
help_text="Leave blank to deactivate CUPS printing",
max_length=255,
verbose_name="CUPS printer",
),
),
migrations.AlterField(
model_name="cardprinter",
name="site",
field=models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
related_name="+",
to="sites.site",
),
),
migrations.AlterField(
model_name="cardprintjob",
name="site",
field=models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
related_name="+",
to="sites.site",
),
),
]
......@@ -3,13 +3,7 @@ from django.template.loader import render_to_string
from django.utils.safestring import SafeString, mark_safe
from django.utils.translation import gettext as _
from django_tables2 import (
BooleanColumn,
Column,
DateTimeColumn,
LinkColumn,
Table,
)
from django_tables2 import BooleanColumn, Column, DateTimeColumn, LinkColumn, Table
from django_tables2.utils import A, AttributeDict, computed_values
from aleksis.apps.kort.forms import PrinterSelectForm
......
......@@ -63,5 +63,9 @@
</div>
{% endif %}
{% endif %}
<a href="{% url 'preview_card' card.pk %}" class="btn waves-effect waves-light">
<i class="material-icons left iconify" data-icon="mdi:file-pdf-box"></i>
{% trans "Preview card layout" %}
</a>
</div>
</div>
\ No newline at end of file
......@@ -12,6 +12,7 @@ urlpatterns = [
name="generate_card_pdf",
),
path("cards/<int:pk>/deactivate/", views.CardDeactivateView.as_view(), name="deactivate_card"),
path("cards/<int:pk>/preview/", views.CardPreviewView.as_view(), name="preview_card"),
path("cards/<int:pk>/print/", views.CardPrintView.as_view(), name="print_card"),
path("cards/<int:pk>/delete/", views.CardDeleteView.as_view(), name="delete_card"),
path("printers/", views.CardPrinterListView.as_view(), name="card_printers"),
......
......@@ -209,6 +209,16 @@ class CardDetailView(PermissionRequiredMixin, RevisionMixin, PrinterSelectMixin,
template_name = "kort/card/detail.html"
class CardPreviewView(PermissionRequiredMixin, DetailView):
permission_required = "kort.view_card_rule"
model = Card
def get(self, *args, **kwargs):
self.object = self.get_object()
html = self.object.layout.render(self.object)
return HttpResponse(html)
class CardGeneratePDFView(PermissionRequiredMixin, RevisionMixin, SingleObjectMixin, View):
permission_required = "views.edit_card_rule"
model = Card
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment