PK!C'66dau/__init__.pydefault_app_config = 'dau.apps.DjangoAutoUserConfig' PK!9Cee dau/apps.pyfrom django.apps import AppConfig from django.db.models import signals from django.apps import apps from . import core class DjangoAutoUserConfig(AppConfig): name = 'dau' verbose_name = "Django Auto User" def ready(self): signals.post_migrate.connect(core.post_migrate_receiver,sender=apps.get_app_config(self.name)) PK!N dau/core.py import warnings from django.conf import settings from django.core.exceptions import ImproperlyConfigured from django.db.models import signals from django.apps import apps from django.db import DEFAULT_DB_ALIAS def tag(msg:str): return "{} {}{}"('[DJANGO AUTO USER]',msg,'.') def err_set(err_msg:str): raise ImproperlyConfigured(tag(err_msg)) def err_cre(err_msg:str): raise RuntimeError(err_msg) def wrn(warn_msg:str): warnings.warn(tag(warn_msg)) class DjangoAutoUser(): def __init__(self): from django.contrib.auth import get_user_model self.auto_user = getattr(settings,'DJANGO_AUTO_USER') self.user_model = get_user_model() self.USERNAME_FIELD = self.user_model.USERNAME_FIELD self.__validate() self.__create_users() def __is_valid(self,obj,typ:type): if obj and isinstance(obj,typ): return True else: return False def __validate(self): self.__settings_validation() self.__users_validation() def __settings_validation(self): if not self.__is_valid(self.auto_user,list): err_set('DJANGO_AUTO_USER settings under Django settings must be of type list but instead is of type {}'.format(str(type(self.auto_user)))) def __users_validation(self): for idx, user_entry in enumerate(self.auto_user): self.__is_valid_user(idx,user_entry) def __is_valid_user(self,idx,user_entry): if not self.__is_valid(user_entry,dict): err_set('User entry at index {} in DJANGO_AUTO_USER settings must be a non empty dictionary'.format(str(idx))) elif not self.__is_valid(getattr(user_entry,'password'),str): err_set('User entry at index {} in DJANGO_AUTO_USER settings must contain a non empty "password" field of type {}'.format(str(idx),str(type(str)))) elif not self.__is_valid(getattr(user_entry,self.USERNAME_FIELD),str): err_set('User entry at index {} in DJANGO_AUTO_USER settings must contain a non empty "{}" field of type {}'.format(str(idx),self.USERNAME_FIELD,str(type(str)))) def __create_users(self): for idx, user_entry in enumerate(self.auto_user): try: user, created = self.user_model.objects.get_or_create({self.USERNAME_FIELD:getattr(user_entry,self.USERNAME_FIELD)}) user.set_password(getattr(user_entry,"password")) for field, value in user_entry.items(): if field not in [self.USERNAME_FIELD, "password"]: if hasattr(user,field): setattr(user,field,value) else: wrn('User model does not have attribute {} defined in user entry at index {} in DJANGO_AUTO_USER settings') user.save() except Exception as error: err_cre('Could not create user entry at index {} in DJANGO_AUTO_USER settings. {}'.format(str(idx),str(error))) def post_migrate_receiver(app_config, verbosity=2, interactive=False, using=DEFAULT_DB_ALIAS, **kwargs): """ Finalize the website loading. """ DjangoAutoUser()PK!0"" dau/tests.pyfrom django.test import TestCase PK!HڽTUdau-0.1.2.dist-info/WHEEL A н#Z;/"d&F[xzw@Zpy3Fv]\fi4WZ^EgM_-]#0(q7PK!H]8Yʋdau-0.1.2.dist-info/METADATAUmo6_qC?8l*/CMQ7 NbCKg$|g ;R0$w|W^p+U)?aעr~S6u-&wNf- B5  ES(N5gZX:m$t_Lɠ ~h89=K̰͑~u9edT >nJ"|* w/ xC3g~.*a\I$EHS\@k1k?;260eS`o-o>˓Ci sc?2gnQ++2Lmf_aӍ8%TZ7O^V9Lp~;pF"{UT^Z'hF6 ,+L@d Y2uwwdBId2dACwy=F/C+ 6I#8a\rSw6%):="Ü8:no+#F-iMu כ`6Y&_n\//JV >Ď_54y;icA|Я*FZ|ևrik4L'/NV D#({+mjIšIzXj.DSOȣ 6B]!l = ` _?jqOϬ큮PP+t;5^#Pn){Ĺ4*I~El܂`2⤯íͶwƜQ*eQT0MjPK!HAeKdau-0.1.2.dist-info/RECORDmI@@ѽg)JAYvBiS)e* 8}wLL\x܌JFz@ 6|mLZC*vֶ1-#DDt+uA6`DvcD wsΒ:0k&a"q <+'Qxhڙڪw>fI<L$DbZlZ CQ͆ Bl&cyIJk&-_Ԙ]}6x'jeK̅&]:gY-rpa(OֹxiEm]5m PK!C'66dau/__init__.pyPK!9Cee cdau/apps.pyPK!N dau/core.pyPK!0"" dau/tests.pyPK!HڽTUEdau-0.1.2.dist-info/WHEELPK!H]8Yʋdau-0.1.2.dist-info/METADATAPK!HAeKdau-0.1.2.dist-info/RECORDPK