Danger
diff --git a/app/developer/templates/developer/client_details/referral.html b/app/developer/templates/developer/client_details/referral.html
new file mode 100644
index 00000000..753d4404
--- /dev/null
+++ b/app/developer/templates/developer/client_details/referral.html
@@ -0,0 +1,28 @@
+{% extends 'developer/client_details/base.html' %}
+
+{% set client_details_page = "referral" %}
+
+{% block client_details_content %}
+ Referral
+
+ If you are in the
referral program, you can attach a
+ referral to this website.
+ Any SimpleLogin sign up thanks to the SIWSL on your website will be counted towards this referral.
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/app/developer/views/client_detail.py b/app/developer/views/client_detail.py
index c26cea5e..aa625270 100644
--- a/app/developer/views/client_detail.py
+++ b/app/developer/views/client_detail.py
@@ -12,7 +12,7 @@ from app.db import Session
from app.developer.base import developer_bp
from app.email_utils import send_email
from app.log import LOG
-from app.models import Client, RedirectUri, File
+from app.models import Client, RedirectUri, File, Referral
from app.utils import random_string
@@ -189,3 +189,34 @@ def client_detail_advanced(client_id):
return render_template(
"developer/client_details/advanced.html", form=form, client=client
)
+
+
+@developer_bp.route("/clients//referral", methods=["GET", "POST"])
+@login_required
+def client_detail_referral(client_id):
+ client = Client.get(client_id)
+ if not client:
+ flash("no such app", "warning")
+ return redirect(url_for("developer.index"))
+
+ if client.user_id != current_user.id:
+ flash("you cannot see this app", "warning")
+ return redirect(url_for("developer.index"))
+
+ if request.method == "POST":
+ referral_id = request.form.get("referral-id")
+ if not referral_id:
+ flash("A referral must be selected", "error")
+ return redirect(request.url)
+
+ referral = Referral.get(referral_id)
+
+ if not referral or referral.user_id != current_user.id:
+ flash("something went wrong, refresh the page", "error")
+ return redirect(request.url)
+
+ client.referral_id = referral.id
+ Session.commit()
+ flash(f"Referral {referral.name} is now attached to {client.name}", "success")
+
+ return render_template("developer/client_details/referral.html", client=client)