Added EventManager and did some generic refactoring

This commit is contained in:
tomtom5152
2014-11-06 02:51:50 +00:00
parent 2c8b159a84
commit 98b4f92393

View File

@@ -3,7 +3,8 @@ from django.contrib.auth.models import AbstractUser
from django.conf import settings
import hashlib
import reversion
from datetime import datetime
import datetime
# Create your models here.
class Profile(AbstractUser):
@@ -66,8 +67,8 @@ class Organisation(models.Model, RevisionMixin):
class VatManager(models.Manager):
def currentRate(self):
return self.find_rate(datetime.now())
def current_rate(self):
return self.find_rate(datetime.datetime.now())
def find_rate(self, date):
# return self.filter(startAt__lte=date).latest()
@@ -89,7 +90,7 @@ class VatRate(models.Model, RevisionMixin):
@property
def as_percent(self):
return (self.rate * 100)
return self.rate * 100
class Meta:
ordering = ['-start_at']
@@ -112,10 +113,37 @@ class Venue(models.Model, RevisionMixin):
def __str__(self):
string = self.name
if self.notes and len(self.notes) > 0:
string += "*"
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'])
class Event(models.Model, RevisionMixin):
# Done to make it much nicer on the database
@@ -163,10 +191,10 @@ class Event(models.Model, RevisionMixin):
# Calculated values
@property
def sum_total(self):
sum = 0
total = 0
for item in self.items.all():
sum += item.total_cost
return sum
total += item.total_cost
return total
@property
def vat_rate(self):
@@ -180,6 +208,8 @@ class Event(models.Model, RevisionMixin):
def total(self):
return self.sum_total + self.vat
objects = EventManager()
def __str__(self):
return str(self.pk) + ": " + self.name