Membership

add membership to AuthBillet for user
This commit is contained in:
Jonas 12t 2021-11-11 16:28:10 +04:00
parent dcc3672c45
commit a1314c683a
16 changed files with 253 additions and 18 deletions

View File

@ -158,6 +158,6 @@ class CarteCashlessAdmin(admin.ModelAdmin):
get_origin.short_description = 'Origine'
search_fields = ('tag_id', 'uuid', 'number')
list_filter = ('tag_id', 'uuid', 'number')
list_filter = ('tag_id', 'uuid', 'number', 'detail__origine')
public_admin_site.register(CarteCashless, CarteCashlessAdmin)

View File

@ -137,6 +137,7 @@ class ReservationViewset(viewsets.ViewSet):
permission_classes = [TenantAdminPermission]
return [permission() for permission in permission_classes]
# class Adhesion(viewsets.ViewSet):
class TicketPdf(WeasyTemplateView):
permission_classes = [AllowAny]

View File

@ -0,0 +1,47 @@
# Generated by Django 2.2 on 2021-11-11 12:27
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('Customers', '0001_initial'),
('AuthBillet', '0003_auto_20211022_1445'),
]
operations = [
migrations.AddField(
model_name='tibilletuser',
name='accept_newsletter',
field=models.BooleanField(default=True, verbose_name="J'accepte de recevoir la newsletter"),
),
migrations.AddField(
model_name='tibilletuser',
name='birth_date',
field=models.DateField(blank=True, null=True),
),
migrations.AddField(
model_name='tibilletuser',
name='last_see',
field=models.DateTimeField(auto_now=True),
),
migrations.AddField(
model_name='tibilletuser',
name='postal_code',
field=models.IntegerField(blank=True, null=True),
),
migrations.CreateModel(
name='Membership',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date_added', models.DateTimeField(auto_now_add=True)),
('first_contribution', models.DateField(blank=True, null=True)),
('last_contribution', models.DateField(blank=True, null=True)),
('tenant', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='Customers.Client')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='membership', to=settings.AUTH_USER_MODEL)),
],
),
]

View File

@ -55,7 +55,6 @@ class TibilletManager(BaseUserManager):
staff_group = Group.objects.get_or_create(name="staff")[0]
user.groups.add(staff_group)
class TibilletUser(AbstractUser):
#TODO regarder du coté du dashboard de jet, ça plante avec uuid !
@ -70,6 +69,13 @@ class TibilletUser(AbstractUser):
username = models.CharField(max_length=200, unique=True)
phone = models.CharField(max_length=20, null=True, blank=True)
last_see = models.DateTimeField(auto_now=True)
accept_newsletter = models.BooleanField(
default=True, verbose_name=_("J'accepte de recevoir la newsletter"))
postal_code = models.IntegerField(null=True, blank=True)
birth_date = models.DateField(null=True, blank=True)
TYPE_TERM, TYPE_HUM, TYPE_ANDR = 'TE', 'HU', 'AN'
ESPECE_CHOICES = (
(TYPE_TERM, 'Terminal'),
@ -206,6 +212,19 @@ class HumanUser(TibilletUser):
super().save(*args, **kwargs)
class Membership(models.Model):
user = models.ForeignKey(TibilletUser, on_delete=models.PROTECT, related_name='membership')
tenant = models.ForeignKey(Client, on_delete=models.PROTECT)
date_added = models.DateTimeField(auto_now_add=True)
first_contribution = models.DateField(null=True, blank=True)
last_contribution = models.DateField(null=True, blank=True)
# ---------------------------------------------------------------------------------------------------------------------
class SuperHumanUserManager(TibilletManager):

View File

@ -0,0 +1,19 @@
# Generated by Django 2.2 on 2021-11-11 06:17
from django.db import migrations
import stdimage.models
class Migration(migrations.Migration):
dependencies = [
('BaseBillet', '0018_auto_20211111_1003'),
]
operations = [
migrations.AddField(
model_name='configuration',
name='logo',
field=stdimage.models.StdImageField(blank=True, null=True, upload_to='images/', verbose_name='Background'),
),
]

View File

@ -0,0 +1,19 @@
# Generated by Django 2.2 on 2021-11-11 08:19
from django.db import migrations
import stdimage.models
class Migration(migrations.Migration):
dependencies = [
('BaseBillet', '0019_configuration_logo'),
]
operations = [
migrations.AlterField(
model_name='configuration',
name='logo',
field=stdimage.models.StdImageField(blank=True, null=True, upload_to='images/', verbose_name='Logo'),
),
]

View File

@ -615,7 +615,7 @@ h4 {
/* FORM */
.search {
display: none;
position: absolute;
position: fixed;
width: 100%;
height: 100vh;
background-color: #000000e0;

View File

@ -4,6 +4,7 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>TiBillet</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@ -13,6 +14,10 @@
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/css/all.min.css">
<link rel="stylesheet" href="{% static 'arnaud_mvc/css/creative.css' %}">
{# <link rel="stylesheet" href="{% static 'abubaker_saeed_modal/modal.css' %}">#}
{# <link rel="stylesheet" href="{% static 'html5up-dimension/assets/css/main.css' %}"/>#}
{# <link rel="stylesheet" href="{% static 'html5up-dimension/assets/css/main.css' %}"/>#}
</head>
{% endblock header %}
@ -38,14 +43,28 @@
<ul id="menutb" class="menutb">
<li class="m">
<a href="/"><img src="{% static 'arnaud_mvc/img/menu/home.svg' %}"
alt="logo billeterie Ti Billet" class="menutibillet m1"></a></li>
<a href="#">
<img src="{% static 'arnaud_mvc/img/menu/home.svg' %}"
alt="logo billeterie Ti Billet" class="menutibillet m1">
</a>
</li>
{# <li class="m"><a href="#Apropos"><img src="{% static 'arnaud_mvc/img/menu/like.svg' %}"#}
{# alt="logo billeterie Ti Billet" class="menutibillet m2"></a></li>#}
<li class="m"><a href="#calendar"><img src="{% static 'arnaud_mvc/img/menu/calendrier.svg' %}"
alt="logo billeterie Ti Billet" class="menutibillet m3"></a></li>
{# <li class="m"><a href="#Contact"><img src="{% static 'arnaud_mvc/img/menu/search.svg' %}"#}
{# alt="logo billeterie Ti Billet" class="menutibillet m4"></a></li>#}
<li class="m">
<a href="#calendar">
<img src="{% static 'arnaud_mvc/img/menu/calendrier.svg' %}"
alt="logo billeterie Ti Billet" class="menutibillet m3">
</a>
</li>
<li class="m">
<a href="#search" title="search" onclick="asideswipe.call(this);">
<img src="{% static 'arnaud_mvc/img/menu/search.svg' %}"
alt="logo billeterie Ti Billet" class="menutibillet m4">
</a>
</li>
<!-- onClick="asideswipe()" -->
</ul>
@ -56,9 +75,11 @@
<!-- END FILTER MENU -->
{% endblock nav %}
<body>
{% include 'arnaud_mvc/modals.html' %}
{% block content %}
{% endblock content %}
@ -69,6 +90,24 @@
{% endblock footer %}
</footer>
<!-- AFFICHER CACHER DIV SEARCHrecherche -->
<script type="text/javascript">
function asideswipe() {
console.log('asideswipe : ', this.title);
var div = document.getElementById(this.title),
display = getComputedStyle(div, null).display;
console.log(display)
if (display == "flex") {
div.style.display = "none";
} else {
div.style.display = "flex";
}
}
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.8.0/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.8.0/CSSRulePlugin.min.js"></script>
<script src="{% static 'arnaud_mvc/tibillet.js' %}"></script>

View File

@ -3,18 +3,18 @@
<!-- CARD PROGRAMME -->
{% for block_calendrier in events|range_by:5 %}
<div id="calendar" class="card card-meta card-programme">
{# <h2 class="title-programme">{{ configuration.organisation.upper }} </h2>#}
{# <h2 class="title-programme">{{ configuration.organisation.upper }} </h2>#}
{% for event in block_calendrier %}
<div class="date-programme">
<a href="">
<a href="{% url 'show_event' event.slug %}">
<img src="{% static 'arnaud_mvc/img/meta/reserver.png' %}" alt="reserver" class="linkcard"
style="padding-right: 10px; padding-left:0px;">
</a>
<div class="date-programme-link">
<a href="" style="text-decoration: none;">
<a href="{% url 'show_event' event.slug %}" style="text-decoration: none;">
<h2 style="margin:0;">{{ event.datetime | date:"D d F Y" }}</h2>
</a>
<a href="" style="color:#ffc801;">{{ event.name }}
<a href="{% url 'show_event' event.slug %}" style="color:#ffc801;">{{ event.name }}
- {{ event.datetime | time }}</a>
</div>
</div>

View File

@ -3,7 +3,7 @@
<nav class="nav-responsive">
{% if configuration.button_adhesion %}
<a href="" class="btn-responsive">
<a href="#adherer" class="btn-responsive" title="adhesion_one" onclick="asideswipe.call(this);">
<img src="{% static 'arnaud_mvc/img/menu/adhesion_card.png' %}" alt="adhesion">
<h4 style="font-size: 0.8rem;">Adhérer</h4>
</a>
@ -29,7 +29,7 @@
<!-- MENU LIEUX -->
<div class="menu-page">
{% if configuration.button_adhesion %}
<a href="" class="btn-menu-page">
<a href="#adherer" class="btn-menu-page" title="adhesion_one" onclick="asideswipe.call(this);">
<img src="{% static 'arnaud_mvc/img/menu/adhesion_card.png' %}" alt="billeterie Ti Billet">
<h4 style="font-size: 0.8rem;">ADHERER</h4>
</a>

View File

@ -0,0 +1,66 @@
{% load static %}
{% get_media_prefix as MEDIA_PREFIX %}
<!-- START SEARCH MODAL MENU -->
<div class="search" id="search">
<form action="/ma-page-de-traitement" method="post" class="form-search">
<div class="div-label-search">
<label for="msg" class="label-search"><span href="pages/artiste.html" class="icone"
title="Visiter la page de l'artiste">
<img src="{% static 'arnaud_mvc/img/menu/searchnoir.png' %}" alt="Image de la vignette" style="scale: 0.7;">
</span>
<h1>Recherche</h1></label>
<input type="search"/>
<input type="submit" value="Submit" class="btn-adherer" style="margin-top: 30px;"">
<a href="#" class="btn-adherer" style="margin-top: 30px;">Go</a>
<a href="#" class="btn-adherer" title="search" onClick="asideswipe.call(this);">Fermer</a>
</div>
</form>
</div>
<!-- END SEARCH MODAL MENU -->
<!-- START ADHESION MODAL MENU -->
<div class="search" id="adhesion_one">
<form method="post" action="#" class="form-search">
<div class="div-label-search">
<label for="msg" class="label-search">
<span href="pages/artiste.html" class="icone"
title="Visiter la page de l'artiste">
<img src="{% static 'arnaud_mvc/img/menu/searchnoir.png' %}"
alt="Image de la vignette"
style="scale: 0.7;">
</span>
<h1>Email</h1>
</label>
<input type="email" name="email" id="Email" required="True" value="{{ email }}"
style="text-transform: lowercase;"/>
<input type="submit" value="Continuer" class="btn-adherer" style="margin-top: 30px;"">
<a href="#" class="btn-adherer" title="adhesion_one" onClick="asideswipe.call(this);">Fermer</a>
</div>
</form>
</div>
<!-- END ADHESION MODAL MENU -->
<h2>Adhésion</h2>
<h2 class="major">{{ client_name }}</h2>
<form method="post" action="#">
{% csrf_token %}
<div class="fields">
<div class="field">
{% if email %}
<label for="email">Vérifiez votre adresse Email</label>
<input type="email" name="email" id="Email" required="True" value="{{ email }}"
style="text-transform: lowercase;"/>
{% else %}
<label for="email">Entrez votre adresse Email</label>
<input type="email" name="email" id="email" required="True"
style="text-transform: lowercase;"/>
{% endif %}
</div>
</div>
<ul class="actions">
<li><input type="submit" value="continuer" class="primary"/></li>
</ul>
</form>

View File

@ -46,6 +46,12 @@ class index(APIView):
return render(request, 'arnaud_mvc/lieux.html', context=context)
# class adhesion(APIView):
# permission_classes = [AllowAny]
#
# def post(self, request):
class event(APIView):
permission_classes = [AllowAny]

View File

@ -0,0 +1,19 @@
# Generated by Django 2.2 on 2021-11-11 08:19
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('QrcodeCashless', '0002_cartecashless_user'),
]
operations = [
migrations.AlterField(
model_name='detail',
name='origine',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='origine', to='Customers.Client'),
),
]

View File

@ -21,7 +21,7 @@ class Detail(models.Model):
)
img_url = models.URLField(null=True, blank=True)
base_url = models.CharField(max_length=60, null=True, blank=True)
origine = models.ForeignKey(Customers_Client, on_delete=models.PROTECT, null=True, blank=True)
origine = models.ForeignKey(Customers_Client, on_delete=models.PROTECT, null=True, blank=True, related_name='origine')
generation = models.SmallIntegerField()
def __str__(self):