Add Booking.total_booking_time()
This commit is contained in:
parent
19e66de32c
commit
6b548c80c4
@ -103,3 +103,7 @@ class Booking(models.Model):
|
|||||||
start_ts = models.DateTimeField(default = timezone.now)
|
start_ts = models.DateTimeField(default = timezone.now)
|
||||||
end_ts = models.DateTimeField(null = True, blank = True)
|
end_ts = models.DateTimeField(null = True, blank = True)
|
||||||
successful = models.BooleanField(default = True)
|
successful = models.BooleanField(default = True)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def total_booking_time():
|
||||||
|
return Booking.objects.filter(start_ts__isnull = False, end_ts__isnull = False).extra(select = {'amount': 'sum(strftime(%s, end_ts) - strftime(%s, start_ts))'}, select_params = ('%s', '%s'))[0].amount
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
from django.test import TestCase, Client
|
from django.test import TestCase, Client
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from .ducklevel import level_to_up_minutes, level_to_down_minutes, minutes_to_level
|
from .ducklevel import level_to_up_minutes, level_to_down_minutes, minutes_to_level
|
||||||
from .templatetags import booking_tags
|
from .templatetags import booking_tags
|
||||||
from .models import Duck, Competence, DuckCompetence
|
from .models import Duck, Competence, DuckCompetence, Species, Location, Booking
|
||||||
|
|
||||||
class FrontTest(TestCase):
|
class FrontTest(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@ -147,3 +148,39 @@ class DuckAgeTest(TestCase):
|
|||||||
self.assertEqual(booking_tags.age_format(34128000), "1 year 1 month")
|
self.assertEqual(booking_tags.age_format(34128000), "1 year 1 month")
|
||||||
self.assertEqual(booking_tags.age_format(36720000), "1 year 2 months")
|
self.assertEqual(booking_tags.age_format(36720000), "1 year 2 months")
|
||||||
self.assertEqual(booking_tags.age_format(63072000), "2 years")
|
self.assertEqual(booking_tags.age_format(63072000), "2 years")
|
||||||
|
|
||||||
|
class BookingTimeTest(TestCase):
|
||||||
|
duck1 = None
|
||||||
|
duck2 = None
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
user = User()
|
||||||
|
user.save()
|
||||||
|
|
||||||
|
species = Species(name = 'duck')
|
||||||
|
species.save()
|
||||||
|
|
||||||
|
location = Location(name = 'start')
|
||||||
|
location.save()
|
||||||
|
|
||||||
|
self.duck1 = Duck(species = species, location = location, donated_by = user)
|
||||||
|
self.duck1.save()
|
||||||
|
|
||||||
|
competence = Competence(name = 'test', added_by = user)
|
||||||
|
competence.save()
|
||||||
|
|
||||||
|
now = timezone.now()
|
||||||
|
booking = Booking(duck = self.duck1, start_ts = now - datetime.timedelta(days = 2), end_ts = now - datetime.timedelta(days = 1), user = user, comp_req = competence)
|
||||||
|
booking.save()
|
||||||
|
|
||||||
|
self.duck2 = Duck(species = species, location = location, donated_by = user)
|
||||||
|
self.duck2.save()
|
||||||
|
|
||||||
|
booking = Booking(duck = self.duck2, start_ts = now - datetime.timedelta(days = 3), end_ts = now - datetime.timedelta(days = 2), user = user, comp_req = competence)
|
||||||
|
booking.save()
|
||||||
|
|
||||||
|
booking = Booking(duck = self.duck2, start_ts = now - datetime.timedelta(days = 2), end_ts = now - datetime.timedelta(days = 1), user = user, comp_req = competence)
|
||||||
|
booking.save()
|
||||||
|
|
||||||
|
def test_total_booking_time(self):
|
||||||
|
self.assertEqual(Booking.total_booking_time(), 259200)
|
||||||
|
Loading…
Reference in New Issue
Block a user