Guest User

Untitled

a guest
Jan 2nd, 2019
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.82 KB | None | 0 0
  1. # backends.py
  2. from scodb.exceptions import ApiException
  3. from django.conf import settings
  4. from scodb import ScodbConnector
  5.  
  6. from demolay.models import User
  7.  
  8.  
  9. api = ScodbConnector(**settings.SISDM)
  10. keys = ['phone', 'chapter', 'convent', 'court']
  11.  
  12. class SisdmAuthBackend:
  13. @staticmethod
  14. def parse_user(data):
  15. value = {key: value
  16. for key, value in data.items()
  17. if key not in keys}
  18.  
  19. return value
  20.  
  21. def authenticate(self, username=None, password=None):
  22. try:
  23. data = api.authenticate(username, password)
  24.  
  25. if 'member' in data:
  26. user = data['member']
  27. data = self.parse_user(user)
  28. u = User(**data)
  29. u.is_staff = True
  30. u.is_superuser = True
  31. u.is_active = True
  32.  
  33. return u
  34.  
  35. else:
  36. return None
  37.  
  38. except AttributeError:
  39. return None
  40.  
  41. except ApiException:
  42. return None
  43.  
  44. def get_user(self, user_id):
  45. try:
  46. data = api.member(user_id)
  47.  
  48. if 'member' in data:
  49. user = data['member']
  50. data = self.parse_user(user)
  51. u = User(**data)
  52. u.is_staff = True
  53. u.is_superuser = True
  54. u.is_active = True
  55.  
  56. return u
  57.  
  58. else:
  59. return None
  60.  
  61. except AttributeError:
  62. return None
  63.  
  64. except ApiException:
  65. return None
  66.  
  67. # api.authenticate(username, password) return example
  68. data = api.authenticate('103238', 'umasenhaai')
  69. print(data)
  70. {'member': {'cid': '103238',
  71. 'regularity': 'Sim',
  72. 'regularFor': '2019',
  73. 'name': 'VITOR HUGO',
  74. 'birthday': '01/04/2019',
  75. 'city': 'SÃO JOSÉ',
  76. 'state': 'SC',
  77. 'email': 'vitor.hov@gmail.com',
  78. 'phone': None,
  79. 'macom': 'Não',
  80. 'degree': 'DeMolay',
  81. 'knight': None',
  82. 'chapterNumber': '516',
  83. 'chapter': 'HERCÍLIO LUZ',
  84. 'conventNumber': '18',
  85. 'convent': 'SANTO GRAAL',
  86. 'initiationDate': '15/11/2015',
  87. 'elevationDate': '17/04/2016',
  88. 'investitureDate': '15/10/2016'}}
  89.  
  90. # Models.py
  91. from datetime import datetime
  92.  
  93. from django.db import models
  94. from django.core.mail import send_mail
  95. from django.contrib.auth.models import PermissionsMixin
  96. from django.contrib.auth.base_user import AbstractBaseUser
  97. from django.utils.translation import ugettext_lazy as _
  98.  
  99.  
  100. class User(AbstractBaseUser, PermissionsMixin):
  101. cid = models.CharField(max_length=12, unique=True)
  102. email = models.EmailField()
  103. name = models.CharField(max_length=256)
  104. degree = models.CharField(max_length=16)
  105. city = models.CharField(max_length=128)
  106. state = models.CharField(max_length=5)
  107. knight = models.CharField(max_length=256)
  108. chapterNumber = models.CharField(max_length=5)
  109. conventNumber = models.CharField(max_length=5)
  110. courtNumber = models.CharField(max_length=5)
  111. regularFor = models.CharField(max_length=6)
  112. _birthday = models.DateTimeField()
  113. _macom = models.BooleanField()
  114. _regular = models.BooleanField()
  115. _chevalierdate = models.DateTimeField()
  116. _initiationDate = models.DateTimeField()
  117. _elevationDate = models.DateTimeField()
  118. _investitureDate = models.DateTimeField()
  119.  
  120. USERNAME_FIELD = 'cid'
  121. REQUIRED_FIELDS = []
  122.  
  123. class Meta:
  124. managed = False
  125. verbose_name = _('user')
  126. verbose_name_plural = _('users')
  127.  
  128. def get_full_name(self):
  129. name = '%s' % self.name
  130. return name.strip()
  131.  
  132. def get_short_name(self):
  133. name_list = '%s' % self.name
  134. return name_list.split()[0]
  135.  
  136. @property
  137. def regularity(self):
  138. return self._regular
  139.  
  140. @regularity.setter
  141. def regularity(self, value):
  142. result = value.lower()
  143. if result == 'sim':
  144. self._regular = True
  145.  
  146. else:
  147. self._regular = False
  148.  
  149. @property
  150. def macom(self):
  151. return self._macom
  152.  
  153. @macom.setter
  154. def macom(self, value):
  155. result = value.lower()
  156. if result == 'sim':
  157. self._macom = True
  158.  
  159. else:
  160. self._macom = False
  161.  
  162. @property
  163. def birthday(self):
  164. return self._birthday
  165.  
  166. @birthday.setter
  167. def birthday(self, value):
  168. fmt = '%d/%m/%Y'
  169. obj = datetime.strptime(value, fmt)
  170. self._birthday = obj
  171.  
  172. @property
  173. def chevalierDate(self):
  174. return self._chevalierdate
  175.  
  176. @chevalierDate.setter
  177. def chevalierDate(self, value):
  178. fmt = '%d/%m/%Y'
  179. obj = datetime.strptime(value, fmt)
  180. self._chevalierdate = obj
  181.  
  182. @property
  183. def initiationDate(self):
  184. return self._initiationDate
  185.  
  186. @initiationDate.setter
  187. def initiationDate(self, value):
  188. fmt = '%d/%m/%Y'
  189. obj = datetime.strptime(value, fmt)
  190. self._initiationDate = obj
  191.  
  192. @property
  193. def elevationDate(self):
  194. return self._elevationDate
  195.  
  196. @elevationDate.setter
  197. def elevationDate(self, value):
  198. fmt = '%d/%m/%Y'
  199. obj = datetime.strptime(value, fmt)
  200. self._elevationDate = obj
  201.  
  202. @property
  203. def investitureDate(self):
  204. return self._investitureDate
  205.  
  206. @investitureDate.setter
  207. def investitureDate(self, value):
  208. fmt = '%d/%m/%Y'
  209. obj = datetime.strptime(value, fmt)
  210. self._investitureDate = obj
  211.  
  212. @property
  213. def is_mason(self):
  214. return self._macom
  215.  
  216. @property
  217. def is_demolay(self):
  218. result = '%s' % self.degree
  219. if result.lower() == 'demolay':
  220. return True
  221. return False
  222.  
  223. @property
  224. def is_regular(self):
  225. return self._regular
  226.  
  227. def email_user(self, subject, message, from_email=None, **kwargs):
  228. send_mail(subject, message, from_email, [self.email], **kwargs)
  229.  
  230. def __str__(self):
  231. return str(self.cid)
Add Comment
Please, Sign In to add comment