Advertisement
Guest User

model

a guest
Jul 30th, 2018
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.74 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. from time import timezone
  4. from django.db import models
  5.  
  6. from django.contrib import admin
  7. from django.contrib.auth.models import User
  8. from django.contrib.auth.models import BaseUserManager
  9. from django.contrib.auth.models import AbstractBaseUser
  10. from django.contrib.auth.models import PermissionsMixin
  11.  
  12. from django.core.validators import MaxLengthValidator
  13. from django.core.validators import MinLengthValidator
  14. from django.core.validators import RegexValidator
  15.  
  16. from django.utils.translation import ugettext_lazy as _
  17.  
  18. class TemporaryBanIp(models.Model):
  19.     class Meta:
  20.         db_table = 'TemporaryBanIps'
  21.  
  22.     ip_address = models.GenericIPAddressField("IP адрес")
  23.     attempts = models.IntegerField("Неудачных попыток", default=0)
  24.     time_unblock = models.DateTimeField("Время разблокировки", blank=True)
  25.     status = models.BooleanField("Статус блокировки", default=False)
  26.  
  27.     def __str__(self):
  28.         return self.ip_address
  29.  
  30.  
  31. class TemporaryBanIpAdmin(admin.ModelAdmin):
  32.     list_display = ('ip_address', 'status', 'attempts', 'time_unblock')
  33.     search_fields = ('ip_address',)
  34.  
  35.  
  36. class AuthUserManager(BaseUserManager):
  37.     def create_user(self, username, email, phone_number,
  38.                     firstname, lastname, patronymic, birth_day,
  39.                     org_name, org_address,
  40.                     passport_s, passport_n, inn_id, password=None):
  41.  
  42.         if not email:
  43.             raise ValueError('Users must have an email address')
  44.        
  45.         user = self.model(
  46.             email=email, # AuthUserManager.normalize_email(email),
  47.             username=username,
  48.             phone_number=phone_number,
  49.             firstname=firstname,
  50.             lastname=lastname,
  51.             patronymic=patronymic,
  52.             birth_day=birth_day,
  53.             org_name=org_name,
  54.             org_address=org_address,
  55.             passport_s=passport_s,
  56.             passport_n=passport_n,
  57.             inn_id=inn_id
  58.         )
  59.  
  60.         user.is_admin = False
  61.         # user.is_staff = False
  62.         email = self.normalize_email(email)
  63.         user.set_password(password)
  64.         user.save(using=self._db)
  65.        
  66.         return user
  67.    
  68.     def create_superuser(self, **kwargs):
  69.         user = self.create_user(**kwargs)
  70.        
  71.         user.is_admin = True
  72.         # user.is_staff = True
  73.         user.save(using=self._db)
  74.  
  75.         return user
  76.  
  77.  
  78. class AuthUser(AbstractBaseUser, PermissionsMixin):
  79.     class Meta:
  80.         db_table = 'AuthUsers'
  81.         verbose_name = 'поле (пользователь)'
  82.         verbose_name_plural = 'Пользователи'
  83.  
  84.     username = models.CharField(validators=[MinLengthValidator(8)], max_length=50, unique=True, verbose_name=_('username'))
  85.     email = models.EmailField(max_length=255, unique=True, verbose_name=_('Email'))
  86.     phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$',
  87.         message='Телефонный номер должен состоят максимум из 15 цифр')
  88.     phone_number = models.CharField(validators=[phone_regex], max_length=17, blank=True, verbose_name=_('Phone number'))
  89.     firstname = models.CharField(validators=[MinLengthValidator(2)], max_length=50, blank=True, verbose_name=_('Firstname'))
  90.     lastname = models.CharField(validators=[MinLengthValidator(2)], max_length=50, blank=True, verbose_name=_('Lastname'))
  91.     patronymic = models.CharField(validators=[MinLengthValidator(2)], max_length=50, blank=True, verbose_name=_('Patronymic'))
  92.  
  93.     birth_day = models.DateField(verbose_name=_('Birthday'))
  94.     org_name = models.CharField(max_length=255, blank=True, verbose_name=_('Organization name'))
  95.     org_address = models.CharField(max_length=255, blank=True, verbose_name=_('Organization address'))
  96.     inn_id = models.CharField(validators=[MinLengthValidator(12)], max_length=12, unique=True, blank=True, verbose_name=_('INN ID'))
  97.     passport_s = models.CharField(validators=[MinLengthValidator(4)], max_length=4, unique=True, blank=True, verbose_name=_('Passport number'))
  98.     passport_n = models.CharField(validators=[MinLengthValidator(8)], max_length=8, unique=True, blank=True, verbose_name=_('Passport series'))
  99.  
  100.     is_active = models.BooleanField(default=True, verbose_name=_('Online'))
  101.     is_admin = models.BooleanField(default=False, verbose_name=_('Admin'))
  102.     is_editor = models.BooleanField(default=False, verbose_name=_('Editor'))
  103.     is_registrator = models.BooleanField(default=False, verbose_name=_('Registrator'))
  104.  
  105.     objects = AuthUserManager()
  106.  
  107.     USERNAME_FIELD = 'username'
  108.     REQUIRED_FIELDS = ['lastname', 'firstname', 'patronymic', 'email', 'phone_number', 'org_name', 'org_address', 'birth_day', 'inn_id', 'passport_s', 'passport_n']
  109.  
  110.     def format_date(self, obj):
  111.         return obj.date.strftime('%d.%m.%y')
  112.     format_date.short_description = 'Дата'
  113.  
  114.     def get_full_name(self):
  115.         return u'%s %s %s' % (self.firstname, self.patronymic, self.lastname)
  116.  
  117.     def get_short_name(self):
  118.         return u'%s' % self.username
  119.    
  120.     def __str__(self):
  121.         return self.username
  122.    
  123.     def has_perm(self, perm, obj=None):
  124.         return True
  125.  
  126.     def has_module_perms(self, app_label):
  127.         return True
  128.  
  129.     @property
  130.     def is_staff(self):
  131.         return self.is_admin
  132.  
  133.     @property
  134.     def is_superuser(self):
  135.         return self.is_admin
  136.  
  137.     def email_user(self, subject, message, from_email=None):
  138.         """
  139.        Sends an email to this User.
  140.        """
  141.         send_mail(subject, message, from_email, [self.email])  
  142.  
  143.  
  144. class OrgRequestManager(models.Manager):
  145.     def create(self, way_to_treat, email,
  146.                 org_name, org_address, inn_id,
  147.                 employees, description, date):
  148.  
  149.         details = self.model(
  150.             way_to_treat=way_to_treat,
  151.             org_name=org_name,
  152.             org_address=org_address,
  153.             email=email,
  154.             inn_id=inn_id,
  155.             employees=employees,
  156.             description=description,
  157.             date=date)
  158.         details.save()
  159.  
  160.         return details
  161.  
  162. class OrgRequest(models.Model):
  163.     class Meta:
  164.         db_table = 'OrgRequests'
  165.         verbose_name = 'поле (организация)'
  166.         verbose_name_plural = 'Заявления от организаций'
  167.  
  168.     way_to_treat = models.CharField(max_length=120, unique=False, verbose_name=_('Way to treat'))
  169.     org_name = models.CharField(max_length=120, unique=False, verbose_name=_('Organization name'))
  170.     org_address = models.CharField(max_length=120, unique=False, verbose_name=_('Organization address'))
  171.     phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$',
  172.         message='Телефонный номер должен быть введён следующим образом: "+999999999". Разрешено до 15 символов.')
  173.     phone_number = models.CharField(validators=[phone_regex], max_length=17, blank=True, verbose_name=_('Phone number'))
  174.     email = models.EmailField(max_length=255, unique=True, verbose_name=_('Email'))
  175.     inn_id = models.CharField(validators=[MinLengthValidator(12)], max_length=12, unique=True, blank=True, verbose_name=_('INN ID'))
  176.     employees = models.CharField(max_length=999, unique=False, blank=True, verbose_name=_('Employees'))
  177.     description = models.TextField(max_length=500, unique=False, blank=True, verbose_name=_('Description'))
  178.     date = models.DateField(auto_now=True, verbose_name=_('Date'))
  179.  
  180.     def __str__(self):
  181.         return u'%s - %s' % (self.way_to_treat, self.org_name)
  182.  
  183.     def get_full_name(self):
  184.         return u'%s %s [%s]' % (self.way_to_treat, self.org_name, self.org_address, self.date)
  185.  
  186.     def get_short_name(self):
  187.         return u'%s' % self.org_name
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement