from django.db import models from django.template.defaultfilters import slugify from django.utils import timezone from uuid import uuid4 from django.contrib.auth.models import User class Client(models.Model): PROVINCES = [ ('Gauteng', 'Gauteng'), ('Free State', 'Free State'), ('Limpopo', 'Limpopo'), ] #Basic Fields clientName = models.CharField(null=True, blank=True, max_length=200) addressLine1 = models.CharField(null=True, blank=True, max_length=200) province = models.CharField(choices=PROVINCES, blank=True, max_length=100) postalCode = models.CharField(null=True, blank=True, max_length=10) phoneNumber = models.CharField(null=True, blank=True, max_length=100) emailAddress = models.CharField(null=True, blank=True, max_length=100) #Utility fields uniqueId = models.CharField(null=True, blank=True, max_length=100) slug = models.SlugField(max_length=500, unique=True, blank=True, null=True) date_created = models.DateTimeField(blank=True, null=True) last_updated = models.DateTimeField(blank=True, null=True) def __str__(self): return '{} {} {}'.format(self.clientName, self.province, self.uniqueId) def get_absolute_url(self): return reverse('client-detail', kwargs={'slug': self.slug}) def save(self, *args, **kwargs): if self.date_created is None: self.date_created = timezone.localtime(timezone.now()) if self.uniqueId is None: self.uniqueId = str(uuid4()).split('-')[4] self.slug = slugify('{} {} {}'.format(self.clientName, self.province, self.uniqueId)) self.slug = slugify('{} {} {}'.format(self.clientName, self.province, self.uniqueId)) self.last_updated = timezone.localtime(timezone.now()) super(Client, self).save(*args, **kwargs)