From 6268e4db20317e02703504340fe1e1244cba519c Mon Sep 17 00:00:00 2001
From: kaiyou <pierre@jaury.eu>
Date: Wed, 26 Aug 2020 23:06:25 +0200
Subject: [PATCH] Move format to the root package

This avoids circular dependencies, as username formats are a general concept
---
 hiboo/{profile => }/format.py |  0
 hiboo/profile/login.py        |  6 +++---
 hiboo/service/forms.py        | 11 ++++++++---
 3 files changed, 11 insertions(+), 6 deletions(-)
 rename hiboo/{profile => }/format.py (100%)

diff --git a/hiboo/profile/format.py b/hiboo/format.py
similarity index 100%
rename from hiboo/profile/format.py
rename to hiboo/format.py
diff --git a/hiboo/profile/login.py b/hiboo/profile/login.py
index cd0b9e53..b6a0e242 100644
--- a/hiboo/profile/login.py
+++ b/hiboo/profile/login.py
@@ -1,5 +1,5 @@
-from hiboo.profile import blueprint, forms, formats
-from hiboo import models, utils, security
+from hiboo.profile import blueprint, forms
+from hiboo import models, utils, security, format
 from hiboo import user as hiboo_user
 from passlib import context, hash
 from flask_babel import lazy_gettext as _
@@ -25,7 +25,7 @@ def create(service_uuid, create_for=False, quick=False):
     service = models.Service.query.get(service_uuid) or flask.abort(404)
     status = models.Profile.ACTIVE
     is_admin = flask_login.current_user.is_admin
-    format = formats[service.profile_format]
+    format = format.ProfileFormat.registry[service.profile_format]
     # If the admin passed a user uuid, use that one, otherwise ignore it
     user = hiboo_user.get_user(intent="profile.create_for", create_for=None) if (create_for and is_admin) else flask_login.current_user
     # Check that profile creation is allowed
diff --git a/hiboo/service/forms.py b/hiboo/service/forms.py
index 0d57f757..cc218243 100644
--- a/hiboo/service/forms.py
+++ b/hiboo/service/forms.py
@@ -1,7 +1,7 @@
 from wtforms import validators, fields, widgets
 from flask_babel import lazy_gettext as _
 
-from hiboo import models, application, profile
+from hiboo import models, application, format
 
 import flask_wtf
 
@@ -16,8 +16,13 @@ class ServiceForm(flask_wtf.FlaskForm):
         [validators.NumberRange(1, 1000)])
     profile_format = fields.SelectField(_('Profile username format'),
         choices=(
-            [("", _("Default ({})".format(profile.formats[None].message)))] +
-            [(name, format.message.capitalize()) for name, format in profile.formats.items() if name]
+            [("", _("Default ({})".format(
+                format.ProfileFormat.registry[None].message))
+            )] +
+            [(name, format.message.capitalize())
+              for name, format in format.ProfileFormat.registry.items()
+              if name is not None
+            ]
         )
     )
     single_profile = fields.BooleanField(_('Enable single-profile behavior (no custom username, no additional profile)'))
-- 
GitLab