L'application `petitscours` reste assez fortement couplée à `gestioncof`, et n'est pas (encore ?) faite pour être utilisée séparément. De façon similaire, et afin de minimiser de potentiels problèmes dûs à des migrations, les modèles de l'application `petitscours` utilisent `app_label = "gestioncof"` pour que Django les considère comme faisant partie de l'application `"gestioncof"`. Ils pourront être migrés dans un second temps si cela s'avère nécessaire. Les changements sont nombreux, mais assez simples: il s'agit principalement de déplacer des fichiers et changer des imports. J'ai également profité de l'occasion pour réorganiser les templates afin de les placer dans l'espace de nom "petitscours/". cof/ * settings/common.py: Add `petitscours` app * urls.py: Use `petitscours.urls` petitscours/ * __init__.py: Added. * tests/__init__.py: Added. * tests/utils.py: Added. * urls.py: Added. gestioncof/ * admin.py: * management/commands/loaddevdata.py: * models.py: * signals.py: Typo. * urls.py: Moved petitscours_patterns to petitscours.urls * petits_cours_forms.py: Moved to petitscours/forms.py * petits_cours_models.py: Moved to petitscours/models.py * petits_cours_views.py: Moved to petitscours/views.py * tests/utils.py: * tests/test_petitscours_views.py: Moved to petitscours/tests/test_petitscours_views.py * templates/base_title_petitscours.html: Moved to petitscours/templates/petitscours/base_title.html * templates/demande-petit-cours.html: Moved topetitscours/templates/petitscours/demande.html * templates/gestioncof/details_demande_petit_cours.html: Moved to petitscours/templates/petitscours/demande_detail.html * templates/petits_cours_demandes_list.html: Moved to petitscours/templates/petitscours/demande_list.html * templates/demande-petit-cours-raw.html: Moved to petitscours/templates/petitscours/demande_raw.html * templates/details_demande_petit_cours_infos.html: Moved to petitscours/templates/petitscours/details_demande_infos.html * templates/inscription-petit-cours.html: Moved to petitscours/templates/petitscours/inscription.html * templates/inscription-petit-cours-formset.html: Moved to petitscours/templates/petitscours/inscription_formset.html * templates/gestioncof/traitement_demande_petit_cours.html: Moved to petitscours/templates/petitscours/traitement_demande.html * templates/gestioncof/traitement_demande_petit_cours_autre_niveau.html: Moved to petitscours/templates/petitscours/traitement_demande_autre_niveau.html * templates/gestioncof/traitement_demande_petit_cours_success.html: Moved to petitscours/templates/petitscours/traitement_demande_success.html
69 lines
1.7 KiB
Python
69 lines
1.7 KiB
Python
from django.contrib.auth import get_user_model
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
def _create_user(username, is_cof=False, is_staff=False, attrs=None):
|
|
if attrs is None:
|
|
attrs = {}
|
|
|
|
password = attrs.pop("password", username)
|
|
|
|
user_keys = ["first_name", "last_name", "email", "is_staff", "is_superuser"]
|
|
user_attrs = {k: v for k, v in attrs.items() if k in user_keys}
|
|
|
|
profile_keys = [
|
|
"is_cof",
|
|
"login_clipper",
|
|
"phone",
|
|
"occupation",
|
|
"departement",
|
|
"type_cotiz",
|
|
"mailing_cof",
|
|
"mailing_bda",
|
|
"mailing_bda_revente",
|
|
"comments",
|
|
"is_buro",
|
|
"petit_cours_accept",
|
|
"petit_cours_remarques",
|
|
]
|
|
profile_attrs = {k: v for k, v in attrs.items() if k in profile_keys}
|
|
|
|
if is_cof:
|
|
profile_attrs["is_cof"] = True
|
|
|
|
if is_staff:
|
|
# At the moment, admin is accessible by COF staff.
|
|
user_attrs["is_staff"] = True
|
|
profile_attrs["is_buro"] = True
|
|
|
|
user = User(username=username, **user_attrs)
|
|
user.set_password(password)
|
|
user.save()
|
|
|
|
for k, v in profile_attrs.items():
|
|
setattr(user.profile, k, v)
|
|
user.profile.save()
|
|
|
|
return user
|
|
|
|
|
|
def create_user(username, attrs=None):
|
|
return _create_user(username, attrs=attrs)
|
|
|
|
|
|
def create_member(username, attrs=None):
|
|
return _create_user(username, is_cof=True, attrs=attrs)
|
|
|
|
|
|
def create_staff(username, attrs=None):
|
|
return _create_user(username, is_cof=True, is_staff=True, attrs=attrs)
|
|
|
|
|
|
def create_root(username, attrs=None):
|
|
if attrs is None:
|
|
attrs = {}
|
|
attrs.setdefault("is_staff", True)
|
|
attrs.setdefault("is_superuser", True)
|
|
return _create_user(username, attrs=attrs)
|