Pages statiques
This commit is contained in:
parent
c8e0abb073
commit
0f25a87bf6
6 changed files with 136 additions and 5 deletions
|
@ -65,6 +65,33 @@
|
|||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<h2>Pages statiques</h2>
|
||||
<a class="btn btn-success btn-sm" role="button" href="{% url 'settings:staticpage-new' %}">
|
||||
<i class="fas fa-plus"></i>
|
||||
Créer une nouvelle page statique
|
||||
</a>
|
||||
<br/>
|
||||
<br/>
|
||||
<table class="table table-striped">
|
||||
<tr>
|
||||
<th>Nom</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
{% for p in static_pages %}
|
||||
<tr>
|
||||
<td><a href="{% url 'settings:staticpage' p.pk %}">{{p.name}}</a></td>
|
||||
<td><a class="btn btn-outline-primary btn-sm" href="{% url 'settings:staticpage-edit' p.pk %}">
|
||||
<i class="fas fa-edit"></i>
|
||||
Éditer
|
||||
</a>
|
||||
<a class="btn btn-outline-danger btn-sm" title="Supprimer" href="{% url 'settings:staticpage-delete' p.pk %}">
|
||||
<i class="fas fa-trash-alt"></i>
|
||||
Supprimer
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
<h2>Écoles</h2>
|
||||
<a class="btn btn-success btn-sm" role="button" href="{% url 'users:new-school' %}">
|
||||
|
|
5
settings/templates/settings/static_page.html
Normal file
5
settings/templates/settings/static_page.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
<h1>{{object.name}}</h1>
|
||||
{{object.text|safe}}
|
||||
{% endblock %}
|
|
@ -1,5 +1,5 @@
|
|||
from django import template
|
||||
from settings.models import SiteSettings
|
||||
from settings.models import SiteSettings, StaticPage
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
@ -9,7 +9,18 @@ def load_site_settings(parser, token):
|
|||
return LoadSiteSettingsNode()
|
||||
|
||||
|
||||
@register.tag('load_static_pages')
|
||||
def load_static_pages(parser, token):
|
||||
return LoadStaticPagesNode()
|
||||
|
||||
|
||||
class LoadSiteSettingsNode(template.Node):
|
||||
def render(self, context):
|
||||
context['site_settings'] = SiteSettings.get_settings()
|
||||
return ''
|
||||
|
||||
|
||||
class LoadStaticPagesNode(template.Node):
|
||||
def render(self, context):
|
||||
context['static_pages'] = StaticPage.objects.all()
|
||||
return ''
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
from django.urls import path
|
||||
from .views import SettingsView, EditSiteSettingsView, degrade_user, promote_user
|
||||
from .views import SettingsView, EditSiteSettingsView, degrade_user, promote_user, CreateStaticPageView, StaticPageView, DeleteStaticPageView, EditStaticPageView
|
||||
|
||||
app_name = 'settings'
|
||||
urlpatterns = [
|
||||
|
@ -22,6 +22,25 @@ urlpatterns = [
|
|||
'promote_user',
|
||||
promote_user,
|
||||
name='promote-user',
|
||||
),
|
||||
path(
|
||||
'static_page/new',
|
||||
CreateStaticPageView.as_view(),
|
||||
name='staticpage-new'
|
||||
),
|
||||
path(
|
||||
'static_page/<int:pk>',
|
||||
StaticPageView.as_view(),
|
||||
name='staticpage'
|
||||
),
|
||||
path(
|
||||
'static_page/<int:pk>/delete',
|
||||
DeleteStaticPageView.as_view(),
|
||||
name='staticpage-delete'
|
||||
),
|
||||
path(
|
||||
'static_page/<int:pk>/edit',
|
||||
EditStaticPageView.as_view(),
|
||||
name='staticpage-edit'
|
||||
)
|
||||
|
||||
]
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from django.views.generic import TemplateView, UpdateView
|
||||
from django.views.generic import TemplateView, UpdateView, CreateView, DetailView, DeleteView
|
||||
from django.urls import reverse_lazy, reverse
|
||||
from django.contrib.auth.mixins import PermissionRequiredMixin, LoginRequiredMixin
|
||||
from django.contrib.admin.views.decorators import staff_member_required
|
||||
|
@ -8,7 +8,7 @@ from django.contrib import messages
|
|||
|
||||
from content.models import Category
|
||||
from users.models import School
|
||||
from .models import SiteSettings
|
||||
from .models import SiteSettings, StaticPage
|
||||
from .forms import SelectUserForm
|
||||
|
||||
|
||||
|
@ -23,8 +23,10 @@ class SettingsView(LoginRequiredMixin, PermissionRequiredMixin, TemplateView):
|
|||
context['schools'] = School.objects.all()
|
||||
context['settings'] = True
|
||||
context['administrators'] = User.objects.filter(is_staff=True)
|
||||
context['static_pages'] = StaticPage.objects.all()
|
||||
return context
|
||||
|
||||
|
||||
class EditSiteSettingsView(LoginRequiredMixin, PermissionRequiredMixin, UpdateView):
|
||||
template_name = "edit.html"
|
||||
model = SiteSettings
|
||||
|
@ -42,6 +44,66 @@ class EditSiteSettingsView(LoginRequiredMixin, PermissionRequiredMixin, UpdateVi
|
|||
return context
|
||||
|
||||
|
||||
class CreateStaticPageView(LoginRequiredMixin, CreateView):
|
||||
template_name = "edit.html"
|
||||
model = StaticPage
|
||||
fields = '__all__'
|
||||
success_url = reverse_lazy('settings:index')
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context["title"] = "Création de page statique"
|
||||
context["validate"] = "Créer"
|
||||
return context
|
||||
|
||||
@classmethod
|
||||
def as_view(self, *args, **kwargs):
|
||||
view = super().as_view(*args, **kwargs)
|
||||
return staff_member_required(view)
|
||||
|
||||
|
||||
class StaticPageView(DetailView):
|
||||
template_name = "settings/static_page.html"
|
||||
model = StaticPage
|
||||
fields = '__all__'
|
||||
@classmethod
|
||||
def as_view(self, *args, **kwargs):
|
||||
view = super().as_view(*args, **kwargs)
|
||||
return staff_member_required(view)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['page'] = self.object
|
||||
return context
|
||||
|
||||
|
||||
class DeleteStaticPageView(DeleteView):
|
||||
template_name = "confirm_delete.html"
|
||||
model = StaticPage
|
||||
success_url = reverse_lazy('settings:index')
|
||||
@classmethod
|
||||
def as_view(self, *args, **kwargs):
|
||||
view = super().as_view(*args, **kwargs)
|
||||
return staff_member_required(view)
|
||||
|
||||
|
||||
class EditStaticPageView(UpdateView):
|
||||
template_name = "edit.html"
|
||||
model = StaticPage
|
||||
success_url = reverse_lazy('settings:index')
|
||||
fields = '__all__'
|
||||
@classmethod
|
||||
def as_view(self, *args, **kwargs):
|
||||
view = super().as_view(*args, **kwargs)
|
||||
return staff_member_required(view)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context["title"] = "Édition de page statique"
|
||||
context["validate"] = "Éditer"
|
||||
return context
|
||||
|
||||
|
||||
@staff_member_required
|
||||
def degrade_user(request, pk):
|
||||
user = get_object_or_404(User, pk=pk)
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
{% load load_settings %}
|
||||
{% load_categories %}
|
||||
{% load_site_settings %}
|
||||
{% load_static_pages %}
|
||||
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
||||
<a class="navbar-brand" href="{% url "home"%}">
|
||||
{% if site_settings.site_logo %}
|
||||
|
@ -20,6 +21,12 @@
|
|||
<a class="nav-link" href="{% url 'content:category' c.pk %}">{{c.name}}
|
||||
</a></li>
|
||||
{% endfor %}
|
||||
{% for p in static_pages %}
|
||||
<li class="nav-item
|
||||
{% if page.pk == p.pk %}active{%endif%}">
|
||||
<a class="nav-link" href="{% url 'settings:staticpage' p.pk %}">{{p.name}}
|
||||
</a></li>
|
||||
{% endfor %}
|
||||
|
||||
</ul>
|
||||
<ul class="navbar-nav ml-auto">
|
||||
|
|
Loading…
Reference in a new issue