Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -15,7 +15,7 @@ logging.basicConfig(level=logging.DEBUG)
|
|
15 |
|
16 |
# Set up rate limiter
|
17 |
limiter = Limiter(
|
18 |
-
get_remote_address,
|
19 |
app=app,
|
20 |
default_limits=["5 per minute"],
|
21 |
storage_uri="memory://"
|
@@ -119,11 +119,17 @@ html_template = """
|
|
119 |
input[type="submit"]:hover, #regenerate:hover {
|
120 |
background-color: #2980b9;
|
121 |
}
|
|
|
|
|
|
|
|
|
|
|
122 |
</style>
|
123 |
</head>
|
124 |
<body>
|
125 |
<h1>Silly Detention Letter Generator</h1>
|
126 |
<div id="letter"></div>
|
|
|
127 |
<button id="regenerate" style="display: none;" onclick="regenerateLetter()">Regenerate Letter</button>
|
128 |
<form id="letterForm" onsubmit="generateLetter(event)">
|
129 |
<input type="text" name="parent_name" placeholder="Parent's Name" required>
|
@@ -145,11 +151,18 @@ html_template = """
|
|
145 |
method: 'POST',
|
146 |
body: formData
|
147 |
})
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
.then(response => {
|
149 |
const reader = response.body.getReader();
|
150 |
const decoder = new TextDecoder();
|
151 |
const letterDiv = document.getElementById('letter');
|
152 |
letterDiv.innerHTML = '';
|
|
|
153 |
|
154 |
function read() {
|
155 |
reader.read().then(({ done, value }) => {
|
@@ -164,6 +177,9 @@ html_template = """
|
|
164 |
}
|
165 |
|
166 |
read();
|
|
|
|
|
|
|
167 |
});
|
168 |
}
|
169 |
|
@@ -181,7 +197,7 @@ def home():
|
|
181 |
return render_template_string(html_template)
|
182 |
|
183 |
@app.route("/generate", methods=["POST"])
|
184 |
-
@limiter.limit("5
|
185 |
def generate():
|
186 |
parent_name = request.form["parent_name"]
|
187 |
child_name = request.form["child_name"]
|
|
|
15 |
|
16 |
# Set up rate limiter
|
17 |
limiter = Limiter(
|
18 |
+
key_func=get_remote_address,
|
19 |
app=app,
|
20 |
default_limits=["5 per minute"],
|
21 |
storage_uri="memory://"
|
|
|
119 |
input[type="submit"]:hover, #regenerate:hover {
|
120 |
background-color: #2980b9;
|
121 |
}
|
122 |
+
#error-message {
|
123 |
+
color: red;
|
124 |
+
text-align: center;
|
125 |
+
margin-top: 10px;
|
126 |
+
}
|
127 |
</style>
|
128 |
</head>
|
129 |
<body>
|
130 |
<h1>Silly Detention Letter Generator</h1>
|
131 |
<div id="letter"></div>
|
132 |
+
<div id="error-message"></div>
|
133 |
<button id="regenerate" style="display: none;" onclick="regenerateLetter()">Regenerate Letter</button>
|
134 |
<form id="letterForm" onsubmit="generateLetter(event)">
|
135 |
<input type="text" name="parent_name" placeholder="Parent's Name" required>
|
|
|
151 |
method: 'POST',
|
152 |
body: formData
|
153 |
})
|
154 |
+
.then(response => {
|
155 |
+
if (!response.ok) {
|
156 |
+
throw new Error('Slow down. Please wait 1 minute before generating another letter.');
|
157 |
+
}
|
158 |
+
return response;
|
159 |
+
})
|
160 |
.then(response => {
|
161 |
const reader = response.body.getReader();
|
162 |
const decoder = new TextDecoder();
|
163 |
const letterDiv = document.getElementById('letter');
|
164 |
letterDiv.innerHTML = '';
|
165 |
+
document.getElementById('error-message').textContent = '';
|
166 |
|
167 |
function read() {
|
168 |
reader.read().then(({ done, value }) => {
|
|
|
177 |
}
|
178 |
|
179 |
read();
|
180 |
+
})
|
181 |
+
.catch(error => {
|
182 |
+
document.getElementById('error-message').textContent = error.message;
|
183 |
});
|
184 |
}
|
185 |
|
|
|
197 |
return render_template_string(html_template)
|
198 |
|
199 |
@app.route("/generate", methods=["POST"])
|
200 |
+
@limiter.limit("5 per minute")
|
201 |
def generate():
|
202 |
parent_name = request.form["parent_name"]
|
203 |
child_name = request.form["child_name"]
|