Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.db import models
- from django.contrib.postgres.fields import ArrayField
- from django.contrib.auth.base_user import BaseUserManager
- from django.contrib.auth.base_user import AbstractBaseUser
- from datetime import datetime
- from django.conf import settings
- from django.db.models.signals import post_save
- from django.dispatch import receiver
- from rest_framework.authtoken.models import Token
- import datetime
- import django.utils
- @receiver(post_save, sender=settings.AUTH_USER_MODEL)
- def create_auth_token(sender, instance=None, created=False, **kwargs):
- if created:
- Token.objects.create(user=instance)
- class UserManager(BaseUserManager):
- def create_user(self, email, username, password=None):
- if not email:
- raise ValueError("Users must have an email address")
- if not username:
- raise ValueError("Users must have an username")
- user = self.model(
- email=self.normalize_email(email),
- username=username,
- )
- user.set_password(password)
- user.save(using=self._db)
- return user
- def create_superuser(self, email, username, password):
- user = self.create_user(
- email=self.normalize_email(email),
- password=password,
- username=username,
- )
- user.is_admin = True
- user.is_staff = True
- user.is_superuser = True
- user.save(using=self._db)
- return user
- class User(AbstractBaseUser):
- # required
- username = models.CharField(max_length=30, unique=True, blank=True)
- email = models.EmailField(verbose_name="email", max_length=60, unique=True, blank=True)
- first_name = models.CharField(max_length=30, null=True, blank=True)
- last_name = models.CharField(max_length=30, null=True, blank=True)
- #optional
- image = models.ImageField(
- upload_to="profile_images/", default='profile_images/default.png', blank=True)
- rating = models.FloatField(null=True, blank=True)
- place_in_top = models.PositiveIntegerField(null=True, blank=True)
- TYPE_CHOICES = (
- (7, "7"), (8, "8"), (9, "9"), (10, "10"), (11, "11"),
- )
- grade = models.PositiveIntegerField(choices=TYPE_CHOICES, default=1)
- # system
- last_login = models.DateTimeField(verbose_name='last login', auto_now=True)
- is_admin = models.BooleanField(default=False)
- is_active = models.BooleanField(default=True)
- is_staff = models.BooleanField(default=False)
- is_superuser = models.BooleanField(default=False)
- USERNAME_FIELD = 'username'
- REQUIRED_FIELDS = ['email', ]
- objects = UserManager()
- def __str__(self):
- return self.username
- def has_perm(self, perm, obj=None):
- return self.is_admin
- def has_module_perms(self, app_label):
- return self.is_superuser
- class Event(models.Model):
- id = models.AutoField(primary_key=True)
- name = models.CharField(max_length=100, null=True)
- description = models.TextField(max_length=1000, blank=True, null=True)
- date_start = models.DateTimeField(null=True, blank=True)
- date_finish = models.DateTimeField(null=True, blank=True)
- image = models.ImageField(
- upload_to="event_images/", default='event_images/default.png', blank=True, null=True)
- is_approved = models.BooleanField(null=True)
- TYPE_CHOICES = (
- ('Event', "Мероприятие"),
- ('Lesson', "Урок"),
- )
- event_type = models.CharField(choices=TYPE_CHOICES, max_length=200, default="Мероприятие")
- hometask = ArrayField(models.CharField(max_length=200), blank=True, null=True)
- topics = ArrayField(models.CharField(max_length=200), blank=True, null=True)
- materials = ArrayField(models.URLField(), blank=True, null=True)
- possible_users = models.ManyToManyField("core.User", blank=True, related_name='possible_users')
- actual_users = models.ManyToManyField("core.User", blank=True, related_name='actual_users')
- class Image(models.Model):
- name = models.CharField(max_length=250, blank=True, null=True)
- img = models.ImageField(blank=True, null=True, upload_to='post_images')
- class Post(models.Model):
- id = models.AutoField(primary_key=True)
- header = models.CharField(max_length=1000, null=True, blank=True)
- text = models.TextField(null=True, blank=True)
- image = models.ImageField(null=True, blank=True, upload_to='post_images/', default='post_images/default.png')
- who_liked = models.ManyToManyField(User, related_name='who_liked', blank=True,)
- date = models.DateTimeField(null=True, blank=True)
- class Thread(models.Model):
- id = models.AutoField(primary_key=True)
- header = models.CharField(max_length=1000, null=True)
- text = models.TextField(null=True, blank=True)
- author = models.ManyToManyField(User, blank=True)
- rating = models.FloatField(null=True, blank=True)
- parent = models.OneToOneField("self", null=True, blank=True, on_delete=models.CASCADE)
- up_liked = models.ManyToManyField(User, related_name='up_liked', blank=True,)
- down_liked = models.ManyToManyField(User, related_name='down_liked', blank=True,)
- class Class(models.Model):
- id = models.AutoField(primary_key=True)
- name = models.CharField(max_length=100, null=True)
- members = models.ManyToManyField("core.User", blank=True, related_name='members')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement