Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.18 KB | None | 0 0
  1. from django.db import models
  2. from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
  3. from .managers import UserManager
  4. import tagulous
  5.  
  6. # Create your models here.
  7.  
  8. class User(AbstractBaseUser, PermissionsMixin):
  9.     email = models.EmailField(unique=True, max_length=250)
  10.     date_joined = models.DateTimeField(auto_now_add=True)
  11.  
  12.     is_staff = models.BooleanField(default=False)
  13.     is_active = models.BooleanField(default=True)
  14.  
  15.     objects = UserManager()
  16.  
  17.     USERNAME_FIELD = "email"
  18.     REQUIRED_FIELDS = []
  19.  
  20.     class Meta:
  21.         ordering = ['email']
  22.  
  23. # for clients
  24. class Client(models.Model):
  25.     user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="client")
  26.     first_name = models.CharField(max_length=30)
  27.     last_name = models.CharField(max_length=60)
  28.     birth = models.DateField()
  29.     skills = tagulous.models.TagField(force_lowercase=True)
  30.  
  31.     def get_full_name(self):
  32.         return f"{self.first_name} {self.last_name}"
  33.  
  34.     def get_short_name(self):
  35.         return self.first_name
  36.  
  37.     def __str__(self):
  38.         return f"{self.first_name} - {self.user.email}"
  39.  
  40. # for companies
  41. class Company(models.Model):
  42.     user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="company")
  43.     name = models.CharField(max_length=250)
  44.  
  45.     def __str__(self):
  46.         return self.name
  47.  
  48.  
  49. class Job(models.Model):
  50.     company = models.ForeignKey(User, on_delete=models.CASCADE, related_name="job")
  51.     title = models.CharField(max_length=120)
  52.     info = models.TextField()
  53.  
  54.     def __str__(self):
  55.         return f"{self.title} - {self.company.name}"
  56.  
  57.  
  58. # manager
  59.  
  60. from django.contrib.auth.models import BaseUserManager
  61.  
  62. class UserManager(BaseUserManager):
  63.     def create_user(self, email, password=None, **kwargs):
  64.         email = self.normalize_email(email)
  65.         user = self.model(email=email, **kwargs)
  66.         user.set_password(password)
  67.         user.save(using=self._db)
  68.         return user
  69.  
  70.     def create_superuser(self, **kwargs):
  71.         user = self.create_user(**kwargs)
  72.         user.is_superuser = True
  73.         user.is_staff = True
  74.         user.save(using=self._db)
  75.         return user
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement