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
- from django import forms
- from django.contrib.auth.forms import AuthenticationForm
- from django.contrib.auth.forms import UserCreationForm
- from django.contrib.auth.models import AbstractUser
- from django.contrib.auth.models import User
- from django.utils.translation import ugettext_lazy as _
- # from django.forms import ModelForm
- # from django.contrib.auth.forms import UserCreationForm
- # from django.contrib.auth.forms import UserChangeForm
- from .models import AuthUser
- from .models import OrgRequest
- class LoginForm(AuthenticationForm):
- username = forms.CharField(label='Логин', max_length=30, required=True,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','id':'username','placeholder':'Логин'}))
- password = forms.CharField(label='Пароль', max_length=30, required=True,
- widget=forms.TextInput(attrs={'class':'form-control','type':'password','id':'password','placeholder':'Пароль'}))
- class Meta:
- model = User
- fields = ('username', 'password')
- class OrgRequestForm(forms.Form):
- way_to_treat = forms.CharField(label='ФИО, имя или псевдоним', max_length=120,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder':'ФИО, имя или псевдоним и т.д.'}))
- org_name = forms.CharField(label='Организация', max_length=120,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder':'Наименование организации'}))
- org_address = forms.CharField(label='Организация', max_length=120,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder':'Адрес организации'}))
- email = forms.EmailField(label='Электронная почта', max_length=254, required=False,
- widget=forms.TextInput(attrs={'class':'form-control','type':'email','placeholder':'example@example.ru'}))
- phone_number = forms.CharField(label='Телефонный номер', max_length=15, required=False,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder':'8-XXX-XX-XX-XXX'}))
- inn_id = forms.CharField(label='ИНН', max_length=12, required=True,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder':'ИНН организации'}))
- employees = forms.CharField(label='Сотрудники', max_length=50, required=True,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Кол-во заинтересованных сотрудников'}))
- description = forms.CharField(label='Доп. информация', max_length=500, required=False,
- widget=forms.Textarea(attrs={'class':'form-control','type':'text','placeholder':'Дополнительная информация (500 символов)'}))
- date = forms.CharField(label='Дата заполнения', max_length=10, required=True,
- widget=forms.DateInput(format=('%d.%m.%Y'), attrs={'class': 'input-group date','type':'date'}))
- class Meta:
- model = OrgRequest
- class SignUpForm(UserCreationForm):
- lastname = forms.CharField(label='Фамилия', max_length=30, required=True,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Фамилия'}))
- firstname = forms.CharField(label='Имя', max_length=30, required=True,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Имя'}))
- patronymic = forms.CharField(label='Отчество', max_length=30, required=True,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Отчество'}))
- username = forms.EmailField(label='Логин', max_length=254, required=False,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Логин'}))
- email = forms.EmailField(label='Электронная почта', max_length=254, required=False,
- widget=forms.TextInput(attrs={'class':'form-control','type':'email', 'placeholder': 'Электронная почта'}))
- org_name = forms.CharField(label='Наименование организации', max_length=30, required=True,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder':'Наименование организации'}))
- org_address = forms.CharField(label='Адрес организации', max_length=30, required=True,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Адрес организации'}))
- phone_number = forms.CharField(label='Номер телефона!', max_length=11, required=False,
- widget=forms.TextInput(attrs={'class':'form-control','placeholder':'Номер телефона'}))
- birth_day = forms.CharField(label='Дата рождения', max_length=10, required=True,
- widget=forms.DateInput(attrs={'class': 'form-control','type': 'date'}))
- inn_id = forms.CharField(label='ИНН', max_length=12, required=True,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'ИНН'}))
- passport_s = forms.CharField(label='Серия паспорта', max_length=4, required=False,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Серия паспорта'}))
- passport_n = forms.CharField(label='Номер паспорта', max_length=8, required=False,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Номер паспорта'}))
- password1 = forms.CharField(label='Пароль',
- widget=forms.PasswordInput(attrs={'class':'form-control','type':'password','placeholder': 'Пароль'}))
- password2 = forms.CharField(label='Пароль',
- widget=forms.PasswordInput(attrs={'class':'form-control','type':'password','placeholder': 'Пароль ещё раз'}))
- def save(self, commit=True):
- # Save the provided password in hashed format
- user = super(SignUpForm, self).save(commit=False)
- user.set_password(self.cleaned_data["password"])
- if commit:
- user.save()
- return user
- class Meta:
- model = AuthUser
- fields = ('username', 'email', 'phone_number', 'lastname', 'firstname', 'patronymic', 'birth_day', 'inn_id', 'passport_s', 'passport_n')
- label = {
- 'username': 'Логин',
- 'password1': 'Пароль',
- 'password2': 'Пароль (ещё раз)',
- }
- username = forms.EmailField(label='Логин', max_length=254, required=False,
- widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Логин'}))
Add Comment
Please, Sign In to add comment