Spaces:
Sleeping
Sleeping
File size: 7,059 Bytes
5979dfe b7a0842 5979dfe 432e9c8 5979dfe f79faf8 56c8d93 f79faf8 5979dfe 432e9c8 5979dfe dd1d5ac 5979dfe d873550 dd1d5ac 5979dfe dd1d5ac 5979dfe dd1d5ac 432e9c8 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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
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
#salom
# Fayl yo'li
DATA_FILE = 'data.json'
# Faylni o'qish funksiyasi
def load_data():
try:
with open(DATA_FILE, 'r') as f:
return json.load(f)
except (FileNotFoundError, json.decoder.JSONDecodeError):
return []
# Faylni yozish funksiyasi
def save_data(data):
with open(DATA_FILE, 'w') as f:
json.dump(data, f, indent=4)
async def main():
st.set_page_config(
page_title="Sertifikatlarni olish",
page_icon="๐",
layout="wide",
initial_sidebar_state="auto")
st.sidebar.title('Conferences')
st.sidebar.image('image.png')
with open("O'zMU JF_to'plam_17-18-may_2024_1-qism.pdf", "rb") as file:
btn = st.sidebar.download_button(
label="Download conferences files Part 1",
data=file,
file_name="conferences_files part1.pdf",
mime="pdf",
type='primary',
use_container_width=True
)
with open("O'zMU_JF_to'plam_17_18_may_2024_2_qism.pdf", "rb") as file:
btn = st.sidebar.download_button(
label="Download conferences files Part 2",
data=file,
file_name="conferences_files part2.pdf",
mime="pdf",
type='primary',
use_container_width=True
)
st.sidebar.link_button("๐ง About me", url='https://t.me/shohabbosdev', type='secondary')
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:
existing_data = load_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)
if existing_item:
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)
try:
save_data(existing_data)
except Exception as e:
st.error(f"Ma'lumotlarni saqlashda xatolik yuz berdi: {e}")
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())
|