diff --git a/hiboo/actions.py b/hiboo/actions.py index 6b90f2e0eb5378cc5f3ce2ade1f61c4f2ee8ed18..8b458fc3a7d7f920d8494d19cce62146c2c1cee1 100644 --- a/hiboo/actions.py +++ b/hiboo/actions.py @@ -86,23 +86,3 @@ class CancelTransition(Action): def authorized(self, profile): return profile.transition_step - - -class Assign(Action): - """ Assign a claimable profile - """ - - action = "profile.assign" - label = (_("assign")) - description = (_("assign the profile to a user")) - icon="" - - def url(self, profile): - return super(Assign, self).url(profile_uuid=profile.uuid) - - def authorized(self, profile): - return ( - flask_login.current_user.is_admin and - profile.status == profile.UNCLAIMED - ) - diff --git a/hiboo/models.py b/hiboo/models.py index 84e08e09bd5718c6701010e0f5469560f7eb50d3..ab54aa3564d415849b50dab354091b5ab37993a4 100644 --- a/hiboo/models.py +++ b/hiboo/models.py @@ -253,6 +253,10 @@ class Profile(db.Model): } TRANSITIONS = { + "assign": actions.Transition("assign", + label=(_("assign")), description=(_("assign this profile to a user")), + icon="fas fa-people-arrows", from_=(UNCLAIMED,), to=ACTIVE + ), "activate": actions.Transition("activate", label=(_("activate")), description=(_("activate this profile")), icon="fas fa-user-check", from_=(REQUEST,), to=ACTIVE @@ -276,10 +280,9 @@ class Profile(db.Model): ), "purge": actions.Transition("purge", label=(_("purge")), description=(_("delete and purge this profile")), - icon="fas fa-trash", from_=(ACTIVE, BLOCKED, DELETED), to=PURGED, + icon="fas fa-trash", from_=(UNCLAIMED, ACTIVE, BLOCKED, DELETED), to=PURGED, delay=120 - ), - "assign": actions.Assign() + ) } user_uuid = db.Column(db.String(36), db.ForeignKey(User.uuid)) diff --git a/hiboo/profile/views.py b/hiboo/profile/views.py index e3886c3d5dfd17a908fbd1ee35eec6bd8f710527..4cdcafecf1025c1ffef42baba53891d0c03250ff 100644 --- a/hiboo/profile/views.py +++ b/hiboo/profile/views.py @@ -197,6 +197,9 @@ def start_transition(profile_uuid, transition_id): actor=flask_login.current_user, public=True ) + if transition_id == "assign": + user = hiboo_user.get_user(intent="profile.start_transition", profile_uuid=profile_uuid) + profile.user_uuid = user.uuid models.db.session.commit() flask.flash(_("Profile status change was requested"), "success") if transition_id == "delete" and flask_login.current_user.is_admin == False or transition_id == "purge" and not flask_login.current_user.is_admin: @@ -228,25 +231,3 @@ def complete_transition(profile_uuid): models.db.session.commit() flask.flash(_("Profile status change was completed"), "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 == models.Profile.UNCLAIMED - user = hiboo_user.get_user(intent="profile.assign", profile_uuid=profile_uuid) - profile.user_uuid = user.uuid - profile.status = models.Profile.ACTIVE - models.log( - category=models.History.STATUS, - value=models.Profile.ACTIVE, - user=user, - service=profile.service, - profile=profile, - actor=flask_login.current_user, - public=True - ) - models.db.session.commit() - flask.flash(_("Successfully assigned the profile"), "success") - return flask.redirect(flask.url_for(".details", profile_uuid=profile_uuid))