Spaces:
Sleeping
Sleeping
File size: 5,988 Bytes
5979dfe dd1d5ac 5979dfe dd1d5ac 5979dfe dd1d5ac 5979dfe dd1d5ac 5979dfe |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
import streamlit as st
import pandas as pd
import json
import asyncio
from datetime import datetime, timezone
from utils import validate_input, make_certificates
import pytz
async def main():
st.set_page_config(
page_title="Sertifikatlarni olish",
page_icon="๐",
layout="wide",
initial_sidebar_state="auto")
st.markdown("""
<div style='text-align: center;'>
<h1>Konferensiya ishtirokchilari uchun sertifikat tayyorlash sahifasi</h1>
</div>
""", unsafe_allow_html=True)
st.markdown("<h3 align='center'><i>Ro'yxatga olish formasi</i></h3>", unsafe_allow_html=True)
st.markdown("---")
with st.form("Birinchi formamiz", clear_on_submit=True):
fish = st.text_input("F.I.SH", placeholder="Misol: Ulug'murodov Shoh Abbos Baxodir o'g'li", help='Bu maydonda FISH kiritiladi')
maqola = st.text_input("Maqola mavzuingiz", placeholder="Misol: Ma'lumotlar xavfsizligini oshirishda blockchayn texnologiyalarning o'rni", max_chars=500, help="Bu qismda maqola mavzusi lo'nda kiritilishi kerak")
shuba = st.selectbox(
"Sho'bani tanlang",
options=(
"1-sho'ba. Ta'lim tizimini takomillashtirish: dolzarb tendensiyalar va strategik yo'nalishlar",
"2-sho'ba. Biomuhandislik va biotexnologiyalar sohasida innovatsiyalar",
"3-sho'ba. Raqamli iqtisod va innovatsion axborot-kommunikatsiya texnologiyalarini joriy etishning dolzarb masalalari",
"4-sho'ba. Psixologiya, tabiiy va aniq fanlar sohasida dolzarb tadqiqotlar",
"5-sho'ba. Zamonaviy jamiyatda filologiya, tilshunoslik va didaktika",
"6-sho'ba. Zamonaviy gumanitar ta'limning dolzarb muammolari"
),
placeholder="O'z sho'bangizni tanlang...", help="O'z sho'bangizni tanlashda qiynalsangiz konferensiya ma'muriyatiga telefon qilishingiz mumkin: https://t.me/UzMU_JF_conf_1_2_3_shuba, https://t.me/UzMU_JF_conf_4_5_6_shuba")
ustun_1, ustun_2 = st.columns(2)
email = ustun_1.text_input("Email manzilingizni kiriting", placeholder="Misol: [email protected]", help="Elektron manzil barchangizda bo'ladi degan umiddaman")
phone = ustun_2.text_input("Telefon raqam", placeholder="+998931189988", help="Telefon raqamni kiriting")
rozilik = st.checkbox("Yuqoridagi barcha ma'lumotlar to'g'ri va aniq ekanligini tasdiqlaysizmi?")
taqsdiqlash = st.form_submit_button("Sertifikat olish", type='primary')
if taqsdiqlash and rozilik:
is_valid, error_message = validate_input(fish, email, maqola, phone)
if is_valid:
try:
with open('data.json', 'r') as f:
existing_data = json.load(f)
except (FileNotFoundError, json.decoder.JSONDecodeError):
existing_data = []
# Ma'lumotlar mavjudligini tekshirish
existing_item = next((item for item in existing_data if item["F.I.SH"] == fish or item["Email"] == email or item["Telefon raqam"] == phone), None)
maqola_match = next((item for item in existing_data if item["Maqola mavzusi"] == maqola), None)
if existing_item and maqola_match:
certificate_link = existing_item["Sertifikat manzili"]
sertifikat_vaqt_utc = datetime.strptime(existing_item["Sertifikat olingan vaqt"], "%Y-%m-%d %H:%M:%S").replace(tzinfo=timezone.utc)
sertifikat_vaqt = sertifikat_vaqt_utc.astimezone(pytz.timezone('Asia/Tashkent'))
st.warning(f"Siz ro'yxatdan o'tgansiz! Pastda siz olgan sertifikat nusxasi mavjud. Sertifikat olgan sana: {sertifikat_vaqt.strftime('%Y-%m-%d %H:%M:%S')}", icon='โ ๏ธ')
st.markdown(f"[{fish}ning sertifikat fayli]({certificate_link})")
else:
sertifikat_vaqt = datetime.now(pytz.timezone('Asia/Tashkent')).strftime("%Y-%m-%d %H:%M:%S")
certificate_link = await make_certificates(fish, maqola)
st.success("Ma'lumotlar muvaffaqiyatli saqlandi", icon='๐พ')
new_entry = {
"F.I.SH": fish,
"Maqola mavzusi": maqola,
"Sho'ba": shuba,
"Email": email,
"Telefon raqam": phone,
"Sertifikat manzili": certificate_link,
"Sertifikat olingan vaqt": sertifikat_vaqt
}
existing_data.append(new_entry)
with open('data.json', 'w') as f:
json.dump(existing_data, f, indent=4)
st.markdown(f"[{fish}ning sertifikat fayli]({certificate_link})")
table = {
"F.I.SH": fish,
"Maqola mavzusi": maqola,
"Sho'ba": shuba,
"Email": email,
"Telefon raqam": phone,
"Sertifikat manzili": certificate_link,
"Sertifikat olingan vaqt": sertifikat_vaqt
}
with st.expander("Siz kiritgan ma'lumotlar bilan tanishing๐๐๐"):
st.table(table)
# Barcha ro'yxatdan o'tganlar ma'lumotlarini ko'rsatish
df = pd.DataFrame(existing_data)
with st.expander("Umumiy ro'yxat"):
# Telefon raqamlarni qisqartirib olish
df['Telefon raqam'] = df['Telefon raqam'].apply(lambda x: f"+998***{x[-4:]}")
st.dataframe(df)
else:
st.error(f"Xatolik nomi: {error_message}", icon='โ')
elif taqsdiqlash and not rozilik:
st.error("Ma'lumotlarni to'g'ri kiritilganligini tasdiqlang", icon='โ
')
if __name__ == "__main__":
asyncio.run(main())
|