Advertisement
Guest User

Untitled

a guest
Oct 12th, 2020
943
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.36 KB | None | 0 0
  1. from django.db import models
  2.  
  3. from django.contrib.postgres.fields import ArrayField
  4. from django.contrib.auth.base_user import BaseUserManager
  5. from django.contrib.auth.base_user import AbstractBaseUser
  6. from datetime import datetime
  7. from django.conf import settings
  8. from django.db.models.signals import post_save
  9. from django.dispatch import receiver
  10. from rest_framework.authtoken.models import Token
  11. import datetime
  12. import django.utils
  13.  
  14.  
  15. @receiver(post_save, sender=settings.AUTH_USER_MODEL)
  16. def create_auth_token(sender, instance=None, created=False, **kwargs):
  17.     if created:
  18.         Token.objects.create(user=instance)
  19.  
  20.  
  21. class UserManager(BaseUserManager):
  22.     def create_user(self, email, username, password=None):
  23.         if not email:
  24.             raise ValueError("Users must have an email address")
  25.         if not username:
  26.             raise ValueError("Users must have an username")
  27.  
  28.         user = self.model(
  29.             email=self.normalize_email(email),
  30.             username=username,
  31.         )
  32.  
  33.         user.set_password(password)
  34.         user.save(using=self._db)
  35.         return user
  36.  
  37.     def create_superuser(self, email, username, password):
  38.         user = self.create_user(
  39.             email=self.normalize_email(email),
  40.             password=password,
  41.             username=username,
  42.         )
  43.         user.is_admin = True
  44.         user.is_staff = True
  45.         user.is_superuser = True
  46.         user.save(using=self._db)
  47.         return user
  48.  
  49.  
  50. class User(AbstractBaseUser):
  51.  
  52.     # required
  53.     username = models.CharField(max_length=30, unique=True, blank=True)
  54.     email = models.EmailField(verbose_name="email", max_length=60, unique=True, blank=True)
  55.     first_name = models.CharField(max_length=30, null=True, blank=True)
  56.     last_name = models.CharField(max_length=30, null=True, blank=True)
  57.  
  58.     #optional
  59.     image = models.ImageField(
  60.         upload_to="profile_images/", default='profile_images/default.png', blank=True)
  61.     rating = models.FloatField(null=True, blank=True)
  62.     place_in_top = models.PositiveIntegerField(null=True, blank=True)
  63.     TYPE_CHOICES = (
  64.         (7, "7"), (8, "8"), (9, "9"), (10, "10"), (11, "11"),
  65.     )
  66.     grade = models.PositiveIntegerField(choices=TYPE_CHOICES, default=1)
  67.    
  68.     # system
  69.     last_login = models.DateTimeField(verbose_name='last login', auto_now=True)
  70.     is_admin = models.BooleanField(default=False)
  71.     is_active = models.BooleanField(default=True)
  72.     is_staff = models.BooleanField(default=False)
  73.     is_superuser = models.BooleanField(default=False)
  74.  
  75.     USERNAME_FIELD = 'username'
  76.     REQUIRED_FIELDS = ['email', ]
  77.  
  78.     objects = UserManager()
  79.  
  80.     def __str__(self):
  81.         return self.username
  82.  
  83.     def has_perm(self, perm, obj=None):
  84.         return self.is_admin
  85.  
  86.     def has_module_perms(self, app_label):
  87.         return self.is_superuser
  88.  
  89.  
  90. class Event(models.Model):
  91.     id = models.AutoField(primary_key=True)
  92.     name = models.CharField(max_length=100, null=True)
  93.     description = models.TextField(max_length=1000, blank=True, null=True)
  94.     date_start = models.DateTimeField(null=True, blank=True)
  95.     date_finish = models.DateTimeField(null=True, blank=True)
  96.  
  97.     image = models.ImageField(
  98.         upload_to="event_images/", default='event_images/default.png', blank=True, null=True)
  99.     is_approved = models.BooleanField(null=True)
  100.  
  101.     TYPE_CHOICES = (
  102.         ('Event', "Мероприятие"),
  103.         ('Lesson', "Урок"),
  104.     )
  105.     event_type = models.CharField(choices=TYPE_CHOICES, max_length=200, default="Мероприятие")
  106.     hometask = ArrayField(models.CharField(max_length=200), blank=True, null=True)
  107.     topics = ArrayField(models.CharField(max_length=200), blank=True, null=True)
  108.     materials = ArrayField(models.URLField(), blank=True, null=True)
  109.     possible_users = models.ManyToManyField("core.User", blank=True, related_name='possible_users')
  110.     actual_users = models.ManyToManyField("core.User", blank=True, related_name='actual_users')
  111.  
  112.  
  113. class Image(models.Model):
  114.     name = models.CharField(max_length=250, blank=True, null=True)
  115.     img = models.ImageField(blank=True, null=True, upload_to='post_images')
  116.  
  117.  
  118. class Post(models.Model):
  119.     id = models.AutoField(primary_key=True)
  120.     header = models.CharField(max_length=1000, null=True, blank=True)
  121.     text = models.TextField(null=True, blank=True)
  122.     image = models.ImageField(null=True, blank=True, upload_to='post_images/', default='post_images/default.png')
  123.     who_liked = models.ManyToManyField(User, related_name='who_liked', blank=True,)
  124.     date = models.DateTimeField(null=True, blank=True)
  125.  
  126.  
  127. class Thread(models.Model):
  128.     id = models.AutoField(primary_key=True)
  129.     header = models.CharField(max_length=1000, null=True)
  130.     text = models.TextField(null=True, blank=True)
  131.     author = models.ManyToManyField(User, blank=True)
  132.     rating = models.FloatField(null=True, blank=True)
  133.     parent = models.OneToOneField("self", null=True, blank=True, on_delete=models.CASCADE)
  134.     up_liked = models.ManyToManyField(User, related_name='up_liked', blank=True,)
  135.     down_liked = models.ManyToManyField(User, related_name='down_liked', blank=True,)
  136.  
  137.  
  138. class Class(models.Model):
  139.     id = models.AutoField(primary_key=True)
  140.     name = models.CharField(max_length=100, null=True)
  141.     members = models.ManyToManyField("core.User", blank=True, related_name='members')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement