Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- from time import timezone
- from django.db import models
- from django.contrib import admin
- from django.contrib.auth.models import User
- from django.contrib.auth.models import BaseUserManager
- from django.contrib.auth.models import AbstractBaseUser
- from django.contrib.auth.models import PermissionsMixin
- from django.core.validators import MaxLengthValidator
- from django.core.validators import MinLengthValidator
- from django.core.validators import RegexValidator
- from django.utils.translation import ugettext_lazy as _
- class TemporaryBanIp(models.Model):
- class Meta:
- db_table = 'TemporaryBanIps'
- ip_address = models.GenericIPAddressField("IP адрес")
- attempts = models.IntegerField("Неудачных попыток", default=0)
- time_unblock = models.DateTimeField("Время разблокировки", blank=True)
- status = models.BooleanField("Статус блокировки", default=False)
- def __str__(self):
- return self.ip_address
- class TemporaryBanIpAdmin(admin.ModelAdmin):
- list_display = ('ip_address', 'status', 'attempts', 'time_unblock')
- search_fields = ('ip_address',)
- class AuthUserManager(BaseUserManager):
- def create_user(self, username, email, phone_number,
- firstname, lastname, patronymic, birth_day,
- org_name, org_address,
- passport_s, passport_n, inn_id, password=None):
- if not email:
- raise ValueError('Users must have an email address')
- user = self.model(
- email=email, # AuthUserManager.normalize_email(email),
- username=username,
- phone_number=phone_number,
- firstname=firstname,
- lastname=lastname,
- patronymic=patronymic,
- birth_day=birth_day,
- org_name=org_name,
- org_address=org_address,
- passport_s=passport_s,
- passport_n=passport_n,
- inn_id=inn_id
- )
- user.is_admin = False
- # user.is_staff = False
- email = self.normalize_email(email)
- user.set_password(password)
- user.save(using=self._db)
- return user
- def create_superuser(self, **kwargs):
- user = self.create_user(**kwargs)
- user.is_admin = True
- # user.is_staff = True
- user.save(using=self._db)
- return user
- class AuthUser(AbstractBaseUser, PermissionsMixin):
- class Meta:
- db_table = 'AuthUsers'
- verbose_name = 'поле (пользователь)'
- verbose_name_plural = 'Пользователи'
- username = models.CharField(validators=[MinLengthValidator(8)], max_length=50, unique=True, verbose_name=_('username'))
- email = models.EmailField(max_length=255, unique=True, verbose_name=_('Email'))
- phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$',
- message='Телефонный номер должен состоят максимум из 15 цифр')
- phone_number = models.CharField(validators=[phone_regex], max_length=17, blank=True, verbose_name=_('Phone number'))
- firstname = models.CharField(validators=[MinLengthValidator(2)], max_length=50, blank=True, verbose_name=_('Firstname'))
- lastname = models.CharField(validators=[MinLengthValidator(2)], max_length=50, blank=True, verbose_name=_('Lastname'))
- patronymic = models.CharField(validators=[MinLengthValidator(2)], max_length=50, blank=True, verbose_name=_('Patronymic'))
- birth_day = models.DateField(verbose_name=_('Birthday'))
- org_name = models.CharField(max_length=255, blank=True, verbose_name=_('Organization name'))
- org_address = models.CharField(max_length=255, blank=True, verbose_name=_('Organization address'))
- inn_id = models.CharField(validators=[MinLengthValidator(12)], max_length=12, unique=True, blank=True, verbose_name=_('INN ID'))
- passport_s = models.CharField(validators=[MinLengthValidator(4)], max_length=4, unique=True, blank=True, verbose_name=_('Passport number'))
- passport_n = models.CharField(validators=[MinLengthValidator(8)], max_length=8, unique=True, blank=True, verbose_name=_('Passport series'))
- is_active = models.BooleanField(default=True, verbose_name=_('Online'))
- is_admin = models.BooleanField(default=False, verbose_name=_('Admin'))
- is_editor = models.BooleanField(default=False, verbose_name=_('Editor'))
- is_registrator = models.BooleanField(default=False, verbose_name=_('Registrator'))
- objects = AuthUserManager()
- USERNAME_FIELD = 'username'
- REQUIRED_FIELDS = ['lastname', 'firstname', 'patronymic', 'email', 'phone_number', 'org_name', 'org_address', 'birth_day', 'inn_id', 'passport_s', 'passport_n']
- def format_date(self, obj):
- return obj.date.strftime('%d.%m.%y')
- format_date.short_description = 'Дата'
- def get_full_name(self):
- return u'%s %s %s' % (self.firstname, self.patronymic, self.lastname)
- def get_short_name(self):
- return u'%s' % self.username
- def __str__(self):
- return self.username
- def has_perm(self, perm, obj=None):
- return True
- def has_module_perms(self, app_label):
- return True
- @property
- def is_staff(self):
- return self.is_admin
- @property
- def is_superuser(self):
- return self.is_admin
- def email_user(self, subject, message, from_email=None):
- """
- Sends an email to this User.
- """
- send_mail(subject, message, from_email, [self.email])
- class OrgRequestManager(models.Manager):
- def create(self, way_to_treat, email,
- org_name, org_address, inn_id,
- employees, description, date):
- details = self.model(
- way_to_treat=way_to_treat,
- org_name=org_name,
- org_address=org_address,
- email=email,
- inn_id=inn_id,
- employees=employees,
- description=description,
- date=date)
- details.save()
- return details
- class OrgRequest(models.Model):
- class Meta:
- db_table = 'OrgRequests'
- verbose_name = 'поле (организация)'
- verbose_name_plural = 'Заявления от организаций'
- way_to_treat = models.CharField(max_length=120, unique=False, verbose_name=_('Way to treat'))
- org_name = models.CharField(max_length=120, unique=False, verbose_name=_('Organization name'))
- org_address = models.CharField(max_length=120, unique=False, verbose_name=_('Organization address'))
- phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$',
- message='Телефонный номер должен быть введён следующим образом: "+999999999". Разрешено до 15 символов.')
- phone_number = models.CharField(validators=[phone_regex], max_length=17, blank=True, verbose_name=_('Phone number'))
- email = models.EmailField(max_length=255, unique=True, verbose_name=_('Email'))
- inn_id = models.CharField(validators=[MinLengthValidator(12)], max_length=12, unique=True, blank=True, verbose_name=_('INN ID'))
- employees = models.CharField(max_length=999, unique=False, blank=True, verbose_name=_('Employees'))
- description = models.TextField(max_length=500, unique=False, blank=True, verbose_name=_('Description'))
- date = models.DateField(auto_now=True, verbose_name=_('Date'))
- def __str__(self):
- return u'%s - %s' % (self.way_to_treat, self.org_name)
- def get_full_name(self):
- return u'%s %s [%s]' % (self.way_to_treat, self.org_name, self.org_address, self.date)
- def get_short_name(self):
- return u'%s' % self.org_name
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement