Akhmad123 commited on
Commit
7478f82
Β·
verified Β·
1 Parent(s): b206966

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +77 -37
app.py CHANGED
@@ -5,10 +5,13 @@ from datetime import datetime
5
  from pathlib import Path
6
 
7
  # ============================
8
- # USER ACCESS LIST
9
  # ============================
10
- PREMIUM_USERS = ["Akhmad123", "user_premium_1"]
11
- SUPER_USERS = ["Akhmad123", "user_super_1"]
 
 
 
12
 
13
  # ============================
14
  # LOAD TEMPLATES
@@ -108,7 +111,7 @@ def generate_variants(kind, goal, tone, audience, length, constraints, language,
108
 
109
  return variants
110
 
111
- def generate_json(username, goal, kind, tone, audience, length, constraints, language, n, tier):
112
  goal = normalize(goal, "Describe the task clearly.")
113
  tone = normalize(tone, "neutral")
114
  audience = normalize(audience, "general")
@@ -135,51 +138,89 @@ def generate_json(username, goal, kind, tone, audience, length, constraints, lan
135
  return json.dumps(data, ensure_ascii=False, indent=2)
136
 
137
  # ============================
138
- # MAIN HANDLER (LOGIN)
139
  # ============================
140
- def main_handler(request: gr.Request, goal, kind, tone, audience, length, constraints, language, n):
141
- username = request.username or "anonymous"
142
-
143
- if username in SUPER_USERS:
144
- tier = "super"
145
- elif username in PREMIUM_USERS:
146
- tier = "premium"
147
- else:
148
- tier = "free"
149
-
150
- return generate_json(username, goal, kind, tone, audience, length, constraints, language, n, tier)
151
 
152
  # ============================
153
  # UI
154
  # ============================
155
  with gr.Blocks() as demo:
156
 
157
- gr.Markdown("# πŸ” Login Required")
158
- gr.Markdown("Silakan login dengan akun HuggingFace Anda untuk melanjutkan.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
 
160
- gr.Markdown("---")
 
 
 
 
161
 
162
- gr.Markdown("# 🌟 AIPromptLab β€” JSON Output Edition")
 
 
 
 
163
 
164
- goal = gr.Textbox(label="Goal")
165
- kind = gr.Radio(["text", "image", "code"], value="text")
166
- tone = gr.Textbox(label="Tone")
167
- audience = gr.Textbox(label="Audience")
168
- length = gr.Textbox(label="Length")
169
- constraints = gr.Textbox(label="Constraints")
170
- language = gr.Textbox(label="Language", value="Indonesian")
171
- n = gr.Slider(1, 20, value=3, step=1, label="Jumlah Varian")
172
 
173
- btn = gr.Button("πŸš€ Generate JSON")
174
- out = gr.Textbox(label="Output JSON", lines=25, elem_id="json-output")
175
- copy_btn = gr.Button("Copy JSON")
176
 
177
- btn.click(
178
- main_handler,
179
- [goal, kind, tone, audience, length, constraints, language, n],
180
- out
 
181
  )
182
 
 
 
 
183
  copy_btn.click(
184
  None,
185
  None,
@@ -193,6 +234,5 @@ with gr.Blocks() as demo:
193
  demo.launch(
194
  server_name="0.0.0.0",
195
  server_port=7860,
196
- theme=gr.themes.Soft(),
197
- auth_message="Silakan login untuk menggunakan AIPromptLab."
198
  )
 
5
  from pathlib import Path
6
 
7
  # ============================
8
+ # USER DATABASE
9
  # ============================
10
+ USER_DB = {
11
+ "akhmad": {"password": "12345", "tier": "super"},
12
+ "premium_user": {"password": "abcde", "tier": "premium"},
13
+ "free_user": {"password": "00000", "tier": "free"},
14
+ }
15
 
16
  # ============================
17
  # LOAD TEMPLATES
 
111
 
112
  return variants
113
 
114
+ def generate_json(username, tier, goal, kind, tone, audience, length, constraints, language, n):
115
  goal = normalize(goal, "Describe the task clearly.")
116
  tone = normalize(tone, "neutral")
117
  audience = normalize(audience, "general")
 
138
  return json.dumps(data, ensure_ascii=False, indent=2)
139
 
140
  # ============================
141
+ # LOGIN HANDLER
142
  # ============================
143
+ def login(username, password):
144
+ if username in USER_DB and USER_DB[username]["password"] == password:
145
+ return True, USER_DB[username]["tier"], f"Login berhasil. Selamat datang, {username}!"
146
+ return False, None, "❌ Username atau password salah."
 
 
 
 
 
 
 
147
 
148
  # ============================
149
  # UI
150
  # ============================
151
  with gr.Blocks() as demo:
152
 
153
+ gr.Markdown("# πŸ” Login untuk Menggunakan AIPromptLab")
154
+
155
+ login_status = gr.State(False)
156
+ login_user = gr.State("")
157
+ login_tier = gr.State("free")
158
+
159
+ username = gr.Textbox(label="Username")
160
+ password = gr.Textbox(label="Password", type="password")
161
+ login_btn = gr.Button("Login")
162
+ login_msg = gr.Markdown("")
163
+
164
+ # ============================
165
+ # PROMPT UI (TERSEMBUNYI)
166
+ # ============================
167
+ with gr.Group(visible=False) as prompt_ui:
168
+
169
+ gr.Markdown("# 🌟 AIPromptLab β€” JSON Output Edition")
170
+
171
+ goal = gr.Textbox(label="Goal")
172
+ kind = gr.Radio(["text", "image", "code"], value="text")
173
+ tone = gr.Textbox(label="Tone")
174
+ audience = gr.Textbox(label="Audience")
175
+ length = gr.Textbox(label="Length")
176
+ constraints = gr.Textbox(label="Constraints")
177
+ language = gr.Textbox(label="Language", value="Indonesian")
178
+ n = gr.Slider(1, 20, value=3, step=1, label="Jumlah Varian")
179
+
180
+ generate_btn = gr.Button("πŸš€ Generate JSON")
181
+ output_json = gr.Textbox(label="Output JSON", lines=25, elem_id="json-output")
182
+ copy_btn = gr.Button("Copy JSON")
183
+
184
+ # ============================
185
+ # LOGIN LOGIC
186
+ # ============================
187
+ def handle_login(username, password):
188
+ ok, tier, msg = login(username, password)
189
+ return (
190
+ msg,
191
+ gr.update(visible=ok),
192
+ ok,
193
+ username if ok else "",
194
+ tier if ok else "free"
195
+ )
196
 
197
+ login_btn.click(
198
+ handle_login,
199
+ [username, password],
200
+ [login_msg, prompt_ui, login_status, login_user, login_tier]
201
+ )
202
 
203
+ # ============================
204
+ # GENERATE JSON
205
+ # ============================
206
+ def handle_generate(login_status, login_user, login_tier,
207
+ goal, kind, tone, audience, length, constraints, language, n):
208
 
209
+ if not login_status:
210
+ return "❌ Anda belum login."
 
 
 
 
 
 
211
 
212
+ return generate_json(login_user, login_tier, goal, kind, tone, audience, length, constraints, language, n)
 
 
213
 
214
+ generate_btn.click(
215
+ handle_generate,
216
+ [login_status, login_user, login_tier,
217
+ goal, kind, tone, audience, length, constraints, language, n],
218
+ output_json
219
  )
220
 
221
+ # ============================
222
+ # COPY JSON
223
+ # ============================
224
  copy_btn.click(
225
  None,
226
  None,
 
234
  demo.launch(
235
  server_name="0.0.0.0",
236
  server_port=7860,
237
+ theme=gr.themes.Soft()
 
238
  )