Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # backends.py
- from scodb.exceptions import ApiException
- from django.conf import settings
- from scodb import ScodbConnector
- from demolay.models import User
- api = ScodbConnector(**settings.SISDM)
- keys = ['phone', 'chapter', 'convent', 'court']
- class SisdmAuthBackend:
- @staticmethod
- def parse_user(data):
- value = {key: value
- for key, value in data.items()
- if key not in keys}
- return value
- def authenticate(self, username=None, password=None):
- try:
- data = api.authenticate(username, password)
- if 'member' in data:
- user = data['member']
- data = self.parse_user(user)
- u = User(**data)
- u.is_staff = True
- u.is_superuser = True
- u.is_active = True
- return u
- else:
- return None
- except AttributeError:
- return None
- except ApiException:
- return None
- def get_user(self, user_id):
- try:
- data = api.member(user_id)
- if 'member' in data:
- user = data['member']
- data = self.parse_user(user)
- u = User(**data)
- u.is_staff = True
- u.is_superuser = True
- u.is_active = True
- return u
- else:
- return None
- except AttributeError:
- return None
- except ApiException:
- return None
- # api.authenticate(username, password) return example
- data = api.authenticate('103238', 'umasenhaai')
- print(data)
- {'member': {'cid': '103238',
- 'regularity': 'Sim',
- 'regularFor': '2019',
- 'name': 'VITOR HUGO',
- 'birthday': '01/04/2019',
- 'city': 'SÃO JOSÉ',
- 'state': 'SC',
- 'email': 'vitor.hov@gmail.com',
- 'phone': None,
- 'macom': 'Não',
- 'degree': 'DeMolay',
- 'knight': None',
- 'chapterNumber': '516',
- 'chapter': 'HERCÍLIO LUZ',
- 'conventNumber': '18',
- 'convent': 'SANTO GRAAL',
- 'initiationDate': '15/11/2015',
- 'elevationDate': '17/04/2016',
- 'investitureDate': '15/10/2016'}}
- # Models.py
- from datetime import datetime
- from django.db import models
- from django.core.mail import send_mail
- from django.contrib.auth.models import PermissionsMixin
- from django.contrib.auth.base_user import AbstractBaseUser
- from django.utils.translation import ugettext_lazy as _
- class User(AbstractBaseUser, PermissionsMixin):
- cid = models.CharField(max_length=12, unique=True)
- email = models.EmailField()
- name = models.CharField(max_length=256)
- degree = models.CharField(max_length=16)
- city = models.CharField(max_length=128)
- state = models.CharField(max_length=5)
- knight = models.CharField(max_length=256)
- chapterNumber = models.CharField(max_length=5)
- conventNumber = models.CharField(max_length=5)
- courtNumber = models.CharField(max_length=5)
- regularFor = models.CharField(max_length=6)
- _birthday = models.DateTimeField()
- _macom = models.BooleanField()
- _regular = models.BooleanField()
- _chevalierdate = models.DateTimeField()
- _initiationDate = models.DateTimeField()
- _elevationDate = models.DateTimeField()
- _investitureDate = models.DateTimeField()
- USERNAME_FIELD = 'cid'
- REQUIRED_FIELDS = []
- class Meta:
- managed = False
- verbose_name = _('user')
- verbose_name_plural = _('users')
- def get_full_name(self):
- name = '%s' % self.name
- return name.strip()
- def get_short_name(self):
- name_list = '%s' % self.name
- return name_list.split()[0]
- @property
- def regularity(self):
- return self._regular
- @regularity.setter
- def regularity(self, value):
- result = value.lower()
- if result == 'sim':
- self._regular = True
- else:
- self._regular = False
- @property
- def macom(self):
- return self._macom
- @macom.setter
- def macom(self, value):
- result = value.lower()
- if result == 'sim':
- self._macom = True
- else:
- self._macom = False
- @property
- def birthday(self):
- return self._birthday
- @birthday.setter
- def birthday(self, value):
- fmt = '%d/%m/%Y'
- obj = datetime.strptime(value, fmt)
- self._birthday = obj
- @property
- def chevalierDate(self):
- return self._chevalierdate
- @chevalierDate.setter
- def chevalierDate(self, value):
- fmt = '%d/%m/%Y'
- obj = datetime.strptime(value, fmt)
- self._chevalierdate = obj
- @property
- def initiationDate(self):
- return self._initiationDate
- @initiationDate.setter
- def initiationDate(self, value):
- fmt = '%d/%m/%Y'
- obj = datetime.strptime(value, fmt)
- self._initiationDate = obj
- @property
- def elevationDate(self):
- return self._elevationDate
- @elevationDate.setter
- def elevationDate(self, value):
- fmt = '%d/%m/%Y'
- obj = datetime.strptime(value, fmt)
- self._elevationDate = obj
- @property
- def investitureDate(self):
- return self._investitureDate
- @investitureDate.setter
- def investitureDate(self, value):
- fmt = '%d/%m/%Y'
- obj = datetime.strptime(value, fmt)
- self._investitureDate = obj
- @property
- def is_mason(self):
- return self._macom
- @property
- def is_demolay(self):
- result = '%s' % self.degree
- if result.lower() == 'demolay':
- return True
- return False
- @property
- def is_regular(self):
- return self._regular
- def email_user(self, subject, message, from_email=None, **kwargs):
- send_mail(subject, message, from_email, [self.email], **kwargs)
- def __str__(self):
- return str(self.cid)
Add Comment
Please, Sign In to add comment