Advertisement
marcosroot

Untitled

Mar 25th, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.78 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.  
  9. class User(AbstractBaseUser, PermissionsMixin):
  10.     USER_TYPE_CHOICES = (("cl", "client"), ("comp", "company"))
  11.  
  12.     email = models.EmailField(unique=True, max_length=250)
  13.     date_joined = models.DateTimeField(auto_now_add=True)
  14.  
  15.     is_staff = models.BooleanField(default=False)
  16.     is_active = models.BooleanField(default=True)
  17.  
  18.     user_type = models.CharField(max_length=10, choices=USER_TYPE_CHOICES)
  19.  
  20.     objects = UserManager()
  21.  
  22.     USERNAME_FIELD = "email"
  23.     REQUIRED_FIELDS = []
  24.  
  25.     class Meta:
  26.         ordering = ["email"]
  27.  
  28.  
  29. # for clients
  30. class Client(models.Model):
  31.     user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="client")
  32.     first_name = models.CharField(max_length=30)
  33.     last_name = models.CharField(max_length=60)
  34.     birth = models.DateField()
  35.     skills = tagulous.models.TagField(force_lowercase=True)
  36.  
  37.     def get_full_name(self):
  38.         return f"{self.first_name} {self.last_name}"
  39.  
  40.     def get_short_name(self):
  41.         return self.first_name
  42.  
  43.     def __str__(self):
  44.         return f"{self.first_name} - {self.user.email}"
  45.  
  46.  
  47. # for companies
  48. class Company(models.Model):
  49.     user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="company")
  50.     name = models.CharField(max_length=250)
  51.  
  52.     def __str__(self):
  53.         return self.name
  54.  
  55.  
  56. class Job(models.Model):
  57.     company = models.ForeignKey(User, on_delete=models.CASCADE, related_name="job")
  58.     title = models.CharField(max_length=120)
  59.     info = models.TextField()
  60.  
  61.     def __str__(self):
  62.         return f"{self.title} - {self.company.name}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement