From 76bab0b5ae37f8250897f6ed0ca087a7d2232088 Mon Sep 17 00:00:00 2001
From: kaiyou <pierre@jaury.eu>
Date: Fri, 20 Mar 2020 17:33:06 +0100
Subject: [PATCH] Support assigning unclaimed profiles manually

---
 hiboo/profile/admin.py                       | 14 ++++++++++++++
 hiboo/profile/templates/profile_details.html |  2 ++
 hiboo/profile/templates/profile_list.html    |  2 ++
 3 files changed, 18 insertions(+)

diff --git a/hiboo/profile/admin.py b/hiboo/profile/admin.py
index d67d68de..fa465d2e 100644
--- a/hiboo/profile/admin.py
+++ b/hiboo/profile/admin.py
@@ -1,5 +1,6 @@
 from hiboo.profile import blueprint
 from hiboo import security, models
+from hiboo import user as hiboo_user
 from flask_babel import lazy_gettext as _
 
 import flask
@@ -56,3 +57,16 @@ def set_status(profile_uuid, status):
     models.db.session.commit()
     flask.flash(_("Profile status was successfully changed"), "success")
     return flask.redirect(flask.url_for(".details", profile_uuid=profile_uuid))
+
+
+@blueprint.route("/assign/<profile_uuid>", methods=["GET", "POST"])
+@security.admin_required()
+def assign(profile_uuid):
+    profile = models.Profile.query.get(profile_uuid) or flask.abort(404)
+    assert profile.status == "unclaimed"
+    user = hiboo_user.get_user(intent="profile.assign", profile_uuid=profile_uuid)
+    profile.user_uuid = user.uuid
+    profile.status = "active"
+    models.db.session.commit()
+    flask.flash(_("Successfully assigned the profile"), "success")
+    return flask.redirect(flask.url_for(".details", profile_uuid=profile_uuid))
diff --git a/hiboo/profile/templates/profile_details.html b/hiboo/profile/templates/profile_details.html
index e973ccba..1c446eb3 100644
--- a/hiboo/profile/templates/profile_details.html
+++ b/hiboo/profile/templates/profile_details.html
@@ -43,5 +43,7 @@
 <a href="{{ url_for("profile.set_status", profile_uuid=profile.uuid, status="active") }}" class="btn btn-success">{% trans %}Unblock profile{% endtrans %}</a>
 {% elif profile.status == "request" %}
 <a href="{{ url_for("profile.set_status", profile_uuid=profile.uuid, status="active") }}" class="btn btn-success">{% trans %}Validate profile{% endtrans %}</a>
+{% elif profile.status == "unclaimed" %}
+<a href="{{ url_for("profile.assign", profile_uuid=profile.uuid) }}" class="btn btn-info">{% trans %}Validate profile{% endtrans %}</a>
 {% endif %}
 {% endblock %}
diff --git a/hiboo/profile/templates/profile_list.html b/hiboo/profile/templates/profile_list.html
index fc4990d5..08b1e6f9 100644
--- a/hiboo/profile/templates/profile_list.html
+++ b/hiboo/profile/templates/profile_list.html
@@ -49,6 +49,8 @@
               <a href="{{ url_for("profile.set_status", profile_uuid=profile.uuid, status="active") }}">{% trans %}Unblock profile{% endtrans %}</a>
               {% elif profile.status == "request" %}
               <a href="{{ url_for("profile.set_status", profile_uuid=profile.uuid, status="active") }}">{% trans %}Validate profile{% endtrans %}</a>
+              {% elif profile.status == "unclaimed" %}
+              <a href="{{ url_for("profile.assign", profile_uuid=profile.uuid) }}">{% trans %}Assign profile{% endtrans %}</a>
               {% endif %}
             </td>
           </tr>
-- 
GitLab