optimisation des images.
This commit is contained in:
parent
8c3a13f0ba
commit
938c8e3c0f
|
|
@ -29,6 +29,9 @@ class EventAdmin(admin.ModelAdmin):
|
||||||
'reservations',
|
'reservations',
|
||||||
'datetime',
|
'datetime',
|
||||||
)
|
)
|
||||||
|
readonly_fields = (
|
||||||
|
'reservations',
|
||||||
|
)
|
||||||
|
|
||||||
staff_admin_site.register(Event, EventAdmin)
|
staff_admin_site.register(Event, EventAdmin)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,12 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
# from django.contrib.auth.models import AbstractUser
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# class TibilletUser(AbstractUser):
|
||||||
|
# pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ class OptionGenerale(models.Model):
|
||||||
verbose_name = _('Options Generales')
|
verbose_name = _('Options Generales')
|
||||||
verbose_name_plural = _('Options Generales')
|
verbose_name_plural = _('Options Generales')
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=OptionGenerale)
|
@receiver(post_save, sender=OptionGenerale)
|
||||||
def poids_option_generaler(sender, instance: OptionGenerale, created, **kwargs):
|
def poids_option_generaler(sender, instance: OptionGenerale, created, **kwargs):
|
||||||
if created:
|
if created:
|
||||||
|
|
@ -31,7 +32,6 @@ def poids_option_generaler(sender, instance: OptionGenerale, created, **kwargs):
|
||||||
instance.save()
|
instance.save()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Configuration(SingletonModel):
|
class Configuration(SingletonModel):
|
||||||
organisation = models.CharField(max_length=50)
|
organisation = models.CharField(max_length=50)
|
||||||
short_description = models.CharField(max_length=250)
|
short_description = models.CharField(max_length=250)
|
||||||
|
|
@ -46,17 +46,22 @@ class Configuration(SingletonModel):
|
||||||
|
|
||||||
img = StdImageField(upload_to='images/',
|
img = StdImageField(upload_to='images/',
|
||||||
null=True, blank=True,
|
null=True, blank=True,
|
||||||
validators=[MaxSizeValidator(1920, 1920)],
|
# validators=[MaxSizeValidator(1920, 1920)],
|
||||||
variations={
|
variations={
|
||||||
'thumbnail': (1200, 1200),
|
'fhd': (1920, 1920),
|
||||||
}, delete_orphans=True)
|
'hdr': (720, 720),
|
||||||
|
'med': (480, 480),
|
||||||
|
'thumbnail': (150, 90),
|
||||||
|
},
|
||||||
|
delete_orphans=True
|
||||||
|
)
|
||||||
|
|
||||||
mollie_api_key = models.CharField(max_length=50,
|
mollie_api_key = models.CharField(max_length=50,
|
||||||
blank=True, null=True)
|
blank=True, null=True)
|
||||||
|
|
||||||
reservation_par_user_max = models.PositiveSmallIntegerField(default=6)
|
reservation_par_user_max = models.PositiveSmallIntegerField(default=6)
|
||||||
|
|
||||||
jauge_max = models.PositiveSmallIntegerField()
|
jauge_max = models.PositiveSmallIntegerField(default=50)
|
||||||
|
|
||||||
option_generale_radio = models.ManyToManyField(OptionGenerale,
|
option_generale_radio = models.ManyToManyField(OptionGenerale,
|
||||||
blank=True,
|
blank=True,
|
||||||
|
|
@ -67,8 +72,6 @@ class Configuration(SingletonModel):
|
||||||
related_name="checkbox")
|
related_name="checkbox")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Event(models.Model):
|
class Event(models.Model):
|
||||||
name = models.CharField(max_length=200)
|
name = models.CharField(max_length=200)
|
||||||
short_description = models.CharField(max_length=250)
|
short_description = models.CharField(max_length=250)
|
||||||
|
|
@ -79,8 +82,12 @@ class Event(models.Model):
|
||||||
null=True, blank=True,
|
null=True, blank=True,
|
||||||
validators=[MaxSizeValidator(1920, 1920)],
|
validators=[MaxSizeValidator(1920, 1920)],
|
||||||
variations={
|
variations={
|
||||||
'thumbnail': (500, 500),
|
'fhd': (1920, 1920),
|
||||||
}, delete_orphans=True)
|
'hdr': (1280, 1280),
|
||||||
|
'crop': (510, 310, True),
|
||||||
|
},
|
||||||
|
delete_orphans=True
|
||||||
|
)
|
||||||
|
|
||||||
reservations = models.PositiveSmallIntegerField(default=0)
|
reservations = models.PositiveSmallIntegerField(default=0)
|
||||||
|
|
||||||
|
|
@ -97,7 +104,6 @@ class Event(models.Model):
|
||||||
verbose_name_plural = _('Evenements')
|
verbose_name_plural = _('Evenements')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class reservation(models.Model):
|
class reservation(models.Model):
|
||||||
event = models.ForeignKey(Event,
|
event = models.ForeignKey(Event,
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
|
|
|
||||||
|
|
@ -39,12 +39,12 @@
|
||||||
<!-- Post -->
|
<!-- Post -->
|
||||||
<section class="post">
|
<section class="post">
|
||||||
<header class="major">
|
<header class="major">
|
||||||
<span class="date">{{ event.datetime.date }}<br/>{{ event.datetime.time }}</span>
|
<span class="date">{{ event.datetime | date:"d F Y"}}<br/>{{ event.datetime | time }}</span>
|
||||||
<h1>{{ event.name }}</h1>
|
<h1>{{ event.name }}</h1>
|
||||||
<p>{{ event.short_description }}</p>
|
<p>{{ event.short_description }}</p>
|
||||||
</header>
|
</header>
|
||||||
<div class="image main"><img src="/media/{{ event.img }}" alt=""/></div>
|
<div class="image main"><img src="/media/{{ event.img.fhd }}" alt=""/></div>
|
||||||
<p>{{ event.long_description }}</p>
|
<p>{{ event.long_description | linebreaks}}</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,11 +50,11 @@
|
||||||
|
|
||||||
<article class="post featured">
|
<article class="post featured">
|
||||||
<header class="major">
|
<header class="major">
|
||||||
<span class="date">{{ first_event.datetime.date }}<br/>{{ first_event.datetime.time }}</span>
|
<span class="date">{{ first_event.datetime | date:"d F Y"}}<br/>{{ first_event.datetime | time }}</span>
|
||||||
<h2><a href="/event/{{ first_event.pk }}">{{ first_event.name }}</a></h2>
|
<h2><a href="/event/{{ first_event.pk }}">{{ first_event.name }}</a></h2>
|
||||||
<p>{{ first_event.short_description }}</p>
|
<p>{{ first_event.short_description }}</p>
|
||||||
</header>
|
</header>
|
||||||
<a href="#" class="image main"><img src="/media/{{ first_event.img }}" alt=""/></a>
|
<a href="/event/{{ first_event.pk }}" class="image main"><img src="/media/{{ first_event.img.hdr }}" alt=""/></a>
|
||||||
<ul class="actions special">
|
<ul class="actions special">
|
||||||
<li><a href="/event/{{ first_event.pk }}" class="button large">RESERVEZ</a></li>
|
<li><a href="/event/{{ first_event.pk }}" class="button large">RESERVEZ</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
@ -79,10 +79,10 @@
|
||||||
{% for event in events %}
|
{% for event in events %}
|
||||||
<article>
|
<article>
|
||||||
<header>
|
<header>
|
||||||
<span class="date">{{ event.datetime.date }}</span>
|
<span class="date">{{ event.datetime | date:"d F Y"}}</span>
|
||||||
<h2><a href="/event/{{ event.pk }}">{{ event.name }}</a></h2>
|
<h2><a href="/event/{{ event.pk }}">{{ event.name }}</a></h2>
|
||||||
</header>
|
</header>
|
||||||
<a href="#" class="image fit"><img src="/media/{{ event.img }}" alt=""/></a>
|
<a href="/event/{{ event.pk }}" class="image fit"><img src="/media/{{ event.img.crop }}" alt=""/></a>
|
||||||
<p>{{ event.short_description }}</p>
|
<p>{{ event.short_description }}</p>
|
||||||
<ul class="actions special">
|
<ul class="actions special">
|
||||||
<li><a href="/event/{{ event.pk }}" class="button">RESERVEZ</a></li>
|
<li><a href="/event/{{ event.pk }}" class="button">RESERVEZ</a></li>
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,8 @@ SHARED_APPS = (
|
||||||
|
|
||||||
# everything below here is optional
|
# everything below here is optional
|
||||||
'django.contrib.auth',
|
'django.contrib.auth',
|
||||||
|
'AuthBillet',
|
||||||
|
|
||||||
'rest_framework',
|
'rest_framework',
|
||||||
'rest_framework.authtoken',
|
'rest_framework.authtoken',
|
||||||
'djoser',
|
'djoser',
|
||||||
|
|
@ -64,10 +66,11 @@ SHARED_APPS = (
|
||||||
TENANT_APPS = (
|
TENANT_APPS = (
|
||||||
# The following Django contrib apps must be in TENANT_APPS
|
# The following Django contrib apps must be in TENANT_APPS
|
||||||
'django.contrib.contenttypes',
|
'django.contrib.contenttypes',
|
||||||
|
# your tenant-specific apps
|
||||||
|
|
||||||
'BaseBillet',
|
'BaseBillet',
|
||||||
'ApiBillet',
|
'ApiBillet',
|
||||||
|
|
||||||
# your tenant-specific apps
|
|
||||||
)
|
)
|
||||||
|
|
||||||
INSTALLED_APPS = list(SHARED_APPS) + [app for app in TENANT_APPS if app not in SHARED_APPS]
|
INSTALLED_APPS = list(SHARED_APPS) + [app for app in TENANT_APPS if app not in SHARED_APPS]
|
||||||
|
|
@ -128,6 +131,7 @@ DATABASE_ROUTERS = (
|
||||||
# Password validation
|
# Password validation
|
||||||
# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators
|
# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators
|
||||||
|
|
||||||
|
# AUTH_USER_MODEL = 'AuthBillet.TibilletUser'
|
||||||
AUTH_PASSWORD_VALIDATORS = [
|
AUTH_PASSWORD_VALIDATORS = [
|
||||||
{
|
{
|
||||||
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
|
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue