Initial commit: Key Ajans portfolio site

This commit is contained in:
kayasamat
2026-08-07 17:46:14 +03:00
commit 91bb52bce4
18 changed files with 1656 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
"""Kullanıcı talepleri: gönderim (herkes) + admin gelen kutusu."""
from flask import Blueprint, abort, flash, redirect, render_template, request, session, url_for
import security
from db import get_db
request_bp = Blueprint("talepler", __name__)
SUBJECT_MAX = 150
BODY_MAX = 5000
NAME_MAX = 100
@request_bp.get("/talep")
def new_talep():
return render_template(
"new_talep.html",
prefill_name=session.get("name", ""),
prefill_email=session.get("email", ""),
)
@request_bp.post("/talep")
@security.rate_limited("talep", 6, 900)
def do_talep():
sender_name = security.clean_text(request.form.get("sender_name"), NAME_MAX)
sender_email = security.validate_email(request.form.get("sender_email"))
subject = security.clean_text(request.form.get("subject"), SUBJECT_MAX)
body = security.clean_multiline(request.form.get("body"), BODY_MAX)
if not sender_name:
flash("Adınızı yazmalısınız.", "error")
return redirect(url_for("talepler.new_talep"))
if sender_email is None:
flash("Geçerli bir e-posta adresi girin.", "error")
return redirect(url_for("talepler.new_talep"))
if not subject:
flash("Talep başlığı zorunlu.", "error")
return redirect(url_for("talepler.new_talep"))
if not body:
flash("Talep açıklaması boş olamaz.", "error")
return redirect(url_for("talepler.new_talep"))
db = get_db()
db.execute(
"INSERT INTO requests (sender_name, sender_email, subject, body) VALUES (?, ?, ?, ?)",
(sender_name, sender_email, subject, body),
)
db.commit()
flash("Talebiniz iletildi. Teşekkürler!", "success")
return redirect(url_for("index"))
@request_bp.get("/admin/talepler")
def admin_inbox():
if session.get("role") != "admin":
abort(403)
db = get_db()
requests = db.execute(
"SELECT * FROM requests ORDER BY created_at DESC"
).fetchall()
return render_template("admin/requests.html", requests=requests)
@request_bp.post("/admin/talepler/<int:rid>/sil")
def admin_delete(rid):
if session.get("role") != "admin":
abort(403)
db = get_db()
db.execute("DELETE FROM requests WHERE id = ?", (rid,))
db.commit()
flash("Talep silindi.", "info")
return redirect(url_for("talepler.admin_inbox"))