diff --git a/DjangoFiles/Administration/admin_tenant.py b/DjangoFiles/Administration/admin_tenant.py index 4f09e22..8633116 100644 --- a/DjangoFiles/Administration/admin_tenant.py +++ b/DjangoFiles/Administration/admin_tenant.py @@ -105,20 +105,31 @@ class ConfigurationAdmin(SingletonModelAdmin): 'fields': ( 'organisation', 'short_description', + 'long_description', + 'img', 'adress', 'phone', 'email', 'site_web', + 'map_img', + ) + }), + ('Réstaurant', { + 'fields': ( + 'carte_restaurant', + ), + }), + ('Social', { + 'fields': ( 'twitter', 'facebook', 'instagram', - 'img', - 'carte_restaurant', - ) + ), }), ('Adhésions', { 'fields': ( 'adhesion_obligatoire', + 'button_adhesion', ), }), ('Paiements', { diff --git a/DjangoFiles/ApiBillet/serializers.py b/DjangoFiles/ApiBillet/serializers.py index 2126ec1..71acadc 100644 --- a/DjangoFiles/ApiBillet/serializers.py +++ b/DjangoFiles/ApiBillet/serializers.py @@ -1,5 +1,6 @@ from django.contrib.auth import get_user_model from django.db import connection +from django.utils.text import slugify from rest_framework import serializers import json from django.utils.translation import gettext, gettext_lazy as _ @@ -67,8 +68,10 @@ class EventSerializer(serializers.ModelSerializer): fields = [ 'uuid', 'name', + 'slug', 'short_description', 'long_description', + 'event_facebook_url', 'datetime', 'products', 'img', @@ -79,6 +82,8 @@ class EventSerializer(serializers.ModelSerializer): depth = 1 def validate(self, attrs): + # import ipdb; ipdb.set_trace() + # slug = slugify(f"{self.initial_data.get('name')} {self.initial_data.get('datetime').strftime('%D %R')}") products = self.initial_data.get('products') if products: diff --git a/DjangoFiles/ApiBillet/validators.py b/DjangoFiles/ApiBillet/validators.py index 86fc347..88bf406 100644 --- a/DjangoFiles/ApiBillet/validators.py +++ b/DjangoFiles/ApiBillet/validators.py @@ -29,6 +29,7 @@ class EventSerializer(serializers.ModelSerializer): 'name', 'short_description', 'long_description', + 'event_facebook_url', 'datetime', 'billets', # 'products', diff --git a/DjangoFiles/BaseBillet/models.py b/DjangoFiles/BaseBillet/models.py index 2bc0a95..2c35af7 100644 --- a/DjangoFiles/BaseBillet/models.py +++ b/DjangoFiles/BaseBillet/models.py @@ -12,6 +12,7 @@ from django.dispatch import receiver from django.urls import reverse from django.utils import timezone from django.contrib.postgres.fields import JSONField +from django.utils.text import slugify from solo.models import SingletonModel from django.utils.translation import ugettext_lazy as _ from stdimage import StdImageField @@ -54,6 +55,7 @@ def poids_option_generale(sender, instance: OptionGenerale, created, **kwargs): class Configuration(SingletonModel): organisation = models.CharField(max_length=50, verbose_name=_("Nom de l'organisation")) short_description = models.CharField(max_length=250, verbose_name=_("Description courte")) + long_description = models.TextField(blank=True, null=True) adress = models.CharField(max_length=250) phone = models.CharField(max_length=20) @@ -66,9 +68,23 @@ class Configuration(SingletonModel): instagram = models.URLField(blank=True, null=True) adhesion_obligatoire = models.BooleanField(default=False) + button_adhesion = models.BooleanField(default=False) name_required_for_ticket = models.BooleanField(default=False, verbose_name=_("Billet nominatifs")) + map_img = StdImageField(upload_to='images/', + null=True, blank=True, + validators=[MaxSizeValidator(1920, 1920)], + variations={ + 'fhd': (1920, 1920), + 'hdr': (720, 720), + 'med': (480, 480), + 'thumbnail': (150, 90), + }, + delete_orphans=True, + verbose_name=_('Carte géorgraphique') + ) + carte_restaurant = StdImageField(upload_to='images/', null=True, blank=True, validators=[MaxSizeValidator(1920, 1920)], @@ -267,11 +283,14 @@ class Event(models.Model): uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True, db_index=True) name = models.CharField(max_length=200) + slug = models.SlugField(unique=True, db_index=True, blank=True, null=True, max_length=250) datetime = models.DateTimeField() short_description = models.CharField(max_length=250) long_description = models.TextField(blank=True, null=True) + event_facebook_url = models.URLField(blank=True, null=True) + products = models.ManyToManyField(Product, blank=True) img = StdImageField(upload_to='images/', @@ -307,10 +326,16 @@ class Event(models.Model): else: return False + def save(self, *args, **kwargs): + # self.slug = slugify(f"{self.name} {self.datetime} {str(self.uuid).partition('-')[0]}")[:50] + self.slug = slugify(f"{self.name} {self.datetime.strftime('%D %R')}") + super().save(*args, **kwargs) + def __str__(self): return f"{self.datetime.strftime('%d/%m')} {self.name}" class Meta: + unique_together = ('name','datetime') ordering = ('datetime',) verbose_name = _('Evenement') verbose_name_plural = _('Evenements') diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/css/creative.css b/DjangoFiles/BaseBillet/static/arnaud_mvc/css/creative.css new file mode 100644 index 0000000..1fb8f34 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/css/creative.css @@ -0,0 +1,759 @@ +/* ------------------------------------------------------------------------------------------ GLOBAL ------------------------------------------------------------------------------------------*/ +html { + background-color: #140f0c; + display: flex; + justify-content: center; +} + +body { + width: 100%; + display: flex; + align-items: center; + flex-direction: column; + font-family: "Open Sans Bold 700", sans-serif; + font-size: 1rem; +} + +h1 { + font-family: "Open Sans Bold 700", sans-serif; + text-align: center; + font-size: 1.4rem; +} + +h2 { + font-family: "Open Sans Bold 700", sans-serif; + font-size: 1rem; + margin: 0; +} + +h3 { + font-family: "Merriweather Light 300", serif; + margin: 0; + font-weight: 300; +} + +h4 { + font-family: "Open Sans Bold 700", sans-serif; + font-size: 0.6rem; + margin: 0; + padding: 0; +} + +/* -------------------------------------------------------------------------------------------- MENU ---------------------------------------------------------------------------------------- */ +.menu { + display: flex; + flex-direction: row; + max-width: 1200px; + width: 100%; + justify-content: space-between; + position: fixed; + z-index: 30000; + background-color: #140f0c; + top: 0; + padding-top: 10px; +} + +.logotibillet { + width: 100%; + max-width: 150px; + padding-left: 15px; +} + +.logotibillet-card { + width: 100%; + max-width: 150px; +} + +.menu ul { + display: flex; + flex-direction: row; + list-style: none; + width: 185px; + justify-content: space-between; + padding-right: 15px; + margin: 0; + align-items: center; +} + +.menutibillet { + max-height: 25px; +} + +.filter { + cursor: pointer; +} + +.m { + transition: transform 150ms ease-in-out; +} + +.m:hover { + transform: scale(1.4); +} + +/* ------------------------------------------------------------------------------ MENU ASIDE -------------------------------------------------------------------------------------------- */ + +.menu-aside ul { + list-style: none; + display: flex; + flex-direction: column; + justify-content: center; +} + +.aside { + position: fixed; + top: 0; + left: 0; + padding-top: 85px; + z-index: 2000; +} + +.btn-aside { + width: 90px; + background-color: #ffc800; + height: 90px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + text-decoration: none; + color: #140f0c; + margin-top: 1px; +} + +.btn-aside2 { + width: 90px; + height: 90px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.btn-aside2 img { + padding: 5px; + width: 65%; +} + +.btn-aside3 img { + padding: 5px; + width: 65%; +} + +.btn-aside4 img { + padding: 5px; + width: 65%; +} + +.btnside { + background-color: #ffc800; + text-align: center; + width: 90px; + height: 90px; + text-decoration: none; + color: #140f0c; + margin-top: 1px; + transition: 300ms; +} + +.btn-aside img { + padding: 5px; + width: 65%; + color: green; +} + +.dnone { + text-decoration: none; +} + +.btnside:hover { + translate: -10px; +} + +/* ------------------------------------------------------------------------------------- META BILLETERIE -------------------------------------------------------------------------------------- */ +.meta { + padding-top: 70px; + display: flex; + max-width: 1200px; + flex-wrap: wrap; + justify-content: center; + position: relative; +} + +/* LES DIFFERENTS TYPES DE CARD */ +/* CARD CLASSIQUE */ +.card-meta { + width: 24%; + height: 415px; + background-color: #24211f; + margin: 5px; + display: flex; + flex-direction: column; + overflow: hidden; + justify-content: center; + align-items: center; +} + +/* CARD DEMI ECRAN */ +.card-meta-50 { + width: 49%; + height: 415px; + background-color: #24211f; + margin: 5px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +/* CARD FULL WIDTH */ +.card-meta-100 { + width: 98.5%; + height: 415px; + background-color: #24211f; + margin: 5px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.mapageTB { + display: flex; + justify-content: center; + align-items: center; + font-size: 1.5rem; + transition: 300ms; +} + +.mapageTB h3 { + margin: 0; +} + +.mapageTB:hover { + scale: 0.95; +} + +/* CLASSE Y ET B POUR CHANGER LA COULEUR DE LA CARD */ +.Y { + background-color: #ffc800; +} + +.B { + background-color: #140f0c; +} + +.colW { + color: white; +} + +/* CONTENU DUNE CARD */ + +.img-card-meta { + height: 80%; + width: 100%; + position: relative; + display: flex; + justify-content: center; + align-items: center; + transition: all 300ms ease-in-out; + color: white; +} + +/* IMG SIZE COVER RESPONSIVE */ +.cover { + object-fit: cover; + width: 100%; + height: 100%; +} + +/* CONTENU DE LA ZONE IMG DE LA CAR */ +.content-img { + position: absolute; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + z-index: 10000; +} + +.icone { + border-radius: 20px; + background-color: #ffc801; + width: 30px; + height: 30px; + transition: 300ms; + display: flex; + justify-content: center; +} + +.icone:hover { + scale: 1.2; +} + +.card-title { + margin: 10px 0px 0px 10px; + color: white; +} + +/* EFFET DE DEGRADE SUR LA CARD */ +.effet { + display: none; + background: rgb(65, 24, 77); + background: linear-gradient( + 135deg, + rgba(65, 24, 77, 0.2805322812718838) 0%, + rgba(222, 108, 38, 0.406582701439951) 100% + ); + position: absolute; + z-index: 1000; + height: 100%; + width: 100%; + /* display: flex; */ + align-items: center; + justify-content: center; + transition: 800ms; +} + +.card:hover .effet { + height: 0%; + width: 0%; + background: linear-gradient( + 135deg, + rgba(65, 24, 77, 0.1) 0%, + rgba(222, 108, 38, 0.1) 100% + ); +} + +/* BARRE HORYZONTAL QUI SOUVRE AU SURVOL */ +.effetxt { + height: 3px; + width: 0%; + transition: all 600ms ease-in-out; +} + +.card:hover .effetxt { + background-color: #ffc800; + height: 3px; + width: 70%; +} + +/* SCALE IMG ON HOVER */ +.card:hover .img-card-meta { + scale: 0.97; +} + +/* EFFET D ASSOMBRISSEMENT DE IMG ON HOVER */ +.effetnoir { + display: none; + background-color: #00000056; + width: 100%; + height: 100%; + position: absolute; + z-index: 9000; +} + +.card:hover .effetnoir { + display: block; +} + +/* FOOTER OU INFO CARD META */ +.info-card-meta { + background-color: #24211f; + height: 20%; + display: flex; + flex-direction: column; + justify-content: center; + width: 100%; +} + +.card-footer { + display: flex; + flex-direction: row; + color: #ffc800; + margin: 10px; + justify-content: space-between; + font-family: "Merriweather", serif; + align-items: center; +} + +.card-footer-link { + display: flex; + align-items: center; +} + +.linkcard { + max-height: 30px; + padding-left: 5px; +} + +.card-footer-link a { + text-decoration: none; + color: #ffc800; +} + +.linkcard { + transition: 300ms; +} + +.linkcard:hover { + scale: 0.8; +} + +.tarif-card { + max-height: 30px; + padding-left: 5px; +} + +/* ------------------------------------------------------------------------------------------------- ARTISTE / LIEUX / FESTIVAL ----------------------------------------------------------------------------------- */ +.card-programme { + align-items: center; +} + +.title-programme { + color: white; + padding-top: 20px; + padding-bottom: 20px; +} + +.date-programme { + display: flex; + flex-direction: row; +} + +.date-programme-link { + padding-bottom: 10px; +} + +.date-programme-link h2 { + color: white; +} + +/* IMAGE DACCUEIL ARTISTE / LIEUX / FESTIVAL */ +.img-card-full { + height: 100%; + position: relative; + width: 100%; +} + +.title-fullcard { + margin-top: 0px; + margin-bottom: 5px; +} + +.info-fullcard { + color: white; + background-color: #140f0c; + height: 100%; + width: 25%; + position: absolute; + left: 50%; + z-index: 9000; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.date-fullcard { + margin-top: 10px; + color: #ffc800; +} + +.style-fullcard { + margin-bottom: 20px; + color: #ffc800; +} + +/* DESCRIPTION TEXTE */ +.description { + background-color: #ffc800; + width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + min-height: 308px; +} + +/* NOM */ +.title-artiste { + color: #140f0c; + text-align: right; + margin-left: 5%; + text-decoration: underline; +} + +/* ZONE RESEAUX SOCIAUX */ +.linksocial { + display: flex; + flex-direction: row; + padding-top: 10px; + padding-bottom: 5px; + width: 90%; + margin-left: 4%; + align-items: center; +} + +.linksocial img { + max-height: 30px; + padding-left: 5px; + padding-right: 5px; +} + +/* MENU INTERNE PAGE */ +.menu-page { + width: 100%; + height: 100px; + margin-top: 5px; + display: flex; + flex-direction: row; + justify-content: flex-end; +} + +.menu-page img { + max-width: 35%; + padding: 5px; +} + +.btn-menu-page { + background-color: #ffc800; + height: 100px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + text-decoration: none; + color: #140f0c; + margin-right: 5px; + max-width: 105px; + transition: 0.1s; +} + +.btn-menu-page:hover { + scale: 0.95; +} + +.btn-adherer { + border-radius: 5px; + background-color: #140f0c; + color: #ffc800; + width: 200px; + height: 28px; + transition: 300ms; + display: flex; + justify-content: center; + margin: 5px; + align-items: center; + text-decoration: none; + text-align: center; +} + +.btn-adherer:hover { + scale: 1.05; +} + +/*----------------------------------------------------------------------------------- NAV BAR RESPONSIVE ----------------------------------------------------------------------------- */ +.nav-responsive { + position: fixed; + bottom: 0; + height: 10%; + background-color: #ffc800; + width: 100%; + z-index: 20000; + display: none; +} + +.btn-responsive { + width: 17%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + text-decoration: none; + color: black; +} + +.btn-responsive img { + max-width: 60%; +} + +/*---------------------------------------------------------------------------------------------- EVENT ----------------------------------------------------------------------------------------- */ +.title-event { + margin-top: 30px; + color: #140f0c; + text-align: right; + padding-right: 35px; +} + +.text-event { + padding-left: 5%; + padding-right: 5%; +} + +.artiste-bloc { + height: auto; +} + +/* -------------------------------------------------------------------------------------------- FOOTER ------------------------------------------------------------------------------------------ */ +.footer { + background-color: #ffc800; + width: 100%; + height: 60px; + margin-top: 50px; + display: flex; + justify-content: center; + align-items: center; +} + +.footer a img { + max-height: 40px; + padding-left: 5px; + padding-right: 5px; +} + +/* FORM */ +.search { + display: none; + position: absolute; + width: 100%; + height: 100vh; + background-color: #000000e0; + z-index: 20000; + justify-content: center; + align-items: center; + color: white; + margin-top: 70px; +} + +.form-search { + width: 100%; +} + +.div-label-search { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.label-search { + display: flex; + + margin-bottom: 20px; + justify-content: center; + align-items: center; +} + +.div-label-search input { + width: 30%; + height: 40px; + background-color: #ffffff1c; + border: none; + color: white; + font-size: 1rem; +} + +.div-label-search h1 { + padding-left: 10px; +} + +/* -------------------------------------------------------------------------------------------- RESPONSIVE ----------------------------------------------------------------------------------- */ +@media screen and (max-width: 1200px) { + .meta { + max-width: 1200px; + } + + .menu { + max-width: 1200px; + width: 100%; + } + + .card-meta { + width: 30%; + /* max-width: 268px; */ + } + + .card-meta-50 { + width: 100%; + } +} + +@media screen and (max-width: 768px) { + .meta { + max-width: 768px; + } + + .menu { + max-width: 768px; + + padding-bottom: 10px; + } + + .card-meta { + width: 45%; + max-width: 268px; + height: unset; + } + + .card-meta-50 { + width: 90%; + height: unset; + } + + .logotibillet { + width: 60%; + } +} + +@media screen and (max-width: 576px) { + .meta { + max-width: 576px; + } + + .menu { + max-width: 576px; + + padding-bottom: 10px; + } + + .card-meta { + width: 100%; + max-width: 100%; + } + + .card-meta-50 { + width: 100%; + } + + .logotibillet { + width: 60%; + } + + .info-fullcard { + background-color: transparent; + width: 100%; + height: 100%; + left: unset; + } + + .info-card-meta { + height: auto; + } + + .nav-responsive { + display: flex; + } + + .menu-page { + display: none; + } +} + +.fab { + transition: 300ms; +} + +.fab:hover { + scale: 1.2; +} diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/aside/artistes.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/aside/artistes.svg new file mode 100644 index 0000000..0891360 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/aside/artistes.svg @@ -0,0 +1,77 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/aside/concerts.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/aside/concerts.svg new file mode 100644 index 0000000..a0a2923 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/aside/concerts.svg @@ -0,0 +1,112 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/aside/lieux.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/aside/lieux.svg new file mode 100644 index 0000000..c08f931 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/aside/lieux.svg @@ -0,0 +1,77 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/facebook.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/facebook.png new file mode 100644 index 0000000..143f0a1 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/facebook.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/insta.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/insta.png new file mode 100644 index 0000000..1c512ac Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/insta.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/messenger.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/messenger.png new file mode 100644 index 0000000..e8cefcc Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/messenger.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/twitter.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/twitter.png new file mode 100644 index 0000000..2600875 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/twitter.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/whats.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/whats.png new file mode 100644 index 0000000..8492002 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/footer/whats.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/logotibillet.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/logotibillet.png new file mode 100644 index 0000000..d3df75c Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/logotibillet.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/logotibilletnoir.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/logotibilletnoir.png new file mode 100644 index 0000000..50c7760 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/logotibilletnoir.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/all logos.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/all logos.svg new file mode 100644 index 0000000..4271338 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/all logos.svg @@ -0,0 +1,114 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/calendrier.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/calendrier.png new file mode 100644 index 0000000..bd06069 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/calendrier.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/calendrier.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/calendrier.svg new file mode 100644 index 0000000..e90bb95 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/calendrier.svg @@ -0,0 +1,77 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/calendriern.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/calendriern.svg new file mode 100644 index 0000000..db620b7 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/calendriern.svg @@ -0,0 +1,77 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/calendriernoir.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/calendriernoir.png new file mode 100644 index 0000000..fcf13c0 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/calendriernoir.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/concert.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/concert.png new file mode 100644 index 0000000..8c8083d Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/concert.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/concerts.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/concerts.svg new file mode 100644 index 0000000..a0a2923 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/concerts.svg @@ -0,0 +1,112 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/filtrer.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/filtrer.png new file mode 100644 index 0000000..5b60b5f Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/filtrer.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/filtrer.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/filtrer.svg new file mode 100644 index 0000000..7ec3586 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/filtrer.svg @@ -0,0 +1,83 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/home.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/home.png new file mode 100644 index 0000000..16427b2 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/home.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/home.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/home.svg new file mode 100644 index 0000000..513ce08 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/home.svg @@ -0,0 +1,83 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/like.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/like.png new file mode 100644 index 0000000..44869dd Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/like.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/like.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/like.svg new file mode 100644 index 0000000..d64d948 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/like.svg @@ -0,0 +1,92 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/map.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/map.png new file mode 100644 index 0000000..ff4560d Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/map.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/map.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/map.svg new file mode 100644 index 0000000..7921e9f --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/map.svg @@ -0,0 +1,89 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/micro.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/micro.png new file mode 100644 index 0000000..3bca73e Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/micro.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/photo.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/photo.png new file mode 100644 index 0000000..e78cc17 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/photo.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/photo.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/photo.svg new file mode 100644 index 0000000..4917eac --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/photo.svg @@ -0,0 +1,64 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/programme.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/programme.png new file mode 100644 index 0000000..be893c0 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/programme.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/programme.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/programme.svg new file mode 100644 index 0000000..97895ba --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/programme.svg @@ -0,0 +1,69 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/search.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/search.png new file mode 100644 index 0000000..de8242e Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/search.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/search.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/search.svg new file mode 100644 index 0000000..631d4f5 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/search.svg @@ -0,0 +1,77 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/searchnoir.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/searchnoir.png new file mode 100644 index 0000000..472bd85 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/searchnoir.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/video.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/video.png new file mode 100644 index 0000000..a1b7c84 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/video.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/video.svg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/video.svg new file mode 100644 index 0000000..3702669 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/menu/video.svg @@ -0,0 +1,94 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/bala.jpg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/bala.jpg new file mode 100644 index 0000000..dcabfb0 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/bala.jpg differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/balafonik-1.jpg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/balafonik-1.jpg new file mode 100644 index 0000000..8fc9fe6 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/balafonik-1.jpg differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/danyel.jpg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/danyel.jpg new file mode 100644 index 0000000..df3d611 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/danyel.jpg differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/effet.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/effet.png new file mode 100644 index 0000000..8448de1 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/effet.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/image.jpg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/image.jpg new file mode 100644 index 0000000..7abc327 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/image.jpg differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/likebtn.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/likebtn.png new file mode 100644 index 0000000..3cb342b Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/likebtn.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/reserver.png b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/reserver.png new file mode 100644 index 0000000..d20b057 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/reserver.png differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/zan.jpg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/zan.jpg new file mode 100644 index 0000000..80e6518 Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/zan.jpg differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/ziskakan.jpg b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/ziskakan.jpg new file mode 100644 index 0000000..b18b79f Binary files /dev/null and b/DjangoFiles/BaseBillet/static/arnaud_mvc/img/meta/ziskakan.jpg differ diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/meta.html b/DjangoFiles/BaseBillet/static/arnaud_mvc/meta.html new file mode 100644 index 0000000..2df54e7 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/meta.html @@ -0,0 +1,297 @@ + + + + +TiBillet, Billeterie en réseau + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+ + Image de la vignette + +

BALAPHONIK SOUND SYSTEM

+
+
+
+
+ Image de la vignette +
+ +
+

Beat Box / Looper

+ +
+
+ + +
+ +
+ Image de la vignette +

LE BISIK

+
+
+
+
+ Image de la vignette +
+
+

Bar & Concers

+ +
+
+ + +
+ +
+ Image de la vignette +

BALAPHONIK EVENT

+
+
+
+
+ Image de la vignette +
+
+

Manapany Festival 2022

+ +
+
+
+ +
+ Image de la vignette +

BALAPHONIK EVENT

+
+
+
+
+ Image de la vignette +
+
+

MANAPANY FESTIVAL 2022

+ +
+
+ +
+ +
+ + Image de la vignette + +

BALAPHONIK SOUND SYSTEM

+
+
+
+
+ Image de la vignette +
+ +
+

MANAPANY FESTIVAL 2022

+ +
+
+
+ +
+ Image de la vignette +

BALAPHONIK EVENT

+
+
+
+
+ Image de la vignette +
+
+

MANAPANY FESTIVAL 2022

+ +
+
+
+

Créer ma page

+ logo billeterie Ti Billet +
+ +
+ +
+ + Image de la vignette + +

ZANMARI BARE

+
+
+
+
+ Image de la vignette +
+ +
+

MANAPANY FESTIVAL 2022

+ +
+
+ +
class="card-meta Y"(card jaune)
+
class="card-meta B"(card black)
+
card-meta-50
+
card-meta
+
test
+

H1 titre des EVENT AFFICHER SUR LES CARDS

H2 titre du footer de la CARD

H3 POLICE MERRYWHEATHER SOUS TITRE / TARIFS ETC titre title

H4 POUR LES BTNS titre title

+ + + + + +
+ + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/pages/artiste.html b/DjangoFiles/BaseBillet/static/arnaud_mvc/pages/artiste.html new file mode 100644 index 0000000..72ac40f --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/pages/artiste.html @@ -0,0 +1,214 @@ + + + + +Ti Billet, Billeterie en ligne de vos événements + + + + + + + + + + + + + + +
+ + + +
+ +

BALAPHONIK SOUND SYSTEM

+ Image de la vignette +
+ +
+
+
+
+

BalaPhonik Sound System

+ billeterie Ti Billet + +
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. Lorem +
+ + +
+ http://www.chakouataventure.re + +
+ +
+
+
+
+
+

LE BISIK 20H00

+

12 Octobre 2021

+

Beat Box / Looper

+ +

20€

+
+ Image de la vignette +
+ +
+ +
+ + +
+
Image de la vignette
+ +

Le Bisik

+
+
+
+
+ Image de la vignette +
+ +
+ + +
+
+ +
+

PROGRAMMATION BALAPHONIK

+ + + + + + + + +
+ + + +
+ + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/pages/event.html b/DjangoFiles/BaseBillet/static/arnaud_mvc/pages/event.html new file mode 100644 index 0000000..496590f --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/pages/event.html @@ -0,0 +1,129 @@ + + + + +Ti Billet, Billeterie en ligne de vos événements + + + + + + + + + + + + + + +
+ +
+
+
+
+

ZAN MARI BARE

+

LE BISIK 20H00

+

12 Octobre 2021

+

Beat Box / Looper

+ +

20€

+
+ Image de la vignette +
+ +
+ +
+
+
+

Le Bisik

+ + billeterie Ti Billet + +
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. Lorem +
+ + +
+ http://www.chakouataventure.re + +
+ +
+
+
+
+

BalaPhonik Sound System

+ billeterie Ti Billet + +
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. Lorem +
+ + +
+ http://www.chakouataventure.re + +
+ +
+ + + + + +
+ + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/pages/festival.html b/DjangoFiles/BaseBillet/static/arnaud_mvc/pages/festival.html new file mode 100644 index 0000000..a6fadda --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/pages/festival.html @@ -0,0 +1,261 @@ + + + + +Ti Billet, Billeterie en ligne de vos événements + + + + + + + + + + + + + +
+ + +
VUE PAGE ARTISTES
+
+ +

BALAPHONIK SOUND SYSTEM

+ Image de la vignette +
+ +
+
+
+

BIO DE L'ARTISTE

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. Lorem +
+ billeterie Ti Billet + billeterie Ti Billet + billeterie Ti Billet + billeterie Ti Billet + billeterie Ti Billet +
+ +
+ +
+
+
+
+
+

BALAPHONIK

+

LE BISIK 20H00

+

Beat Box / Looper

+ +

20€

+
+ Image de la vignette +
+ +
+
+ + +
+

BALAPHONIK SOUND SYSTEM

+
+
+
+
+ Image de la vignette +
+ +
+

MANAPANY FESTIVAL 2022

+ +
+
+
+ + +
+

BALAPHONIK SOUND SYSTEM

+
+
+
+
+ Image de la vignette +
+ +
+

MANAPANY FESTIVAL 2022

+ +
+
+
+ + +
+

BALAPHONIK SOUND SYSTEM

+
+
+
+
+ Image de la vignette +
+ +
+

MANAPANY FESTIVAL 2022

+ +
+
+
+ + +
+

BALAPHONIK SOUND SYSTEM

+
+
+
+
+ Image de la vignette +
+ +
+

MANAPANY FESTIVAL 2022

+ +
+
+ + +
+ + + + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/pages/lieux.html b/DjangoFiles/BaseBillet/static/arnaud_mvc/pages/lieux.html new file mode 100644 index 0000000..a0e8eba --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/pages/lieux.html @@ -0,0 +1,242 @@ + + + + +Ti Billet, Billeterie en ligne de vos événements + + + + + + + + + + + + + + +
+ + + +
+ +

LE BISIK

+ Image de la vignette +
+ +
+
+
+
+

Le Bisik

+ billeterie Ti Billet +
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. Lorem + + http://www.chakouataventure.re +
+ +
+
+ + +
+

BALAPHONIK

+
+
+
+
+ Image de la vignette +
+ +
+ + +
+
+
+ + +
+

BALAPHONIK

+
+
+
+
+ Image de la vignette +
+ +
+ + +
+
+
+ + +
+

BALAPHONIK

+
+
+
+
+ Image de la vignette +
+ +
+ + +
+
+
+ + +
+

BALAPHONIK

+
+
+
+
+ Image de la vignette +
+ +
+ + +
+
+ + + + +
+ + + + + + + + + diff --git a/DjangoFiles/BaseBillet/static/arnaud_mvc/tibillet.js b/DjangoFiles/BaseBillet/static/arnaud_mvc/tibillet.js new file mode 100644 index 0000000..ebd19f2 --- /dev/null +++ b/DjangoFiles/BaseBillet/static/arnaud_mvc/tibillet.js @@ -0,0 +1,92 @@ + +// var tl = gsap.timeline(); +// +// tl +// .from(".menutibillet", { +// y: -100, +// stagger: 0.1 // 0.1 seconds between when each ".box" element starts animating +// }) +// .from(".card", { +// opacity:0, +// duration: 0.3, +// rotationY: 180, +// stagger: 0.2 +// +// },"-=0.1") +// ; +// +// const btn = document.querySelector('#filter'); +// var tl2 = gsap.timeline({paused : true}); +// +// tl2 +// .from(".btnside, .btn-aside2, .btn-aside3, .btn-aside4" , { +// opacity:0, +// duration: 0.3, +// x: -100, +// stagger: 0.1 +// }) +// ; +// btn.onclick = () => tl2.reversed() ? tl2.play() : tl2.reverse(); +// + + + + + +// const b4 = document.querySelector('.btn-aside2'); +// var tl6 = gsap.timeline({paused : true}); + +// tl6 +// .to(".btnconcerts", { + +// duration: 0.4, +// transform: 'rotateY(180deg)' + +// }) +// .to(".H41",{ +// duration: 0, +// transform: 'rotateY(180deg)' +// },"-=0.2") +// ; +// b4.addEventListener("mouseenter", () => tl6.play()); +// b4.addEventListener("mouseleave", () => tl6.reverse()); + +// const b5 = document.querySelector('.btn-aside3'); +// var tl7 = gsap.timeline({paused : true}); + +// tl7 +// .to(".btnlieux", { + +// duration: 0.4, +// transform: 'rotateY(180deg)', + +// }) +// .to(".H42",{ +// duration: 0, +// transform: 'rotateY(180deg)' +// },"-=0.2") + +// ; +// b5.addEventListener("mouseenter", () => tl7.play()); +// b5.addEventListener("mouseleave", () => tl7.reverse()); + +// const b6 = document.querySelector('.btn-aside4'); +// var tl8 = gsap.timeline({paused : true}); + +// tl8 +// .to(".btnartiste", { + +// duration: 0.4, +// transform: 'rotateY(180deg)', + +// }) +// .to(".H43",{ +// duration: 0, +// transform: 'rotateY(180deg)' +// },"-=0.2") + +// ; +// b6.addEventListener("mouseenter", () => tl8.play()); +// b6.addEventListener("mouseleave", () => tl8.reverse()); + + diff --git a/DjangoFiles/BaseBillet/tasks.py b/DjangoFiles/BaseBillet/tasks.py index 45ee0b6..827d13d 100644 --- a/DjangoFiles/BaseBillet/tasks.py +++ b/DjangoFiles/BaseBillet/tasks.py @@ -19,7 +19,6 @@ logger = logging.getLogger(__name__) # from celery.utils.log import get_task_logger # logger = get_task_logger(__name__) - class CeleryMailerClass(): def __init__(self, @@ -86,6 +85,14 @@ class CeleryMailerClass(): def create_ticket_pdf(ticket: Ticket): + # logger_weasy = logging.getLogger("weasyprint") + # logger_weasy.addHandler(logging.NullHandler()) + # logger_weasy.setLevel(50) # Only show errors, use 50 + # + # PROGRESS_LOGGER = logging.getLogger('weasyprint.progress') + # PROGRESS_LOGGER.addHandler(logging.NullHandler()) + # PROGRESS_LOGGER.setLevel(50) # Only show errors, use 50 + qr = segno.make(f"{ticket.uuid}", micro=False) buffer_svg = BytesIO() diff --git a/DjangoFiles/BaseBillet/templates/arnaud_mvc/base.html b/DjangoFiles/BaseBillet/templates/arnaud_mvc/base.html new file mode 100644 index 0000000..6190baa --- /dev/null +++ b/DjangoFiles/BaseBillet/templates/arnaud_mvc/base.html @@ -0,0 +1,67 @@ +{% block header %} +{% load static %} +{% load tz %} + + + + + TiBillet + + + + + + + + + +{% endblock header %} + +{% block nav %} + + + + +{# {% include 'arnaud_mvc/nav_filter.html' %}#} + + + +{% endblock nav %} + + + +{% block content %} +{% endblock content %} + + + + + + + + \ No newline at end of file diff --git a/DjangoFiles/BaseBillet/templates/arnaud_mvc/calendar.html b/DjangoFiles/BaseBillet/templates/arnaud_mvc/calendar.html new file mode 100644 index 0000000..b3f879a --- /dev/null +++ b/DjangoFiles/BaseBillet/templates/arnaud_mvc/calendar.html @@ -0,0 +1,24 @@ +{% load static %} +{% load tibitags %} + +{% for block_calendrier in events|range_by:5 %} +
+{#

{{ configuration.organisation.upper }}

#} + {% for event in block_calendrier %} +
+ + reserver + + +
+ {% endfor %} + +
+{% endfor %} diff --git a/DjangoFiles/BaseBillet/templates/arnaud_mvc/event.html b/DjangoFiles/BaseBillet/templates/arnaud_mvc/event.html new file mode 100644 index 0000000..b5979c6 --- /dev/null +++ b/DjangoFiles/BaseBillet/templates/arnaud_mvc/event.html @@ -0,0 +1,97 @@ +{% extends "arnaud_mvc/base.html" %} +{% load static %} +{% block content %} + {% get_media_prefix as MEDIA_PREFIX %} +
+ +
+
+
+
+ + {#

{{ event.name }}

#} +

{{ configuration.organisation }}

+

{{ event.datetime | date:"D d F" }} {{ event.datetime | time }}

+

{{ event.short_description }}

+ + {# #} + + {% for product in event.products.all %} + {% if product.categorie_article == categorie_billet %} +

+ {% for price in product.prices.all %} + {% if forloop.first %} + {{ price.prix | floatformat:"-2" }} + {% else %} + / {{ price.prix | floatformat:"-2" }} + {% endif %} + {% endfor %} + €

+ {% endif %} + {% endfor %} +
+ Image de la vignette +
+ +
+ + {#
#} + {#
#} + {#
#} + {#

Le Bisik

#} + {##} + {# billeterie Ti Billet#} + {##} + {#
#} + {##} + {# Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. Lorem #} + {#
#} + {# #} + {# #} + {#
#} + {# #} + {# http://www.chakouataventure.re#} + {##} + {#
#} + {#
#} + +
+
+
+

{{ event.name }}

+ {# billeterie Ti Billet#} + +
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. Lorem +
+ {% if event.event_facebook_url %} + + {% endif %} + + {# #} +
+ +{# #} +{# http://www.chakouataventure.re#} + +
+ +
+ + +
+{% endblock content %} \ No newline at end of file diff --git a/DjangoFiles/BaseBillet/templates/arnaud_mvc/events_list.html b/DjangoFiles/BaseBillet/templates/arnaud_mvc/events_list.html new file mode 100644 index 0000000..1ea1348 --- /dev/null +++ b/DjangoFiles/BaseBillet/templates/arnaud_mvc/events_list.html @@ -0,0 +1,48 @@ + +{% load static %} +{% get_media_prefix as MEDIA_PREFIX %} + +
+{% for event in events %} + + {% if forloop.counter0|divisibleby:"4" %} +
+ {% else %} +
+ {% endif %} + + + +
+

{{ event.name }}

+
+
+
+
+ event img +
+ +
+ + +
+
+{% endfor %} + diff --git a/DjangoFiles/BaseBillet/templates/arnaud_mvc/lieux.html b/DjangoFiles/BaseBillet/templates/arnaud_mvc/lieux.html new file mode 100644 index 0000000..7841030 --- /dev/null +++ b/DjangoFiles/BaseBillet/templates/arnaud_mvc/lieux.html @@ -0,0 +1,99 @@ +{% extends "arnaud_mvc/base.html" %} +{% load static %} +{% block content %} +{% get_media_prefix as MEDIA_PREFIX %} + + +
+ + + + + + +
+ + +
+
+

{{ configuration.organisation }}

+ {# billeterie Ti Billet#} +
+

{{ configuration.short_description }}

+
+ {{ configuration.long_description }} +
+ {% if configuration.button_adhesion %} + Adhérer à l'association + {% endif %} + + {% if configuration.facebook %} + + {% endif %} + + {% if configuration.instagram %} + + + {% endif %} + +
+ + + {{ configuration.site_web }} + +
+ + + + + + + +
+ + + {% include 'arnaud_mvc/events_list.html' %} + + + + {% include 'arnaud_mvc/calendar.html' %} + + +
+ +{% endblock content %} \ No newline at end of file diff --git a/DjangoFiles/BaseBillet/templates/arnaud_mvc/nav_filter.html b/DjangoFiles/BaseBillet/templates/arnaud_mvc/nav_filter.html new file mode 100644 index 0000000..3dcb110 --- /dev/null +++ b/DjangoFiles/BaseBillet/templates/arnaud_mvc/nav_filter.html @@ -0,0 +1,38 @@ +{% load static %} + + + \ No newline at end of file diff --git a/DjangoFiles/BaseBillet/templatetags/tibitags.py b/DjangoFiles/BaseBillet/templatetags/tibitags.py new file mode 100644 index 0000000..79a1757 --- /dev/null +++ b/DjangoFiles/BaseBillet/templatetags/tibitags.py @@ -0,0 +1,22 @@ +from django import template + +register = template.Library() + +@register.filter +def modulo(num, val): + return num % val + +@register.filter +def range_by(events: list, val: int): + list_ranged = [] + iteration = 0 + count_list = -1 + for event in events: + if iteration % val == 0: + count_list += 1 + list_ranged.append([event,]) + else : + list_ranged[count_list].append(event) + iteration += 1 + + return list_ranged diff --git a/DjangoFiles/BaseBillet/urls.py b/DjangoFiles/BaseBillet/urls.py index c19b494..9474c9e 100644 --- a/DjangoFiles/BaseBillet/urls.py +++ b/DjangoFiles/BaseBillet/urls.py @@ -5,4 +5,5 @@ from BaseBillet import views as base_view urlpatterns = [ path('ticket/', base_view.Ticket_html_view.as_view()), path('', base_view.index.as_view(), name="index"), + path('event//', base_view.event.as_view(), name='show_event'), ] \ No newline at end of file diff --git a/DjangoFiles/BaseBillet/views.py b/DjangoFiles/BaseBillet/views.py index 88bf067..33a2ce8 100644 --- a/DjangoFiles/BaseBillet/views.py +++ b/DjangoFiles/BaseBillet/views.py @@ -6,7 +6,7 @@ from django.shortcuts import render from rest_framework.generics import get_object_or_404 from rest_framework.permissions import AllowAny from rest_framework.views import APIView -from BaseBillet.models import Configuration, Event, Ticket +from BaseBillet.models import Configuration, Event, Ticket, Product import base64 import segno @@ -20,12 +20,13 @@ from django.http import HttpResponse from PIL import Image + class index(APIView): permission_classes = [AllowAny] def get(self, request): configuration = Configuration.get_solo() - if not configuration.activer_billetterie : + if not configuration.activer_billetterie: return HttpResponseRedirect('https://www.tibillet.re') events = Event.objects.filter(datetime__gt=datetime.now()) @@ -36,18 +37,34 @@ class index(APIView): context = { 'configuration': configuration, - 'events': events[1:], - 'first_event': first_event, + 'events': events, + 'categorie_billet': Product.BILLET, } - return render(request, 'html5up-massively/index.html', context=context) + # return render(request, 'html5up-massively/index.html', context=context) + # return render(request, self.template_name , context=context) + return render(request, 'arnaud_mvc/lieux.html', context=context) + + +class event(APIView): + permission_classes = [AllowAny] + + def get(self, request, slug): + configuration = Configuration.get_solo() + event = get_object_or_404(Event, slug=slug) + + context = { + 'configuration': configuration, + 'categorie_billet': Product.BILLET, + 'event': event, + } + return render(request, 'arnaud_mvc/event.html', context=context) class Ticket_html_view(APIView): permission_classes = [AllowAny] def get(self, request, pk_uuid): - ticket = get_object_or_404(Ticket, uuid=pk_uuid) qr = segno.make(f"{ticket.uuid}", micro=False) @@ -78,4 +95,4 @@ class Ticket_html_view(APIView): } return render(request, 'ticket/ticket.html', context=context) - # return render(request, 'ticket/qrtest.html', context=context) \ No newline at end of file + # return render(request, 'ticket/qrtest.html', context=context) diff --git a/DjangoFiles/PaiementStripe/views.py b/DjangoFiles/PaiementStripe/views.py index 6900a73..311236e 100644 --- a/DjangoFiles/PaiementStripe/views.py +++ b/DjangoFiles/PaiementStripe/views.py @@ -193,10 +193,11 @@ class retour_stripe(View): if checkout_session.payment_status == "unpaid": paiement_stripe.status = Paiement_stripe.PENDING - # import ipdb; ipdb.set_trace() if datetime.now().timestamp() > checkout_session.expires_at : paiement_stripe.status = Paiement_stripe.EXPIRE paiement_stripe.save() + return HttpResponse( + f'stripe : {checkout_session.payment_status} - paiement : {paiement_stripe.status}') elif checkout_session.payment_status == "paid": diff --git a/DjangoFiles/TiBillet/settings.py b/DjangoFiles/TiBillet/settings.py index 5422dd4..b959cc6 100644 --- a/DjangoFiles/TiBillet/settings.py +++ b/DjangoFiles/TiBillet/settings.py @@ -239,6 +239,7 @@ LOGGING = { 'console': { 'level': 'INFO', 'class': 'logging.StreamHandler', + 'formatter': 'simple', }, 'logfile': { 'level': 'INFO', @@ -247,9 +248,16 @@ LOGGING = { 'formatter': 'simple', 'maxBytes': 1024 * 1024 * 100, # 100 mb }, + 'weasyprint': { + 'level': 'ERROR', + 'class': 'logging.handlers.RotatingFileHandler', + 'filename': f"{BASE_DIR}/www/weasyprint", + 'formatter': 'simple', + 'maxBytes': 1024 * 1024 * 100, # 100 mb + }, }, 'root': { 'level': 'INFO', - 'handlers': ['console', 'logfile'] + 'handlers': ['console', 'logfile', 'weasyprint'] }, } \ No newline at end of file