klik-imt / app.py
otnielptr's picture
Upload 72 files (#1)
4e3d529
import os
import uuid
from datetime import datetime
from flask import Flask, redirect, render_template, request, session, send_file
from pysondb import db
from copy import deepcopy
from flask_session import Session
app = Flask(__name__)
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "filesystem"
Session(app)
db_users = db.getDb(os.path.join(os.path.dirname(__file__), "db", "users.json"))
db_users_admin = db.getDb(
os.path.join(os.path.dirname(__file__), "db", "users_admin.json")
)
rule_table = {
"R01": {
"result": "K02",
"rule": {"P01": True, "P02": True, "P03": True, "P04": True, "P05": True},
},
"R02": {
"result": "K02",
"rule": {"P01": True, "P02": True, "P03": True, "P04": True, "P05": False},
},
"R03": {
"result": "K02",
"rule": {"P01": True, "P02": True, "P03": True, "P04": False, "P05": True},
},
"R04": {
"result": "K02",
"rule": {"P01": True, "P02": True, "P03": False, "P04": True, "P05": True},
},
"R05": {
"result": "K02",
"rule": {"P01": True, "P02": False, "P03": True, "P04": True, "P05": True},
},
"R06": {
"result": "K01",
"rule": {"P01": False, "P02": True, "P03": True, "P04": True, "P05": True},
},
"R07": {
"result": "K02",
"rule": {"P01": True, "P02": True, "P03": True, "P04": False, "P05": False},
},
"R08": {
"result": "K02",
"rule": {"P01": True, "P02": True, "P03": False, "P04": False, "P05": True},
},
"R09": {
"result": "K02",
"rule": {"P01": True, "P02": True, "P03": False, "P04": True, "P05": False},
},
"R10": {
"result": "K02",
"rule": {"P01": True, "P02": False, "P03": False, "P04": True, "P05": True},
},
"R11": {
"result": "K01",
"rule": {"P01": False, "P02": True, "P03": False, "P04": True, "P05": True},
},
"R12": {
"result": "K01",
"rule": {"P01": False, "P02": False, "P03": True, "P04": True, "P05": True},
},
"R13": {
"result": "K01",
"rule": {"P01": False, "P02": True, "P03": True, "P04": True, "P05": False},
},
"R14": {
"result": "K02",
"rule": {"P01": True, "P02": False, "P03": True, "P04": False, "P05": True},
},
"R15": {
"result": "K02",
"rule": {"P01": True, "P02": False, "P03": True, "P04": True, "P05": False},
},
"R16": {
"result": "K01",
"rule": {"P01": False, "P02": True, "P03": True, "P04": False, "P05": True},
},
"R17": {
"result": "K02",
"rule": {"P01": True, "P02": True, "P03": False, "P04": False, "P05": False},
},
"R18": {
"result": "K02",
"rule": {"P01": True, "P02": False, "P03": False, "P04": False, "P05": True},
},
"R19": {
"result": "K01",
"rule": {"P01": False, "P02": False, "P03": False, "P04": True, "P05": True},
},
"R20": {
"result": "K02",
"rule": {"P01": True, "P02": False, "P03": True, "P04": False, "P05": False},
},
"R21": {
"result": "K01",
"rule": {"P01": False, "P02": True, "P03": False, "P04": True, "P05": False},
},
"R22": {
"result": "K01",
"rule": {"P01": False, "P02": True, "P03": False, "P04": True, "P05": False},
},
"R23": {
"result": "K01",
"rule": {"P01": False, "P02": False, "P03": True, "P04": False, "P05": True},
},
"R24": {
"result": "K01",
"rule": {"P01": False, "P02": False, "P03": True, "P04": True, "P05": False},
},
"R25": {
"result": "K02",
"rule": {"P01": True, "P02": False, "P03": False, "P04": True, "P05": False},
},
"R26": {
"result": "K01",
"rule": {"P01": False, "P02": True, "P03": False, "P04": False, "P05": True},
},
"R27": {
"result": "K01",
"rule": {"P01": False, "P02": False, "P03": False, "P04": False, "P05": True},
},
"R28": {
"result": "K01",
"rule": {"P01": False, "P02": False, "P03": False, "P04": True, "P05": False},
},
"R29": {
"result": "K01",
"rule": {"P01": False, "P02": False, "P03": True, "P04": False, "P05": False},
},
"R30": {
"result": "K01",
"rule": {"P01": False, "P02": True, "P03": False, "P04": False, "P05": False},
},
"R31": {
"result": "K01",
"rule": {"P01": True, "P02": False, "P03": False, "P04": False, "P05": False},
},
"R32": {
"result": "K01",
"rule": {"P01": False, "P02": False, "P03": False, "P04": False, "P05": False},
},
}
result_table = {
"K01": {
"detail": "Obesitas Primer",
"cause": (
"faktor genetika / turunan",
"faktor aktivitas",
"faktor pola makan",
"faktor psikis",
),
"solution": "Kenaikan berat badan diperlambat, Diet seimbang, makan dengan porsi kecil, hindari makanan dengan kalori tinggi, melakukan aktivitas fisik, dan kurangi menonton tv",
},
"K02": {
"detail": "Obesitas Sekunder",
"cause": ("faktor kesehatan",),
"solution": "Pergi ke Dokter tentang penyakit anak anda lalu kenaikan berat badan harus diperlambat, Diet seimbang, makan dengan porsi kecil, hindari makanan yang tinggi kalori, melakukan aktivitas fisik, dan kurangi menonton tv",
},
}
@app.route("/", methods=("GET",))
def index():
return render_template("index.html")
@app.route("/logout", methods=("GET",))
def logout():
session["user_session_data"] = None
return redirect("/")
@app.route("/login", methods=("GET", "POST"))
def login():
if session.get("user_session_data") is not None:
return redirect("/dashboard")
if request.method == "POST":
username = request.form["username"]
password = request.form["password"]
data_users_admin = db_users_admin.getAll()
login_success = False
for user_admin in data_users_admin:
if (
username == user_admin["username"]
and password == user_admin["password"]
):
user_session_data = deepcopy(user_admin)
user_session_data.pop("password")
session["user_session_data"] = user_session_data
login_success = True
if user_admin["role"] in ("admin", "kepala"):
return redirect("/dashboard")
else:
return redirect("/dashboard-layout-data-anak")
if not login_success:
return render_template(
"login.html", error="Invalid username or password"
)
return render_template("login.html")
@app.route("/balita/<uuid_balita>", methods=("GET",))
def balita(uuid_balita):
if session.get("user_session_data") is None:
return redirect("/login")
data_balita = db_users.getBy({"uuid": uuid_balita})[0]
nama_lengkap = data_balita["nama_lengkap"]
usia_dalam_bentuk_bulan = data_balita["usia_dalam_bentuk_bulan"]
tanggal_lahir = data_balita["tanggal_lahir"]
jenis_kelamin = data_balita["jenis_kelamin"]
berat_badan_dalam_bentuk_kg = data_balita["berat_badan_dalam_bentuk_kg"]
tinggi_badan_dalam_bentuk_cm = data_balita["tinggi_badan_dalam_bentuk_cm"]
imt = data_balita["imt"]
detail_konklusi = data_balita["detail_konklusi"] if isinstance(data_balita["detail_konklusi"], str) else data_balita["detail_konklusi"][0]
cause_konklusi = data_balita["cause_konklusi"]
solusi_konklusi = data_balita["solusi_konklusi"]
return render_template(
"card.html",
nama_lengkap=nama_lengkap,
usia_dalam_bentuk_bulan=usia_dalam_bentuk_bulan,
tanggal_lahir=tanggal_lahir,
jenis_kelamin=jenis_kelamin,
berat_badan_dalam_bentuk_kg=berat_badan_dalam_bentuk_kg,
tinggi_badan_dalam_bentuk_cm=tinggi_badan_dalam_bentuk_cm,
imt=imt,
detail_konklusi=detail_konklusi,
cause_konklusi=cause_konklusi,
solusi_konklusi=solusi_konklusi,
)
@app.route("/delete-balita/<uuid_balita>", methods=("GET",))
def delete_balita(uuid_balita):
if session.get("user_session_data") is None:
return redirect("/login")
if session.get("user_session_data").get("role") == "admin":
return redirect("/dashboard")
return redirect("/dashboard-layout-data-anak")
db_users.deleteById(uuid_balita)
return redirect(
"/dashboard-layout-data-anak",
)
@app.route("/update-balita/<id_balita>", methods=("GET", "POST"))
def update_balita(id_balita):
if session.get("user_session_data") is None:
return redirect("/")
if request.method == "GET":
data_balita = db_users.getBy({"id": int(id_balita)})[0]
nama_lengkap = data_balita["nama_lengkap"]
usia_dalam_bentuk_bulan = data_balita["usia_dalam_bentuk_bulan"]
tanggal_lahir = data_balita["tanggal_lahir"]
jenis_kelamin = data_balita["jenis_kelamin"]
berat_badan_dalam_bentuk_kg = data_balita["berat_badan_dalam_bentuk_kg"]
tinggi_badan_dalam_bentuk_cm = data_balita["tinggi_badan_dalam_bentuk_cm"]
return render_template(
"dashboard-update-data-anak.html",
nama_lengkap=nama_lengkap,
usia_dalam_bentuk_bulan=usia_dalam_bentuk_bulan,
tanggal_lahir=tanggal_lahir,
jenis_kelamin=jenis_kelamin,
berat_badan_dalam_bentuk_kg=berat_badan_dalam_bentuk_kg,
tinggi_badan_dalam_bentuk_cm=tinggi_badan_dalam_bentuk_cm,
role=session.get("user_session_data").get("role").title(),
name=session.get("user_session_data").get("name").title(),
username=session.get("user_session_data").get("username"),
)
elif request.method == "POST":
data_balita = db_users.getBy({"id": int(id_balita)})[0]
data_balita_uuid = data_balita["uuid"]
nama_lengkap = request.form["nama-lengkap"]
usia_dalam_bentuk_bulan = request.form["usia-dalam-bentuk-bulan"]
tanggal_lahir = datetime.strptime(
request.form["tanggal-lahir"], "%Y-%m-%d"
).strftime("%Y-%m-%d")
jenis_kelamin = request.form["jenis-kelamin"]
berat_badan_dalam_bentuk_kg = request.form[
"berat-badan-dalam-bentuk-kg"
]
tinggi_badan_dalam_bentuk_cm = request.form[
"tinggi-badan-dalam-bentuk-cm"
]
imt = (
float(berat_badan_dalam_bentuk_kg)
/ (float(tinggi_badan_dalam_bentuk_cm) / 100) ** 2
)
datetime_now = datetime.now().strftime("%Y-%m-%d")
db_users.updateById( id_balita,
{
"nama_lengkap": nama_lengkap,
"usia_dalam_bentuk_bulan": usia_dalam_bentuk_bulan,
"tanggal_lahir": tanggal_lahir,
"jenis_kelamin": jenis_kelamin,
"berat_badan_dalam_bentuk_kg": berat_badan_dalam_bentuk_kg,
"tinggi_badan_dalam_bentuk_cm": tinggi_badan_dalam_bentuk_cm,
"tanggal_edit": datetime_now,
}
)
return redirect("/balita/" + data_balita_uuid)
@app.route("/test-obesitas/<id_balita>", methods=("GET", "POST"))
def test_obesitas(id_balita):
if session.get("user_session_data") is None:
return redirect("/")
if session.get("user_session_data").get("role") == "kepala" or \
session.get("user_session_data").get("role") == "kader":
if session.get("user_session_data").get("role") == "kepala":
return redirect("/dashboard")
return redirect("/input-data-anak")
if request.method == "GET":
data_balita = db_users.getBy({"uuid": id_balita})
P01 = True if data_balita[0].get("P01") in [None, "ya", "YA", "Ya", "yA"] else False
P02 = True if data_balita[0].get("P02") in [None, "ya", "YA", "Ya", "yA"] else False
P03 = True if data_balita[0].get("P03") in [None, "ya", "YA", "Ya", "yA"] else False
P04 = True if data_balita[0].get("P04") in [None, "ya", "YA", "Ya", "yA"] else False
P05 = True if data_balita[0].get("P05") in [None, "ya", "YA", "Ya", "yA"] else False
return render_template(
"dashboard-test-obesitas.html",
p01=P01,
p02=P02,
p03=P03,
p04=P04,
p05=P05,
role=session.get("user_session_data").get("role").title(),
name=session.get("user_session_data").get("name").title(),
username=session.get("user_session_data").get("username"),
)
elif request.method == "POST":
data_balita = db_users.getBy({"uuid": id_balita})
P01 = True if request.form["P01"] in [None, "ya", "YA", "Ya", "yA"] else False
P02 = True if request.form["P02"] in [None, "ya", "YA", "Ya", "yA"] else False
P03 = True if request.form["P03"] in [None, "ya", "YA", "Ya", "yA"] else False
P04 = True if request.form["P04"] in [None, "ya", "YA", "Ya", "yA"] else False
P05 = True if request.form["P05"] in [None, "ya", "YA", "Ya", "yA"] else False
for keys_rule, _ in rule_table.items():
if (
rule_table[keys_rule]["rule"]["P01"] == P01
and rule_table[keys_rule]["rule"]["P02"] == P02
and rule_table[keys_rule]["rule"]["P03"] == P03
and rule_table[keys_rule]["rule"]["P04"] == P04
and rule_table[keys_rule]["rule"]["P05"] == P05
):
nama_lengkap = data_balita[0]["nama_lengkap"]
usia_dalam_bentuk_bulan = data_balita[0]["usia_dalam_bentuk_bulan"]
tanggal_lahir = data_balita[0]["tanggal_lahir"]
jenis_kelamin = data_balita[0]["jenis_kelamin"]
berat_badan_dalam_bentuk_kg = data_balita[0][
"berat_badan_dalam_bentuk_kg"
]
tinggi_badan_dalam_bentuk_cm = data_balita[0][
"tinggi_badan_dalam_bentuk_cm"
]
imt = data_balita[0]["imt"]
detail_konklusi = (
result_table[rule_table[keys_rule]["result"]]["detail"],
)
cause_konklusi = []
if P01:
cause_konklusi.append(result_table["K02"]["cause"][0])
if P02:
cause_konklusi.append(result_table["K01"]["cause"][0])
if P03:
cause_konklusi.append(result_table["K01"]["cause"][1])
if P04:
cause_konklusi.append(result_table["K01"]["cause"][2])
if P05:
cause_konklusi.append(result_table["K01"]["cause"][3])
solusi_konklusi = ""
if all([P01]):
solusi_konklusi += "Periksa ke dokter tentang penyakit anak anda."
if all([P02, P03, P04]):
solusi_konklusi += " Kenaikan berat badan diperlambat, Diet seimbang, makan dengan porsi kecil, hindari makanan dengan kalori tinggi, melakukan aktivitas fisik, dan kurangi menonton tv."
if all([P05]):
solusi_konklusi += " Konsultasi dengan psikiater atas keluhan meningkatnya keinginan makan sebagai security food."
uuid_id = data_balita[0]["uuid"]
datetime_now = datetime.now().strftime("%Y-%m-%d")
db_users.updateById(data_balita[0]["id"],
{
"uuid": uuid_id,
"nama_lengkap": nama_lengkap,
"usia_dalam_bentuk_bulan": usia_dalam_bentuk_bulan,
"tanggal_lahir": tanggal_lahir,
"jenis_kelamin": jenis_kelamin,
"berat_badan_dalam_bentuk_kg": berat_badan_dalam_bentuk_kg,
"tinggi_badan_dalam_bentuk_cm": tinggi_badan_dalam_bentuk_cm,
"imt": imt,
"detail_konklusi": detail_konklusi,
"solusi_konklusi": solusi_konklusi,
"cause_konklusi": cause_konklusi,
"tanggal_periksa": data_balita[0]["tanggal_periksa"],
"tanggal_edit": datetime_now,
"p01": P01,
"p02": P02,
"p03": P03,
"p04": P04,
"p05": P05,
}
)
return redirect("/balita/" + uuid_id)
@app.route("/dashboard", methods=("GET",))
def dashboard():
if session.get("user_session_data") is None:
return redirect("/login")
if session.get("user_session_data").get("role") == "kader" or \
session.get("user_session_data").get("role") == "bidan":
return redirect("/dashboard-layout-data-anak")
data_users = db_users.getAll()
total_data_balita_laki_laki = len(list(filter(lambda x: x["jenis_kelamin"] == "Laki-Laki", data_users)))
total_data_balita_perempuan = len(list(filter(lambda x: x["jenis_kelamin"] == "Perempuan", data_users)))
data_tanggal_periksa = {}
for data in data_users:
tanggal_periksa = data["tanggal_periksa"][0]
tanggal_periksa_split = tanggal_periksa.split("-")
if tanggal_periksa_split[0] not in data_tanggal_periksa:
data_tanggal_periksa[tanggal_periksa_split[0]] = {}
if tanggal_periksa_split[1] not in data_tanggal_periksa[tanggal_periksa_split[0]]:
data_tanggal_periksa[tanggal_periksa_split[0]][tanggal_periksa_split[1]] = 0
data_tanggal_periksa[tanggal_periksa_split[0]][tanggal_periksa_split[1]] += 1
return render_template(
"dashboard-index.html",
role=session.get("user_session_data").get("role").title(),
name=session.get("user_session_data").get("name").title(),
username=session.get("user_session_data").get("username"),
total_data_balita_laki_laki=total_data_balita_laki_laki,
total_data_balita_perempuan=total_data_balita_perempuan,
data_tanggal_periksa=data_tanggal_periksa,
)
@app.route("/dashboard-layout-kategori", methods=("GET",))
def dashboard_layout_kategori():
if session.get("user_session_data") is None:
return redirect("/login")
data_users = db_users.getAll()
cause_konklusi = []
for data in data_users:
if data["jenis_kelamin"] == "Laki-Laki":
cause_konklusi.extend(data['cause_konklusi'] if isinstance(data['cause_konklusi'], list) else [data['cause_konklusi']])
cause_konklusi = tuple(set(cause_konklusi))
total_cause_konklusi = []
for konklusi in cause_konklusi:
data = len([data for data in data_users if konklusi in data['cause_konklusi'] and data["jenis_kelamin"] == "Laki-Laki"])
total_cause_konklusi.append(data)
cause_konklusi_p = []
for data in data_users:
if data["jenis_kelamin"] == "Perempuan":
cause_konklusi_p.extend(data['cause_konklusi'] if isinstance(data['cause_konklusi'], list) else [data['cause_konklusi']])
cause_konklusi_p = tuple(set(cause_konklusi_p))
total_cause_konklusi_p = []
for konklusi in cause_konklusi_p:
data = len([data for data in data_users if konklusi in data['cause_konklusi'] and data["jenis_kelamin"] == "Perempuan"])
total_cause_konklusi_p.append(data)
return render_template(
"dashboard-layout-kategori.html",
cause_konklusi=cause_konklusi,
total_cause_konklusi=total_cause_konklusi,
cause_konklusi_p=cause_konklusi_p,
total_cause_konklusi_p=total_cause_konklusi_p,
role=session.get("user_session_data").get("role").title(),
name=session.get("user_session_data").get("name").title(),
username=session.get("user_session_data").get("username")
)
@app.route("/dashboard-layout-data-anak", methods=("GET", "POST"))
def dashboard_layout_data_anak():
if session.get("user_session_data") is None:
return redirect("/login")
if request.method == "GET":
data_users = db_users.getAll()
return render_template(
"dashboard-layout-data-anak.html",
username=session.get("user_session_data").get("username"),
role=session.get("user_session_data").get("role").title(),
name=session.get("user_session_data").get("name").title(),
data_users=data_users
)
elif request.method == "POST":
data_users = db_users.getAll()
data_users = [data for data in data_users if request.form["cari-anak"].lower() in data["nama_lengkap"].lower()]
return render_template(
"dashboard-layout-data-anak.html",
data_users=data_users,
role=session.get("user_session_data").get("role").title(),
name=session.get("user_session_data").get("name").title(),
username=session.get("user_session_data").get("username")
)
@app.route("/dashboard-layout-data-anak-export-csv", methods=("POST",))
def dashboard_layout_data_anak_export_csv():
if session.get("user_session_data") is None:
return redirect("/login")
data_users = db_users.getAll()
with open("export.csv", "w") as f:
f.write("nama_lengkap,usia,tanggal_lahir,jenis_kelamin,berat_badan (kg),tinggi_badan (cm),imt,detail_konklusi\n")
for data in data_users:
detail_konklusi = data["detail_konklusi"]
if detail_konklusi:
detail_konklusi = detail_konklusi[0].replace("[", "").replace("]", "")
f.write(
f"{data['nama_lengkap']},{data['usia_dalam_bentuk_bulan']},{data['tanggal_lahir']},{data['jenis_kelamin']},{data['berat_badan_dalam_bentuk_kg']},{data['tinggi_badan_dalam_bentuk_cm']},{data['imt']},{detail_konklusi}\n"
)
return send_file("./export.csv", as_attachment=True)
@app.route("/dashboard-input-data-anak", methods=("GET", "POST"))
def dashboard_input_data_anak():
if session.get("user_session_data") is None:
return redirect("/login")
if session.get("user_session_data").get("role") == "kepala":
return redirect("/dashboard")
if request.method == "POST":
nama_lengkap = request.form["nama-lengkap"]
usia_dalam_bentuk_bulan = request.form["usia-dalam-bentuk-bulan"]
tanggal_lahir = datetime.strptime(
request.form["tanggal-lahir"], "%Y-%m-%d"
).strftime("%Y-%m-%d")
jenis_kelamin = request.form["jenis-kelamin"]
berat_badan_dalam_bentuk_kg = request.form[
"berat-badan-dalam-bentuk-kg"
]
tinggi_badan_dalam_bentuk_cm = request.form[
"tinggi-badan-dalam-bentuk-cm"
]
imt = int((
float(berat_badan_dalam_bentuk_kg)
/ (float(tinggi_badan_dalam_bentuk_cm) / 100) ** 2
))
uuid_id = uuid.uuid4().hex
datetime_now = datetime.now().strftime("%Y-%m-%d"),
db_users.add(
{
"uuid": uuid_id,
"nama_lengkap": nama_lengkap,
"usia_dalam_bentuk_bulan": usia_dalam_bentuk_bulan,
"tanggal_lahir": tanggal_lahir,
"jenis_kelamin": jenis_kelamin,
"berat_badan_dalam_bentuk_kg": berat_badan_dalam_bentuk_kg,
"tinggi_badan_dalam_bentuk_cm": tinggi_badan_dalam_bentuk_cm,
"imt": imt,
"detail_konklusi": "Belum Periksa",
"solusi_konklusi": "Belum Periksa",
"cause_konklusi": "Belum Periksa",
"tanggal_periksa": datetime_now,
"tanggal_edit": datetime_now,
"p01": "Belum Periksa",
"p02": "Belum Periksa",
"p03": "Belum Periksa",
"p04": "Belum Periksa",
"p05": "Belum Periksa",
}
)
return redirect("/balita/" + uuid_id)
return render_template(
"dashboard-input-data-anak.html",
role=session.get("user_session_data").get("role").title(),
name=session.get("user_session_data").get("name").title(),
username=session.get("user_session_data").get("username"),
)
@app.route("/dashboard-input-data-kepala", methods=("GET", "POST"))
def dashboard_input_data_kepala():
if session.get("user_session_data") is None:
return redirect("/login")
if session.get("user_session_data").get("role") == "kader" or \
session.get("user_session_data").get("role") == "bidan":
return redirect("/dashboard-layout-data-anak")
if request.method == "POST":
data_admin = db_users_admin.getAll()
data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")]
id_data = data_admin[0]["id"]
nama_lengkap = request.form["nama-lengkap"]
tanggal_lahir = datetime.strptime(
request.form["tanggal-lahir"], "%Y-%m-%d"
).strftime("%Y-%m-%d")
jenis_kelamin = request.form["jenis-kelamin"]
alamat = request.form["alamat"]
username = request.form["username"]
password = request.form["password"]
db_users_admin.updateById(id_data, {
"name": nama_lengkap,
"tanggal_lahir": tanggal_lahir,
"jenis_kelamin": jenis_kelamin,
"alamat": alamat,
"username": username,
"password": password,
})
data_admin = db_users_admin.getAll()
data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")]
return render_template(
"dashboard-input-data-kepala.html",
role=session.get("user_session_data").get("role").title(),
name_tampil=session.get("user_session_data").get("name").title(),
nama_lengkap=data_admin[0]["name"],
tanggal_lahir=data_admin[0]["tanggal_lahir"],
jenis_kelamin=data_admin[0]["jenis_kelamin"],
alamat=data_admin[0]["alamat"],
username=data_admin[0]["username"],
password=data_admin[0]["password"],
success="Berhasil Update Akun"
)
elif request.method == "GET":
data_admin = db_users_admin.getAll()
data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")]
return render_template(
"dashboard-input-data-kepala.html",
role=session.get("user_session_data").get("role").title(),
name_tampil=session.get("user_session_data").get("name").title(),
nama_lengkap=data_admin[0]["name"],
tanggal_lahir=data_admin[0]["tanggal_lahir"],
jenis_kelamin=data_admin[0]["jenis_kelamin"],
alamat=data_admin[0]["alamat"],
username=data_admin[0]["username"],
password=data_admin[0]["password"],
)
@app.route("/dashboard-input-data-bidan", methods=("GET", "POST"))
def dashboard_input_data_bidan():
if session.get("user_session_data") is None:
return redirect("/login")
if session.get("user_session_data").get("role") == "kader" or \
session.get("user_session_data").get("role") == "kepala":
return redirect("/dashboard-layout-data-anak")
if request.method == "GET":
data_admin = db_users_admin.getAll()
data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")]
return render_template(
"dashboard-input-data-bidan.html",
role=session.get("user_session_data").get("role").title(),
name_tampil=session.get("user_session_data").get("name").title(),
nama_lengkap=data_admin[0]["name"],
tanggal_lahir=data_admin[0]["tanggal_lahir"],
jenis_kelamin=data_admin[0]["jenis_kelamin"],
alamat=data_admin[0]["alamat"],
username=data_admin[0]["username"],
password=data_admin[0]["password"],
)
elif request.method == "POST":
data_admin = db_users_admin.getAll()
data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")]
id_data = data_admin[0]["id"]
nama_lengkap = request.form["nama-lengkap"]
tanggal_lahir = datetime.strptime(
request.form["tanggal-lahir"], "%Y-%m-%d"
).strftime("%Y-%m-%d")
jenis_kelamin = request.form["jenis-kelamin"]
alamat = request.form["alamat"]
username = request.form["username"]
password = request.form["password"]
db_users_admin.updateById(id_data, {
"name": nama_lengkap,
"tanggal_lahir": tanggal_lahir,
"jenis_kelamin": jenis_kelamin,
"alamat": alamat,
"username": username,
"password": password,
})
data_admin = db_users_admin.getAll()
data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")]
return render_template(
"dashboard-input-data-bidan.html",
role=session.get("user_session_data").get("role").title(),
name_tampil=session.get("user_session_data").get("name").title(),
nama_lengkap=data_admin[0]["name"],
tanggal_lahir=data_admin[0]["tanggal_lahir"],
jenis_kelamin=data_admin[0]["jenis_kelamin"],
alamat=data_admin[0]["alamat"],
username=data_admin[0]["username"],
password=data_admin[0]["password"],
success="Berhasil Update Akun"
)
@app.route("/dashboard-add-data-kepala", methods=("GET", "POST"))
def dashboard_add_data_kepala():
if session.get("user_session_data") is None:
return redirect("/login")
if session.get("user_session_data").get("role") == "kader" or \
session.get("user_session_data").get("role") == "bidan":
return redirect("/dashboard-layout-data-anak")
if request.method == "POST":
nama_lengkap = request.form["nama-lengkap"]
tanggal_lahir = datetime.strptime(
request.form["tanggal-lahir"], "%Y-%m-%d"
).strftime("%Y-%m-%d")
jenis_kelamin = request.form["jenis-kelamin"]
alamat = request.form["alamat"]
username = request.form["username"]
password = request.form["password"]
db_users_admin.add({
"role": "kepala",
"name": nama_lengkap,
"tanggal_lahir": tanggal_lahir,
"jenis_kelamin": jenis_kelamin,
"alamat": alamat,
"username": username,
"password": password,
})
return render_template(
"dashboard-add-data-kepala.html",
role=session.get("user_session_data").get("role").title(),
name_tampil=session.get("user_session_data").get("name").title(),
success="Berhasil menambah akun"
)
elif request.method == "GET":
return render_template(
"dashboard-add-data-kepala.html",
role=session.get("user_session_data").get("role").title(),
name_tampil=session.get("user_session_data").get("name").title(),
)
@app.route("/dashboard-add-data-bidan", methods=("GET", "POST"))
def dashboard_add_data_bidan():
if session.get("user_session_data") is None:
return redirect("/login")
if session.get("user_session_data").get("role") == "kader" or \
session.get("user_session_data").get("role") == "kepala":
return redirect("/dashboard-layout-data-anak")
if request.method == "POST":
nama_lengkap = request.form["nama-lengkap"]
tanggal_lahir = datetime.strptime(
request.form["tanggal-lahir"], "%Y-%m-%d"
).strftime("%Y-%m-%d")
jenis_kelamin = request.form["jenis-kelamin"]
alamat = request.form["alamat"]
username = request.form["username"]
password = request.form["password"]
db_users_admin.add({
"role": "bidan",
"name": nama_lengkap,
"tanggal_lahir": tanggal_lahir,
"jenis_kelamin": jenis_kelamin,
"alamat": alamat,
"username": username,
"password": password,
})
return render_template(
"dashboard-add-data-bidan.html",
role=session.get("user_session_data").get("role").title(),
name_tampil=session.get("user_session_data").get("name").title(),
success="Berhasil menambah akun"
)
elif request.method == "GET":
return render_template(
"dashboard-add-data-bidan.html",
role=session.get("user_session_data").get("role").title(),
name_tampil=session.get("user_session_data").get("name").title(),
)
@app.route("/dashboard-input-data-admin", methods=("GET", "POST"))
def dashboard_input_data_admin():
if session.get("user_session_data") is None:
return redirect("/login")
if session.get("user_session_data").get("role") == "kader" or \
session.get("user_session_data").get("role") == "kepala" or \
session.get("user_session_data").get("role") == "bidan":
if session.get("user_session_data").get("role") == "kepala":
return redirect("/dashboard")
return redirect("/dashboard-layout-data-anak")
if request.method == "POST":
data_admin = db_users_admin.getAll()
data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")]
id_data = data_admin[0]["id"]
nama_lengkap = request.form["nama-lengkap"]
tanggal_lahir = datetime.strptime(
request.form["tanggal-lahir"], "%Y-%m-%d"
).strftime("%Y-%m-%d")
jenis_kelamin = request.form["jenis-kelamin"]
alamat = request.form["alamat"]
username = request.form["username"]
password = request.form["password"]
db_users_admin.updateById(id_data, {
"name": nama_lengkap,
"tanggal_lahir": tanggal_lahir,
"jenis_kelamin": jenis_kelamin,
"alamat": alamat,
"username": username,
"password": password,
})
data_admin = db_users_admin.getAll()
data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")]
return render_template(
"dashboard-input-data-admin.html",
role=session.get("user_session_data").get("role").title(),
name_tampil=session.get("user_session_data").get("name").title(),
nama_lengkap=data_admin[0]["name"],
tanggal_lahir=data_admin[0]["tanggal_lahir"],
jenis_kelamin=data_admin[0]["jenis_kelamin"],
alamat=data_admin[0]["alamat"],
username=data_admin[0]["username"],
password=data_admin[0]["password"],
success="Berhasil Update Akun"
)
elif request.method == "GET":
data_admin = db_users_admin.getAll()
data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")]
return render_template(
"dashboard-input-data-admin.html",
role=session.get("user_session_data").get("role").title(),
name_tampil=session.get("user_session_data").get("name").title(),
nama_lengkap=data_admin[0]["name"],
tanggal_lahir=data_admin[0]["tanggal_lahir"],
jenis_kelamin=data_admin[0]["jenis_kelamin"],
alamat=data_admin[0]["alamat"],
username=data_admin[0]["username"],
password=data_admin[0]["password"],
)
@app.route("/dashboard-input-data-kader", methods=("GET", "POST"))
def dashboard_input_data_kader():
if session.get("user_session_data") is None:
return redirect("/login")
if session.get("user_session_data").get("role") == "kepala" or \
session.get("user_session_data").get("role") == "bidan":
return redirect("/dashboard-layout-data-anak")
if request.method == "POST":
data_admin = db_users_admin.getAll()
data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")]
id_data = data_admin[0]["id"]
nama_lengkap = request.form["nama-lengkap"]
tanggal_lahir = datetime.strptime(
request.form["tanggal-lahir"], "%Y-%m-%d"
).strftime("%Y-%m-%d")
jenis_kelamin = request.form["jenis-kelamin"]
alamat = request.form["alamat"]
username = request.form["username"]
password = request.form["password"]
db_users_admin.updateById(id_data, {
"name": nama_lengkap,
"tanggal_lahir": tanggal_lahir,
"jenis_kelamin": jenis_kelamin,
"alamat": alamat,
"username": username,
"password": password,
})
data_admin = db_users_admin.getAll()
data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")]
return render_template(
"dashboard-input-data-kader.html",
role=session.get("user_session_data").get("role").title(),
name_tampil=session.get("user_session_data").get("name").title(),
nama_lengkap=data_admin[0]["name"],
tanggal_lahir=data_admin[0]["tanggal_lahir"],
jenis_kelamin=data_admin[0]["jenis_kelamin"],
alamat=data_admin[0]["alamat"],
username=data_admin[0]["username"],
password=data_admin[0]["password"],
success="Berhasil Update Akun"
)
elif request.method == "GET":
data_admin = db_users_admin.getAll()
data_admin = [data for data in data_admin if data["id"] == session.get("user_session_data").get("id")]
return render_template(
"dashboard-input-data-kader.html",
role=session.get("user_session_data").get("role").title(),
name_tampil=session.get("user_session_data").get("name").title(),
nama_lengkap=data_admin[0]["name"],
tanggal_lahir=data_admin[0]["tanggal_lahir"],
jenis_kelamin=data_admin[0]["jenis_kelamin"],
alamat=data_admin[0]["alamat"],
username=data_admin[0]["username"],
password=data_admin[0]["password"],
)
@app.route("/dashboard-add-data-kader", methods=("GET", "POST"))
def dashboard_add_data_kader():
if session.get("user_session_data") is None:
return redirect("/login")
if session.get("user_session_data").get("role") == "kepala" or \
session.get("user_session_data").get("role") == "bidan":
return redirect("/dashboard-layout-data-anak")
if request.method == "POST":
nama_lengkap = request.form["nama-lengkap"]
tanggal_lahir = datetime.strptime(
request.form["tanggal-lahir"], "%Y-%m-%d"
).strftime("%Y-%m-%d")
jenis_kelamin = request.form["jenis-kelamin"]
alamat = request.form["alamat"]
username = request.form["username"]
password = request.form["password"]
db_users_admin.add({
"role": "kader",
"name": nama_lengkap,
"tanggal_lahir": tanggal_lahir,
"jenis_kelamin": jenis_kelamin,
"alamat": alamat,
"username": username,
"password": password,
})
return render_template(
"dashboard-add-data-kader.html",
role=session.get("user_session_data").get("role").title(),
name_tampil=session.get("user_session_data").get("name").title(),
success="Berhasil menambah akun"
)
elif request.method == "GET":
return render_template(
"dashboard-add-data-kader.html",
role=session.get("user_session_data").get("role").title(),
name_tampil=session.get("user_session_data").get("name").title(),
)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000, debug=True)