From f44b3fc33c4df8e28ff4d7341e726cda152bb39d Mon Sep 17 00:00:00 2001 From: Ludovic Stephan Date: Fri, 22 Jul 2016 22:48:09 +0200 Subject: [PATCH] creates initial models --- bda/admin.py | 21 ++++++++++++++++++++- bda/models.py | 23 +++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/bda/admin.py b/bda/admin.py index 8f5915d5..3717e438 100644 --- a/bda/admin.py +++ b/bda/admin.py @@ -9,7 +9,7 @@ from django.core.mail import send_mail from django.contrib import admin from django.db.models import Sum, Count from bda.models import Spectacle, Salle, Participant, ChoixSpectacle,\ - Attribution, Tirage + Attribution, Tirage, SpectacleRevente from django import forms from datetime import timedelta @@ -204,9 +204,28 @@ class SalleAdmin(admin.ModelAdmin): search_fields = ('name', 'address') +class SpectacleReventeAdmin(admin.ModelAdmin): + model = SpectacleRevente + + def spectacle(self, obj): + return obj.attribution.spectacle + + def participant(self, obj): + return obj.attribution.participant + + list_display = ("spectacle", "participant", "date", "sold") + readonly_fields = ("shotgun",) + list_filter = ("sold", ) + search_fields = ("spectacle__title", + "participant__user__username", + "participant__user__firstname", + "participant__user__lastname",) + + admin.site.register(Spectacle, SpectacleAdmin) admin.site.register(Salle, SalleAdmin) admin.site.register(Participant, ParticipantAdmin) admin.site.register(Attribution, AttributionAdmin) admin.site.register(ChoixSpectacle, ChoixSpectacleAdmin) admin.site.register(Tirage, TirageAdmin) +admin.site.register(SpectacleRevente, SpectacleReventeAdmin) diff --git a/bda/models.py b/bda/models.py index 41037643..405236b9 100644 --- a/bda/models.py +++ b/bda/models.py @@ -5,6 +5,7 @@ from __future__ import print_function from __future__ import unicode_literals import calendar +import datetime from django.db import models from django.contrib.auth.models import User @@ -179,3 +180,25 @@ class Attribution(models.Model): def __str__(self): return "%s -- %s" % (self.participant, self.spectacle) + + +@python_2_unicode_compatible +class SpectacleRevente(models.Model): + attribution = models.OneToOneField(Attribution) + date = models.DateTimeField("Date de mise en vente", + default=timezone.now) + sold = models.BooleanField("Vendue", default=False) + + def get_expiration_time(self): + remaining_time = (self.attribution.spectacle.date - self.date) + delay = max(datetime.timedelta(hours=2), + min(remaining_time/2, datetime.timedelta(days=2))) + return self.date + delay + expiration_time = property(get_expiration_time) + + def get_shotgun(self): + return timezone.now > self.expiration_time + shotgun = property(get_shotgun) + + def __str__(self): + return "%s" % self.attribution