style(lint): rend black heureux
Parent
c5ee2fc2b6
révision
f95799fa0f
|
@ -54,7 +54,7 @@ def event_install(organisation):
|
|||
organisation=organisation,
|
||||
place_name="LAG",
|
||||
date_start=datetime.date(2019, 1, 1),
|
||||
time_start=datetime.time(18, 0)
|
||||
time_start=datetime.time(18, 0),
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -26,7 +26,8 @@ from ess62_plateforme.utils.images import resize_image_to_file
|
|||
|
||||
""" Taille de la vignette d'un évènement """
|
||||
EVENT_IMAGE_THUMB_SIZE = getattr(
|
||||
settings, 'EVENT_IMAGE_THUMB_SIZE', (300, 300))
|
||||
settings, 'EVENT_IMAGE_THUMB_SIZE', (300, 300)
|
||||
)
|
||||
|
||||
|
||||
def upload_image_to(instance, filename):
|
||||
|
@ -42,7 +43,6 @@ def upload_thumb_to(instance, filename):
|
|||
|
||||
|
||||
class EventQuerySet(models.QuerySet):
|
||||
|
||||
def live(self):
|
||||
"""Filtre avec les évènements publiés."""
|
||||
return self.filter(live=True)
|
||||
|
@ -67,14 +67,14 @@ class Event(models.Model):
|
|||
Activite,
|
||||
related_name='+',
|
||||
verbose_name="activités",
|
||||
help_text=(
|
||||
"Une liste d'une ou plusieurs activités."
|
||||
),
|
||||
help_text="Une liste d'une ou plusieurs activités.",
|
||||
)
|
||||
image = models.ImageField(
|
||||
'Image', upload_to=upload_image_to, null=True, blank=True)
|
||||
'Image', upload_to=upload_image_to, null=True, blank=True
|
||||
)
|
||||
image_thumb = models.ImageField(
|
||||
upload_to=upload_thumb_to, editable=False, null=True, blank=True)
|
||||
upload_to=upload_thumb_to, editable=False, null=True, blank=True
|
||||
)
|
||||
|
||||
# Détails
|
||||
description = models.TextField("Description", blank=True)
|
||||
|
@ -101,9 +101,7 @@ class Event(models.Model):
|
|||
live = models.BooleanField(
|
||||
"publié",
|
||||
default=True,
|
||||
help_text=(
|
||||
"Si l'évènement doit apparaître sur le site."
|
||||
),
|
||||
help_text="Si l'évènement doit apparaître sur le site.",
|
||||
)
|
||||
slug = models.SlugField(
|
||||
"slug",
|
||||
|
@ -132,10 +130,7 @@ class Event(models.Model):
|
|||
# Panneaux pour l'administration
|
||||
content_panels = [
|
||||
MultiFieldPanel(
|
||||
[
|
||||
FieldPanel('organisation'),
|
||||
],
|
||||
heading="Organisation associée",
|
||||
[FieldPanel('organisation')], heading="Organisation associée"
|
||||
),
|
||||
MultiFieldPanel(
|
||||
[
|
||||
|
@ -148,14 +143,12 @@ class Event(models.Model):
|
|||
),
|
||||
MultiFieldPanel(
|
||||
[
|
||||
FieldRowPanel([
|
||||
FieldPanel('date_start'),
|
||||
FieldPanel('date_end'),
|
||||
]),
|
||||
FieldRowPanel([
|
||||
FieldPanel('time_start'),
|
||||
FieldPanel('time_end'),
|
||||
]),
|
||||
FieldRowPanel(
|
||||
[FieldPanel('date_start'), FieldPanel('date_end')]
|
||||
),
|
||||
FieldRowPanel(
|
||||
[FieldPanel('time_start'), FieldPanel('time_end')]
|
||||
),
|
||||
],
|
||||
heading="Date et heure",
|
||||
),
|
||||
|
@ -163,10 +156,9 @@ class Event(models.Model):
|
|||
[
|
||||
FieldPanel('place_name'),
|
||||
FieldPanel('place_street'),
|
||||
FieldRowPanel([
|
||||
FieldPanel('place_zip_code'),
|
||||
FieldPanel('place_city'),
|
||||
]),
|
||||
FieldRowPanel(
|
||||
[FieldPanel('place_zip_code'), FieldPanel('place_city')]
|
||||
),
|
||||
],
|
||||
heading="Adresse",
|
||||
),
|
||||
|
@ -174,22 +166,29 @@ class Event(models.Model):
|
|||
promote_panels = [
|
||||
MultiFieldPanel(
|
||||
[
|
||||
FieldPanel('slug', widget=forms.TextInput(attrs={
|
||||
# En laissant l'id par défaut (id_slug), le slug va être
|
||||
# automatiquement généré avec le titre en JavaScript par
|
||||
# Wagtail, ce qu'on ne veut pas ici.
|
||||
'id': 'event_slug',
|
||||
})),
|
||||
FieldPanel(
|
||||
'slug',
|
||||
widget=forms.TextInput(
|
||||
attrs={
|
||||
# En laissant l'id par défaut (id_slug), le slug
|
||||
# va être automatiquement généré avec le titre
|
||||
# en JavaScript par Wagtail, ce qu'on ne veut pas.
|
||||
'id': 'event_slug'
|
||||
}
|
||||
),
|
||||
),
|
||||
FieldPanel('live'),
|
||||
],
|
||||
heading="Configuration générale",
|
||||
),
|
||||
)
|
||||
]
|
||||
|
||||
edit_handler = TabbedInterface([
|
||||
ObjectList(content_panels, heading="Contenu"),
|
||||
ObjectList(promote_panels, heading="Promotion"),
|
||||
])
|
||||
edit_handler = TabbedInterface(
|
||||
[
|
||||
ObjectList(content_panels, heading="Contenu"),
|
||||
ObjectList(promote_panels, heading="Promotion"),
|
||||
]
|
||||
)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'évènement'
|
||||
|
@ -214,6 +213,7 @@ class Event(models.Model):
|
|||
return date_start
|
||||
date_end = date_format(self.date_end, 'd b. Y')
|
||||
return "{} - {}".format(date_start, date_end)
|
||||
|
||||
str_date.short_description = "Date"
|
||||
str_date.admin_order_field = 'date_start'
|
||||
|
||||
|
@ -227,6 +227,7 @@ class Event(models.Model):
|
|||
return time_start
|
||||
time_end = time_format(self.time_end, 'H:i')
|
||||
return "{} - {}".format(time_start, time_end)
|
||||
|
||||
str_time.short_description = "Heure"
|
||||
str_time.admin_order_field = 'time_start'
|
||||
|
||||
|
@ -253,18 +254,16 @@ class Event(models.Model):
|
|||
|
||||
# Vérifie la date et l'heure de fin
|
||||
if self.date_end and self.date_end < self.date_start:
|
||||
errors['date_end'] = (
|
||||
"La date de fin doit être supérieure à celle de début."
|
||||
)
|
||||
errors[
|
||||
'date_end'
|
||||
] = "La date de fin doit être supérieure à celle de début."
|
||||
if self.time_end and self.time_end < self.time_start:
|
||||
errors['time_end'] = (
|
||||
"L'heure de fin doit être supérieure à celle de début."
|
||||
)
|
||||
errors[
|
||||
'time_end'
|
||||
] = "L'heure de fin doit être supérieure à celle de début."
|
||||
|
||||
if not self.slug:
|
||||
errors['slug'] = (
|
||||
"Le slug n'a pas pu être généré automatiquement."
|
||||
)
|
||||
errors['slug'] = "Le slug n'a pas pu être généré automatiquement."
|
||||
|
||||
if errors:
|
||||
raise ValidationError(errors)
|
||||
|
@ -278,10 +277,9 @@ class Event(models.Model):
|
|||
if not self.date_start or not self.title:
|
||||
return ''
|
||||
|
||||
base_slug = slugify('{}-{}'.format(
|
||||
self.date_start.strftime('%Y%m%d'),
|
||||
self.title,
|
||||
))
|
||||
base_slug = slugify(
|
||||
'{}-{}'.format(self.date_start.strftime('%Y%m%d'), self.title)
|
||||
)
|
||||
|
||||
suffix = 1
|
||||
candidate_slug = base_slug
|
||||
|
@ -311,4 +309,5 @@ class Event(models.Model):
|
|||
if not self.image:
|
||||
return
|
||||
self.image_thumb = resize_image_to_file(
|
||||
self.image, EVENT_IMAGE_THUMB_SIZE)
|
||||
self.image, EVENT_IMAGE_THUMB_SIZE
|
||||
)
|
||||
|
|
|
@ -14,13 +14,12 @@ from ess62_plateforme.events.models import (
|
|||
from ess62_plateforme.organisations.models import Activite, Organisation
|
||||
|
||||
FLOWER_PATH = os.path.join(
|
||||
os.path.dirname(__file__),
|
||||
'../../utils/tests/images/flower.jpg')
|
||||
os.path.dirname(__file__), '../../utils/tests/images/flower.jpg'
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
class TestEventsModel:
|
||||
|
||||
@pytest.fixture
|
||||
def activite(self):
|
||||
return Activite.objects.create(nom='Informatique libre')
|
||||
|
@ -130,7 +129,7 @@ class TestEventsModel:
|
|||
event_install.image = SimpleUploadedFile(
|
||||
name='test_image.jpg',
|
||||
content=open(FLOWER_PATH, 'rb').read(),
|
||||
content_type='image/jpeg'
|
||||
content_type='image/jpeg',
|
||||
)
|
||||
event_install.generate_thumbnail()
|
||||
assert event_install.image_thumb
|
||||
|
|
|
@ -11,7 +11,9 @@ from .models import Event
|
|||
class EventListView(ListView):
|
||||
model = Event
|
||||
context_object_name = 'events'
|
||||
queryset = Event.objects.filter(live=True).upcoming().order_by('date_start')
|
||||
queryset = (
|
||||
Event.objects.filter(live=True).upcoming().order_by('date_start')
|
||||
)
|
||||
|
||||
|
||||
class EventDetailView(DetailView):
|
||||
|
@ -42,5 +44,7 @@ class EventUpdateView(UserPassesObjectTestMixin, UpdateView):
|
|||
template_name = 'events/event_form.html'
|
||||
|
||||
def test_func(self):
|
||||
return self.request.user.is_authenticated \
|
||||
return (
|
||||
self.request.user.is_authenticated
|
||||
and self.request.user == self.object.get_associated_user()
|
||||
)
|
||||
|
|
|
@ -11,11 +11,15 @@ class EventModelAdmin(ModelAdmin):
|
|||
menu_icon = 'date'
|
||||
# Liste des objets
|
||||
list_display = (
|
||||
'title_formatted', 'activites_list', 'str_date', 'str_time', 'live',
|
||||
'title_formatted',
|
||||
'activites_list',
|
||||
'str_date',
|
||||
'str_time',
|
||||
'live',
|
||||
'organisation',
|
||||
)
|
||||
list_filter = ('date_start', 'date_end')
|
||||
search_fields = ('title', )
|
||||
search_fields = ('title',)
|
||||
list_per_page = 20
|
||||
|
||||
def get_extra_class_names_for_field_col(self, obj, field_name):
|
||||
|
@ -27,18 +31,18 @@ class EventModelAdmin(ModelAdmin):
|
|||
# ------------------------
|
||||
|
||||
def title_formatted(self, obj):
|
||||
return format_html(
|
||||
'<h2>{}</h2>',
|
||||
obj.title,
|
||||
)
|
||||
return format_html('<h2>{}</h2>', obj.title)
|
||||
|
||||
title_formatted.short_description = "Titre"
|
||||
title_formatted.admin_order_field = 'title'
|
||||
|
||||
def activites_list(self, obj):
|
||||
return format_html_join(
|
||||
' ', '<span class="status-activite primary">{}</span>',
|
||||
([t.nom, ] for t in obj.activites.all()),
|
||||
' ',
|
||||
'<span class="status-activite primary">{}</span>',
|
||||
([t.nom] for t in obj.activites.all()),
|
||||
)
|
||||
|
||||
activites_list.short_description = "Activités"
|
||||
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@ class Subscriber(models.Model):
|
|||
"""
|
||||
Un abonné à la newsletter.
|
||||
"""
|
||||
|
||||
email = models.EmailField(unique=True)
|
||||
activated = models.BooleanField(default=False)
|
||||
activation_key = models.CharField(max_length=64)
|
||||
|
|
|
@ -107,9 +107,7 @@ class TestSubscriptionConfirmView:
|
|||
assert not response.context['subscriber']
|
||||
assert not response.context['activated']
|
||||
|
||||
activation_key = self.subscriber.create_new_activation_key(
|
||||
save=False
|
||||
)
|
||||
activation_key = self.subscriber.create_new_activation_key(save=False)
|
||||
|
||||
response = client.get(
|
||||
reverse(
|
||||
|
|
|
@ -34,8 +34,7 @@ class SubscribeView(FormView):
|
|||
)
|
||||
else:
|
||||
self.send_activation_email(
|
||||
subscriber.create_new_activation_key(),
|
||||
subscriber.email,
|
||||
subscriber.create_new_activation_key(), subscriber.email
|
||||
)
|
||||
messages.success(
|
||||
self.request,
|
||||
|
@ -69,7 +68,7 @@ class SubscribeView(FormView):
|
|||
'newsletter/subscription_confirm_email.txt', context
|
||||
),
|
||||
settings.DEFAULT_FROM_EMAIL,
|
||||
[to_email]
|
||||
[to_email],
|
||||
)
|
||||
|
||||
def get_success_url(self):
|
||||
|
|
|
@ -31,10 +31,7 @@ class OrganisationFilterForm(CustomTapeformMixin, forms.Form):
|
|||
required=False,
|
||||
label="Prestations pour",
|
||||
)
|
||||
label_ess = forms.BooleanField(
|
||||
required=False,
|
||||
label="Label ESS 62"
|
||||
)
|
||||
label_ess = forms.BooleanField(required=False, label="Label ESS 62")
|
||||
|
||||
field_container_css_class = 'form-group mb-md-0'
|
||||
field_template_overrides = {
|
||||
|
|
|
@ -164,9 +164,7 @@ class Organisation(BaseAdresse):
|
|||
"nom",
|
||||
max_length=150,
|
||||
unique=True,
|
||||
error_messages={
|
||||
'unique': "Une organisation existe déjà avec ce nom."
|
||||
},
|
||||
error_messages={'unique': "Une organisation existe déjà avec ce nom."},
|
||||
)
|
||||
logo = models.ImageField(
|
||||
"logo", upload_to=upload_org_logo_to, blank=True, null=True
|
||||
|
|
|
@ -70,25 +70,19 @@ class TestOrganisationCreateView:
|
|||
@pytest.mark.django_db
|
||||
class TestDashboardView:
|
||||
def test_anonymous_user_redirect(self, client):
|
||||
response = client.get(
|
||||
reverse('organisations:dashboard')
|
||||
)
|
||||
response = client.get(reverse('organisations:dashboard'))
|
||||
assert response.status_code == 302
|
||||
assert 'login' in response.url
|
||||
|
||||
def test_not_linked_user_refused(self, client, organisation, user):
|
||||
""" Un utilisateur qui n'est associé à aucune organisation """
|
||||
client.login(username='robbie', password='sho7sho7')
|
||||
response = client.get(
|
||||
reverse('organisations:dashboard')
|
||||
)
|
||||
response = client.get(reverse('organisations:dashboard'))
|
||||
assert response.status_code == 403
|
||||
|
||||
def test_linked_user_authorized(self, client, organisation, user):
|
||||
organisation.user = user
|
||||
organisation.save()
|
||||
client.login(username='robbie', password='sho7sho7')
|
||||
response = client.get(
|
||||
reverse('organisations:dashboard')
|
||||
)
|
||||
response = client.get(reverse('organisations:dashboard'))
|
||||
assert response.status_code == 200
|
||||
|
|
|
@ -149,7 +149,8 @@ class DashboardView(UserPassesTestMixin, TemplateView):
|
|||
organisation = self.get_organisation()
|
||||
context['organisation'] = organisation
|
||||
context['events'] = Event.objects.filter(
|
||||
organisation=organisation).all()
|
||||
organisation=organisation
|
||||
).all()
|
||||
return context
|
||||
|
||||
def get_organisation(self):
|
||||
|
@ -161,5 +162,7 @@ class DashboardView(UserPassesTestMixin, TemplateView):
|
|||
def test_func(self):
|
||||
if not self.get_organisation():
|
||||
return False
|
||||
return self.request.user.is_authenticated \
|
||||
return (
|
||||
self.request.user.is_authenticated
|
||||
and self.get_organisation().user == self.request.user
|
||||
)
|
||||
|
|
|
@ -18,5 +18,8 @@ if env.bool('READ_CONFIG_FILE', default=True):
|
|||
|
||||
"""The Django settings module's name to use."""
|
||||
DJANGO_SETTINGS_MODULE = env(
|
||||
'DJANGO_SETTINGS_MODULE', default='ess62_plateforme.settings.{}'.format(env(
|
||||
'ENV', default=DEFAULT_ENVIRONMENT)))
|
||||
'DJANGO_SETTINGS_MODULE',
|
||||
default='ess62_plateforme.settings.{}'.format(
|
||||
env('ENV', default=DEFAULT_ENVIRONMENT)
|
||||
),
|
||||
)
|
||||
|
|
|
@ -55,9 +55,10 @@ USE_TZ = True
|
|||
# https://docs.djangoproject.com/en/stable/ref/settings/#databases
|
||||
# https://django-environ.readthedocs.io/en/stable/#supported-types
|
||||
DATABASES = {
|
||||
'default': env.db('DJANGO_DATABASE_URL', default='sqlite:///{}'.format(
|
||||
base_dir('sqlite.db')
|
||||
)),
|
||||
'default': env.db(
|
||||
'DJANGO_DATABASE_URL',
|
||||
default='sqlite:///{}'.format(base_dir('sqlite.db')),
|
||||
)
|
||||
}
|
||||
|
||||
# URLS
|
||||
|
@ -91,7 +92,6 @@ WAGTAIL_APPS = [
|
|||
'wagtail.search',
|
||||
'wagtail.admin',
|
||||
'wagtail.core',
|
||||
|
||||
'modelcluster',
|
||||
'taggit',
|
||||
]
|
||||
|
@ -137,20 +137,27 @@ PASSWORD_HASHERS = [
|
|||
# https://docs.djangoproject.com/en/stable/topics/auth/passwords/#password-validation
|
||||
AUTH_PASSWORD_VALIDATORS = [
|
||||
{
|
||||
'NAME': ('django.contrib.auth.password_validation.'
|
||||
'UserAttributeSimilarityValidator'),
|
||||
'NAME': (
|
||||
'django.contrib.auth.password_validation.'
|
||||
'UserAttributeSimilarityValidator'
|
||||
)
|
||||
},
|
||||
{
|
||||
'NAME': ('django.contrib.auth.password_validation.'
|
||||
'MinimumLengthValidator'),
|
||||
'NAME': (
|
||||
'django.contrib.auth.password_validation.MinimumLengthValidator'
|
||||
)
|
||||
},
|
||||
{
|
||||
'NAME': ('django.contrib.auth.password_validation.'
|
||||
'CommonPasswordValidator'),
|
||||
'NAME': (
|
||||
'django.contrib.auth.password_validation.'
|
||||
'CommonPasswordValidator'
|
||||
)
|
||||
},
|
||||
{
|
||||
'NAME': ('django.contrib.auth.password_validation.'
|
||||
'NumericPasswordValidator'),
|
||||
'NAME': (
|
||||
'django.contrib.auth.password_validation.'
|
||||
'NumericPasswordValidator'
|
||||
)
|
||||
},
|
||||
]
|
||||
|
||||
|
@ -179,9 +186,7 @@ STATIC_ROOT = var_dir('static')
|
|||
STATIC_URL = os.path.join(APP_LOCATION, 'static/')
|
||||
|
||||
# https://docs.djangoproject.com/en/stable/ref/settings/#staticfiles-dirs
|
||||
STATICFILES_DIRS = [
|
||||
root_dir('static'),
|
||||
]
|
||||
STATICFILES_DIRS = [root_dir('static')]
|
||||
if os.path.isdir(local_dir('static')):
|
||||
STATICFILES_DIRS.insert(0, local_dir('static'))
|
||||
|
||||
|
@ -210,9 +215,7 @@ FILE_UPLOAD_PERMISSIONS = 0o644
|
|||
TEMPLATES = [
|
||||
{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
'DIRS': [
|
||||
root_dir('templates'),
|
||||
],
|
||||
'DIRS': [root_dir('templates')],
|
||||
'OPTIONS': {
|
||||
'debug': DEBUG,
|
||||
'loaders': [
|
||||
|
@ -230,7 +233,7 @@ TEMPLATES = [
|
|||
'ess62_plateforme.base.context_processors.site_name',
|
||||
],
|
||||
},
|
||||
},
|
||||
}
|
||||
]
|
||||
if os.path.isdir(local_dir('templates')):
|
||||
TEMPLATES[0]['DIRS'].insert(0, local_dir('templates'))
|
||||
|
@ -238,16 +241,13 @@ if os.path.isdir(local_dir('templates')):
|
|||
# FIXTURES
|
||||
# ------------------------------------------------------------------------------
|
||||
# https://docs.djangoproject.com/en/stable/ref/settings/#fixture-dirs
|
||||
FIXTURE_DIRS = (
|
||||
root_dir('fixtures'),
|
||||
)
|
||||
FIXTURE_DIRS = (root_dir('fixtures'),)
|
||||
|
||||
# EMAIL
|
||||
# ------------------------------------------------------------------------------
|
||||
# https://docs.djangoproject.com/en/stable/topics/email/#email-backends
|
||||
# https://django-environ.readthedocs.io/en/stable/#supported-types
|
||||
vars().update(env.email_url(
|
||||
'DJANGO_EMAIL_URL', default='smtp://localhost:25'))
|
||||
vars().update(env.email_url('DJANGO_EMAIL_URL', default='smtp://localhost:25'))
|
||||
|
||||
DEFAULT_FROM_EMAIL = env('DEFAULT_FROM_EMAIL', default='webmaster@localhost')
|
||||
# Use the same email address for error messages
|
||||
|
@ -256,9 +256,7 @@ SERVER_EMAIL = DEFAULT_FROM_EMAIL
|
|||
# ADMIN
|
||||
# ------------------------------------------------------------------------------
|
||||
# https://docs.djangoproject.com/en/stable/ref/settings/#admins
|
||||
ADMINS = [
|
||||
("""Cliss XXI""", 'tech@cliss21.com'),
|
||||
]
|
||||
ADMINS = [("""Cliss XXI""", 'tech@cliss21.com')]
|
||||
|
||||
# https://docs.djangoproject.com/en/stable/ref/settings/#managers
|
||||
MANAGERS = ADMINS
|
||||
|
|
|
@ -13,18 +13,15 @@ from .base import env
|
|||
SECRET_KEY = env('DJANGO_SECRET_KEY', default='CHANGEME!!!')
|
||||
|
||||
# https://docs.djangoproject.com/en/stable/ref/settings/#allowed-hosts
|
||||
ALLOWED_HOSTS = env.list('DJANGO_ALLOWED_HOSTS', default=[
|
||||
'localhost',
|
||||
'0.0.0.0',
|
||||
'127.0.0.1',
|
||||
])
|
||||
ALLOWED_HOSTS = env.list(
|
||||
'DJANGO_ALLOWED_HOSTS', default=['localhost', '0.0.0.0', '127.0.0.1']
|
||||
)
|
||||
|
||||
# EMAIL
|
||||
# ------------------------------------------------------------------------------
|
||||
# https://docs.djangoproject.com/en/stable/topics/email/#email-backends
|
||||
# https://django-environ.readthedocs.io/en/stable/#supported-types
|
||||
vars().update(env.email_url(
|
||||
'DJANGO_EMAIL_URL', default='consolemail://'))
|
||||
vars().update(env.email_url('DJANGO_EMAIL_URL', default='consolemail://'))
|
||||
|
||||
# WAGTAIL
|
||||
# ------------------------------------------------------------------------------
|
||||
|
@ -44,9 +41,7 @@ INSTALLED_APPS += ['debug_toolbar'] # noqa: F405
|
|||
INTERNAL_IPS = ['127.0.0.1']
|
||||
|
||||
DEBUG_TOOLBAR_CONFIG = {
|
||||
'DISABLE_PANELS': [
|
||||
'debug_toolbar.panels.redirects.RedirectsPanel',
|
||||
],
|
||||
'DISABLE_PANELS': ['debug_toolbar.panels.redirects.RedirectsPanel'],
|
||||
'SHOW_TEMPLATE_CONTEXT': True,
|
||||
# Uncomment if jQuery is already loaded by your assets:
|
||||
'JQUERY_URL': '',
|
||||
|
|
|
@ -45,10 +45,13 @@ ALLOWED_HOSTS = env.list('DJANGO_ALLOWED_HOSTS', default=[])
|
|||
# https://docs.djangoproject.com/en/stable/ref/settings/#templates
|
||||
TEMPLATES[0]['OPTIONS']['debug'] = DEBUG # noqa F405
|
||||
TEMPLATES[0]['OPTIONS']['loaders'] = [ # noqa F405
|
||||
('django.template.loaders.cached.Loader', [
|
||||
'django.template.loaders.filesystem.Loader',
|
||||
'django.template.loaders.app_directories.Loader',
|
||||
]),
|
||||
(
|
||||
'django.template.loaders.cached.Loader',
|
||||
[
|
||||
'django.template.loaders.filesystem.Loader',
|
||||
'django.template.loaders.app_directories.Loader',
|
||||
],
|
||||
)
|
||||
]
|
||||
|
||||
# LOGGING
|
||||
|
@ -59,13 +62,13 @@ LOGGING = {
|
|||
'disable_existing_loggers': False,
|
||||
'formatters': {
|
||||
'verbose': {
|
||||
'format': '%(asctime)s - %(levelname)s - %(module)s: %(message)s',
|
||||
},
|
||||
'format': '%(asctime)s - %(levelname)s - %(module)s: %(message)s'
|
||||
}
|
||||
},
|
||||
'handlers': {
|
||||
'mail_admins': {
|
||||
'level': 'ERROR',
|
||||
'class': 'django.utils.log.AdminEmailHandler'
|
||||
'class': 'django.utils.log.AdminEmailHandler',
|
||||
},
|
||||
'file': {
|
||||
'level': 'DEBUG',
|
||||
|
|
Chargement…
Référencer dans un nouveau ticket