Skip to content
Snippets Groups Projects
Commit 579a77c0 authored by Dorian Lesbre's avatar Dorian Lesbre
Browse files

Added core site settings

parent dc74dd79
No related branches found
No related tags found
No related merge requests found
from django.conf import settings
from django.contrib.sitemaps import Sitemap from django.contrib.sitemaps import Sitemap
from django.shortcuts import redirect, render from django.shortcuts import redirect, render
from django.urls import reverse from django.urls import reverse
...@@ -9,19 +10,29 @@ def static_view(request, template): ...@@ -9,19 +10,29 @@ def static_view(request, template):
activities = InterludesActivity.objects.filter(display=True).order_by("title") activities = InterludesActivity.objects.filter(display=True).order_by("title")
return render(request, template, {'activities': activities}) return render(request, template, {'activities': activities})
def sign_up(request):
"""Page d'inscription"""
if not settings.REGISTRATION_EVENT_INSCRIPTIONS_OPEN:
return static_view(request, "inscription.html")
class StaticViewSitemap(Sitemap): class StaticViewSitemap(Sitemap):
"""Vue générant la sitemap.xml du site""" """Vue générant la sitemap.xml du site"""
changefreq = 'monthly' changefreq = 'monthly'
def items(self): def items(self):
"""list of pages to appear in sitemap"""
return ["home", "inscription", "activites", "FAQ"] return ["home", "inscription", "activites", "FAQ"]
def location(self, item): def location(self, item):
"""real url of an item"""
return reverse(item) return reverse(item)
def priority(self, obj): def priority(self, obj):
"""priority to appear in sitemap"""
# Priorize home page over the rest in search results # Priorize home page over the rest in search results
if obj == "home" or obj == "": if obj == "home" or obj == "":
return 0.8 return 0.8
else: else:
return None # defaults to 0.5 when unset return None # defaults to 0.5 when unset
\ No newline at end of file
...@@ -66,6 +66,7 @@ TEMPLATES = [ ...@@ -66,6 +66,7 @@ TEMPLATES = [
'django.template.context_processors.request', 'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth', 'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages', 'django.contrib.messages.context_processors.messages',
'site_settings.context_processors.settings'
], ],
}, },
}, },
......
from django.contrib import admin from django.contrib import admin
# Register your models here. from site_settings.models import SiteSettings
class SingletonModelAdmin(admin.ModelAdmin):
"""Prevent deletion or adding rows"""
actions = None
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
@admin.register(SiteSettings)
class SiteSettingsAdmin(SingletonModelAdmin):
list_display = ("contact_email", "date_start", "date_end", "registrations_open", "inscriptions_open",)
list_editable = ("registrations_open", "inscriptions_open",)
...@@ -3,3 +3,4 @@ from django.apps import AppConfig ...@@ -3,3 +3,4 @@ from django.apps import AppConfig
class SiteSettingsConfig(AppConfig): class SiteSettingsConfig(AppConfig):
name = 'site_settings' name = 'site_settings'
verbose_name = "Paramètres du site"
from site_settings.models import SiteSettings
def settings(request):
return {'settings': SiteSettings.load()}
from django.db import models from django.db import models
from django.core.cache import cache
# Create your models here. class SingletonModel(models.Model):
"""Table de la BDD qui ne possède qu'un seul élément"""
class Meta:
abstract = True
def save(self, *args, **kwargs):
"""save the unique element"""
self.pk = 1 # set private key to one
super(SingletonModel, self).save(*args, **kwargs)
self.set_cache()
def delete(self, *args, **kwargs):
"""can't delete the unique element"""
pass
@classmethod
def load(cls):
"""load and return the unique element"""
if cache.get(cls.__name__) is None:
obj, created = cls.objects.get_or_create(pk=1)
if not created:
obj.set_cache()
return cache.get(cls.__name__)
def set_cache(self):
"""save in cache to limit db requests"""
cache.set(self.__class__.__name__, self)
class SiteSettings(SingletonModel):
"""Réglages globaux du site"""
contact_email = models.EmailField("Email contact")
date_start = models.DateField("Date de début", null=True)
date_end = models.DateField("Date de fin", null=True)
registrations_open = models.BooleanField("Ouvrir la création de compte", default=False)
inscriptions_open = models.BooleanField("Ouvrir les inscriptions", default=False)
class Meta:
verbose_name = "paramètres"
def __str__(self) -> str:
return "Réglages"
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