Guest User

Untitled

a guest
Sep 22nd, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.24 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
  188.  
  189. from django import forms
  190. from django.contrib.auth.forms import AuthenticationForm
  191. from django.contrib.auth.forms import UserCreationForm
  192. from django.contrib.auth.models import AbstractUser
  193. from django.contrib.auth.models import User
  194.  
  195. from django.utils.translation import ugettext_lazy as _
  196. # from django.forms import ModelForm
  197. # from django.contrib.auth.forms import UserCreationForm
  198. # from django.contrib.auth.forms import UserChangeForm
  199. from .models import AuthUser
  200. from .models import OrgRequest
  201.  
  202. class LoginForm(AuthenticationForm):
  203. username = forms.CharField(label='Логин', max_length=30, required=True,
  204. widget=forms.TextInput(attrs={'class':'form-control','type':'text','id':'username','placeholder':'Логин'}))
  205.  
  206. password = forms.CharField(label='Пароль', max_length=30, required=True,
  207. widget=forms.TextInput(attrs={'class':'form-control','type':'password','id':'password','placeholder':'Пароль'}))
  208.  
  209. class Meta:
  210. model = User
  211. fields = ('username', 'password')
  212.  
  213.  
  214. class OrgRequestForm(forms.Form):
  215. way_to_treat = forms.CharField(label='ФИО, имя или псевдоним', max_length=120,
  216. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder':'ФИО, имя или псевдоним и т.д.'}))
  217.  
  218. org_name = forms.CharField(label='Организация', max_length=120,
  219. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder':'Наименование организации'}))
  220.  
  221. org_address = forms.CharField(label='Организация', max_length=120,
  222. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder':'Адрес организации'}))
  223.  
  224. email = forms.EmailField(label='Электронная почта', max_length=254, required=False,
  225. widget=forms.TextInput(attrs={'class':'form-control','type':'email','placeholder':'example@example.ru'}))
  226.  
  227. phone_number = forms.CharField(label='Телефонный номер', max_length=15, required=False,
  228. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder':'8-XXX-XX-XX-XXX'}))
  229.  
  230. inn_id = forms.CharField(label='ИНН', max_length=12, required=True,
  231. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder':'ИНН организации'}))
  232.  
  233. employees = forms.CharField(label='Сотрудники', max_length=50, required=True,
  234. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Кол-во заинтересованных сотрудников'}))
  235.  
  236. description = forms.CharField(label='Доп. информация', max_length=500, required=False,
  237. widget=forms.Textarea(attrs={'class':'form-control','type':'text','placeholder':'Дополнительная информация (500 символов)'}))
  238.  
  239. date = forms.CharField(label='Дата заполнения', max_length=10, required=True,
  240. widget=forms.DateInput(format=('%d.%m.%Y'), attrs={'class': 'input-group date','type':'date'}))
  241.  
  242. class Meta:
  243. model = OrgRequest
  244.  
  245.  
  246. class SignUpForm(UserCreationForm):
  247. lastname = forms.CharField(label='Фамилия', max_length=30, required=True,
  248. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Фамилия'}))
  249.  
  250. firstname = forms.CharField(label='Имя', max_length=30, required=True,
  251. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Имя'}))
  252.  
  253. patronymic = forms.CharField(label='Отчество', max_length=30, required=True,
  254. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Отчество'}))
  255.  
  256. username = forms.EmailField(label='Логин', max_length=254, required=False,
  257. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Логин'}))
  258.  
  259. email = forms.EmailField(label='Электронная почта', max_length=254, required=False,
  260. widget=forms.TextInput(attrs={'class':'form-control','type':'email', 'placeholder': 'Электронная почта'}))
  261.  
  262. org_name = forms.CharField(label='Наименование организации', max_length=30, required=True,
  263. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder':'Наименование организации'}))
  264.  
  265. org_address = forms.CharField(label='Адрес организации', max_length=30, required=True,
  266. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Адрес организации'}))
  267.  
  268. phone_number = forms.CharField(label='Номер телефона!', max_length=11, required=False,
  269. widget=forms.TextInput(attrs={'class':'form-control','placeholder':'Номер телефона'}))
  270.  
  271. birth_day = forms.CharField(label='Дата рождения', max_length=10, required=True,
  272. widget=forms.DateInput(attrs={'class': 'form-control','type': 'date'}))
  273.  
  274. inn_id = forms.CharField(label='ИНН', max_length=12, required=True,
  275. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'ИНН'}))
  276.  
  277. passport_s = forms.CharField(label='Серия паспорта', max_length=4, required=False,
  278. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Серия паспорта'}))
  279.  
  280. passport_n = forms.CharField(label='Номер паспорта', max_length=8, required=False,
  281. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Номер паспорта'}))
  282.  
  283. password1 = forms.CharField(label='Пароль',
  284. widget=forms.PasswordInput(attrs={'class':'form-control','type':'password','placeholder': 'Пароль'}))
  285.  
  286. password2 = forms.CharField(label='Пароль',
  287. widget=forms.PasswordInput(attrs={'class':'form-control','type':'password','placeholder': 'Пароль ещё раз'}))
  288.  
  289. def save(self, commit=True):
  290. # Save the provided password in hashed format
  291. user = super(SignUpForm, self).save(commit=False)
  292. user.set_password(self.cleaned_data["password"])
  293. if commit:
  294. user.save()
  295. return user
  296.  
  297. class Meta:
  298. model = AuthUser
  299. fields = ('username', 'email', 'phone_number', 'lastname', 'firstname', 'patronymic', 'birth_day', 'inn_id', 'passport_s', 'passport_n')
  300.  
  301. label = {
  302. 'username': 'Логин',
  303. 'password1': 'Пароль',
  304. 'password2': 'Пароль (ещё раз)',
  305. }
  306.  
  307. username = forms.EmailField(label='Логин', max_length=254, required=False,
  308. widget=forms.TextInput(attrs={'class':'form-control','type':'text','placeholder': 'Логин'}))
Add Comment
Please, Sign In to add comment