Skip to content
Snippets Groups Projects
Commit 79be0ec0 authored by Tom Teichler's avatar Tom Teichler :beers:
Browse files

Add basic frontend

parent a9358095
No related branches found
No related tags found
No related merge requests found
Showing with 267 additions and 17 deletions
...@@ -10,7 +10,28 @@ MENUS = { ...@@ -10,7 +10,28 @@ MENUS = {
"menu_generator.validators.is_authenticated", "menu_generator.validators.is_authenticated",
"aleksis.core.util.core_helpers.has_person", "aleksis.core.util.core_helpers.has_person",
], ],
"submenu": [], "submenu": [
{
"name": _("Display groups"),
"url": "display_groups",
"validators": [
(
"aleksis.core.util.predicates.permission_validator",
"buelleten.view_display_groups_rule",
),
],
},
{
"name": _("Displays"),
"url": "displays",
"validators": [
(
"aleksis.core.util.predicates.permission_validator",
"buelleten.view_displays_rule",
),
],
},
],
} }
] ]
} }
from django.utils.translation import gettext_lazy as _
import django_tables2 as tables
from django_tables2.utils import A
class DisplayGroupTable(tables.Table):
class Meta:
attrs = {"class": "highlight"}
name = tables.LinkColumn("edit_display_group", args=[A("id")])
slug = tables.Column()
edit = tables.LinkColumn(
"edit_display_group",
args=[A("id")],
text=_("Edit"),
attrs={"a": {"class": "btn-flat waves-effect waves-orange orange-text"}},
verbose_name=_("Actions"),
)
class DisplayTable(tables.Table):
class Meta:
attrs = {"class": "highlight"}
name = tables.LinkColumn("edit_display", args=[A("id")])
slug = tables.Column()
edit = tables.LinkColumn(
"edit_display",
args=[A("id")],
text=_("Edit"),
attrs={"a": {"class": "btn-flat waves-effect waves-orange orange-text"}},
verbose_name=_("Actions"),
)
{# -*- engine:django -*- #}
{% extends "core/base.html" %}
{% load material_form i18n %}
{% block browser_title %}{% blocktrans %}Create display{% endblocktrans %}{% endblock %}
{% block page_title %}{% blocktrans %}Create display{% endblocktrans %}{% endblock %}
{% block content %}
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{% form form=form %}{% endform %}
{% include "core/partials/save_button.html" %}
</form>
{% endblock %}
{# -*- engine:django -*- #}
{% extends "core/base.html" %}
{% load material_form i18n %}
{% block browser_title %}{% blocktrans %}Edit display{% endblocktrans %}{% endblock %}
{% block page_title %}{% blocktrans %}Edit display{% endblocktrans %}{% endblock %}
{% block content %}
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{% form form=form %}{% endform %}
{% include "core/partials/save_button.html" %}
</form>
{% endblock %}
{# -*- engine:django -*- #}
{% extends "core/base.html" %}
{% load i18n rules %}
{% load render_table from django_tables2 %}
{% block browser_title %}{% blocktrans %}Displays{% endblocktrans %}{% endblock %}
{% block page_title %}{% blocktrans %}Displays{% endblocktrans %}{% endblock %}
{% block content %}
{% has_perm 'core.create_display_rule' user displaygroup as can_create_display %}
{% if can_create_display %}
<a class="btn green waves-effect waves-light" href="{% url 'create_display' %}">
<i class="material-icons iconify left" data-icon="mdi:add"></i>
{% trans "Create display" %}
</a>
{% endif %}
<h2>{% trans "Displays" %}</h2>
{% render_table table %}
{% endblock %}
{# -*- engine:django -*- #}
{% extends "core/base.html" %}
{% load material_form i18n %}
{% block browser_title %}{% blocktrans %}Create display group{% endblocktrans %}{% endblock %}
{% block page_title %}{% blocktrans %}Create display group{% endblocktrans %}{% endblock %}
{% block content %}
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{% form form=form %}{% endform %}
{% include "core/partials/save_button.html" %}
</form>
{% endblock %}
{# -*- engine:django -*- #}
{% extends "core/base.html" %}
{% load material_form i18n %}
{% block browser_title %}{% blocktrans %}Edit display group{% endblocktrans %}{% endblock %}
{% block page_title %}{% blocktrans %}Edit display group{% endblocktrans %}{% endblock %}
{% block content %}
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{% form form=form %}{% endform %}
{% include "core/partials/save_button.html" %}
</form>
{% endblock %}
{# -*- engine:django -*- #}
{% extends "core/base.html" %}
{% load i18n rules %}
{% load render_table from django_tables2 %}
{% block browser_title %}{% blocktrans %}Display groups{% endblocktrans %}{% endblock %}
{% block page_title %}{% blocktrans %}Display groups{% endblocktrans %}{% endblock %}
{% block content %}
{% has_perm 'core.create_display_group_rule' user displaygroup as can_create_display_group %}
{% if can_create_display_group %}
<a class="btn green waves-effect waves-light" href="{% url 'create_display_group' %}">
<i class="material-icons iconify left" data-icon="mdi:add"></i>
{% trans "Create display group" %}
</a>
{% endif %}
<h2>{% trans "Display groups" %}</h2>
{% render_table table %}
{% endblock %}
{% extends 'core/base.html' %}
{% load i18n %}
{% block content %}
<p class="flow-text">
{% blocktrans %}Bülleten (Digital Signage){% endblocktrans %}
</p>
{% endblock %}
...@@ -3,5 +3,16 @@ from django.urls import path ...@@ -3,5 +3,16 @@ from django.urls import path
from . import views from . import views
urlpatterns = [ urlpatterns = [
path("empty", views.empty, name="empty"), path("display_groups/", views.DisplayGroupListView.as_view(), name="display_groups"),
path(
"display_groups/create/",
views.DisplayGroupCreateView.as_view(),
name="create_display_group",
),
path(
"display_groups/<int:pk>/", views.DisplayGroupEditView.as_view(), name="edit_display_group"
),
path("displays/", views.DisplayListView.as_view(), name="displays"),
path("displays/create/", views.DisplayCreateView.as_view(), name="create_display"),
path("displays/<int:pk>/", views.DisplayEditView.as_view(), name="edit_display"),
] ]
from django.contrib.auth.decorators import login_required from .models.base import Display, DisplayGroup, Slide
from django.http import HttpRequest, HttpResponse from .models.slides import ForeignURLSlide, UploadedFileSlide, StaticContentSlide
from django.shortcuts import render
@login_required class DisplayListView(PermissionRequ0iredMixin, SingleTableView):
def empty(request: HttpRequest) -> HttpResponse: """Table of all displays."""
context = {}
return render(request, "buelleten/empty.html", context) model = Displays
table_class = DisplaysTable
permission_required = "buelleten.view_displays_rule"
template_name = "buelleten/display/list.html"
@method_decorator(never_cache, name="dispatch")
class DisplayCreateView(PermissionRequiredMixin, AdvancedCreateView):
"""Create view for displays."""
model = Display
form_class = EditDisplayForm
permission_required = "buelleten.create_display_rule"
template_name = "buelleten/display/create.html"
success_url = reverse_lazy("displays")
success_message = _("The display has been created.")
@method_decorator(never_cache, name="dispatch")
class DisplayEditView(PermissionRequiredMixin, AdvancedEditView):
"""Edit view for displays."""
model = Display
form_class = EditDisplayForm
permission_required = "buelleten.change_display_rule"
template_name = "buelleten/display/edit.html"
success_url = reverse_lazy("displays")
success_message = _("The display has been saved.")
class DisplayDeleteView(PermissionRequiredMixin, AdvancedDeleteView):
"""Delete view for displays."""
model = Display
permission_required = "buelleten.delete_display_rule"
template_name = "core/pages/delete.html"
success_url = reverse_lazy("displays")
success_message = _("The display has been deleted.")
class DisplayGroupListView(PermissionRequ0iredMixin, SingleTableView):
"""Table of all display groups."""
model = DisplayGroups
table_class = DisplayGroupsTable
permission_required = "buelleten.view_display_groups_rule"
template_name = "buelleten/display_group/list.html"
@method_decorator(never_cache, name="dispatch")
class DisplayGroupCreateView(PermissionRequiredMixin, AdvancedCreateView):
"""Create view for display groups."""
model = DisplayGroup
form_class = EditDisplayGroupForm
permission_required = "buelleten.create_display group_rule"
template_name = "buelleten/display_group/create.html"
success_url = reverse_lazy("display_groups")
success_message = _("The display group has been created.")
@method_decorator(never_cache, name="dispatch")
class DisplayGroupEditView(PermissionRequiredMixin, AdvancedEditView):
"""Edit view for display groups."""
model = DisplayGroup
form_class = EditDisplayGroupForm
permission_required = "buelleten.change_display group_rule"
template_name = "buelleten/display_group/edit.html"
success_url = reverse_lazy("display_groups")
success_message = _("The display group has been saved.")
class DisplayGroupDeleteView(PermissionRequiredMixin, AdvancedDeleteView):
"""Delete view for display groups."""
model = DisplayGroup
permission_required = "buelleten.delete_display group_rule"
template_name = "core/pages/delete.html"
success_url = reverse_lazy("display_groups")
success_message = _("The display group has been deleted.")
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