mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-30 03:42:15 +00:00
Added EventManager and did some generic refactoring
This commit is contained in:
@@ -3,7 +3,8 @@ from django.contrib.auth.models import AbstractUser
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
import hashlib
|
import hashlib
|
||||||
import reversion
|
import reversion
|
||||||
from datetime import datetime
|
import datetime
|
||||||
|
|
||||||
|
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
class Profile(AbstractUser):
|
class Profile(AbstractUser):
|
||||||
@@ -66,8 +67,8 @@ class Organisation(models.Model, RevisionMixin):
|
|||||||
|
|
||||||
|
|
||||||
class VatManager(models.Manager):
|
class VatManager(models.Manager):
|
||||||
def currentRate(self):
|
def current_rate(self):
|
||||||
return self.find_rate(datetime.now())
|
return self.find_rate(datetime.datetime.now())
|
||||||
|
|
||||||
def find_rate(self, date):
|
def find_rate(self, date):
|
||||||
# return self.filter(startAt__lte=date).latest()
|
# return self.filter(startAt__lte=date).latest()
|
||||||
@@ -89,7 +90,7 @@ class VatRate(models.Model, RevisionMixin):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def as_percent(self):
|
def as_percent(self):
|
||||||
return (self.rate * 100)
|
return self.rate * 100
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['-start_at']
|
ordering = ['-start_at']
|
||||||
@@ -112,10 +113,37 @@ class Venue(models.Model, RevisionMixin):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
string = self.name
|
string = self.name
|
||||||
if self.notes and len(self.notes) > 0:
|
if self.notes and len(self.notes) > 0:
|
||||||
string += "*"
|
string += "*"
|
||||||
return string
|
return string
|
||||||
|
|
||||||
|
|
||||||
|
class EventManager(models.Manager):
|
||||||
|
def current_events(self):
|
||||||
|
# startAfter = self.filter(startDate__gte=datetime.date.today(), endDate__isnull=True)
|
||||||
|
# endAfter = self.filter(endDate__gte=datetime.date.today())
|
||||||
|
# activeDryHire = filter(dryHire=True, checkedInBy__isnull=False, canceled=False)
|
||||||
|
# canceledDryHire = filter(dry_hire=True, canceled=True)
|
||||||
|
# events = chain(startAfter, endAfter, activeDryHire, canceledDryHire)
|
||||||
|
# return sorted(events, key=operator.attrgetter('start_date'))
|
||||||
|
events = self.filter(
|
||||||
|
models.Q(start_date__gte=datetime.date.today(), end_date_isnull=True) | # Starts after with no end
|
||||||
|
models.Q(end_date__gte=datetime.date.today()) | # Ends after
|
||||||
|
models.Q(dry_hire=True, checked_in_by__isnull=False, status__neq=Event.CANCELLED) | # Active dry hire
|
||||||
|
models.Q(dry_hire=True, status=Event.CANCELLED, start_date__gte=datetime.date.today())
|
||||||
|
# Canceled but not started
|
||||||
|
).sort('meet_at', 'start_at')
|
||||||
|
return events
|
||||||
|
|
||||||
|
def rig_count(self):
|
||||||
|
events = self.filter(
|
||||||
|
models.Q(start_date__gte=datetime.date.today(), end_date_isnull=True) | # Starts after with no end
|
||||||
|
models.Q(end_date__gte=datetime.date.today()) | # Ends after
|
||||||
|
models.Q(dry_hire=True, checked_in_by__isnull=False), # Active dry hire
|
||||||
|
status__neq=Event.CANCELLED
|
||||||
|
).sort('meet_at', 'start_at')
|
||||||
|
return len(list(events))
|
||||||
|
|
||||||
|
|
||||||
@reversion.register(follow=['items'])
|
@reversion.register(follow=['items'])
|
||||||
class Event(models.Model, RevisionMixin):
|
class Event(models.Model, RevisionMixin):
|
||||||
# Done to make it much nicer on the database
|
# Done to make it much nicer on the database
|
||||||
@@ -163,10 +191,10 @@ class Event(models.Model, RevisionMixin):
|
|||||||
# Calculated values
|
# Calculated values
|
||||||
@property
|
@property
|
||||||
def sum_total(self):
|
def sum_total(self):
|
||||||
sum = 0
|
total = 0
|
||||||
for item in self.items.all():
|
for item in self.items.all():
|
||||||
sum += item.total_cost
|
total += item.total_cost
|
||||||
return sum
|
return total
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def vat_rate(self):
|
def vat_rate(self):
|
||||||
@@ -180,6 +208,8 @@ class Event(models.Model, RevisionMixin):
|
|||||||
def total(self):
|
def total(self):
|
||||||
return self.sum_total + self.vat
|
return self.sum_total + self.vat
|
||||||
|
|
||||||
|
objects = EventManager()
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return str(self.pk) + ": " + self.name
|
return str(self.pk) + ": " + self.name
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user