Compare commits

...

3 Commits

Author SHA1 Message Date
875041fa71 implement text upload 2020-01-02 08:31:27 -05:00
8cfb6aaf9a added home button to navbar 2020-01-02 07:56:04 -05:00
72494719b5 selected tab border 2020-01-02 07:46:30 -05:00
5 changed files with 43 additions and 3 deletions

View File

@ -41,6 +41,12 @@ async def index(request):
files.append(handle_filefield(filefield, rand_name=rand_name)) files.append(handle_filefield(filefield, rand_name=rand_name))
if data.get('url'): if data.get('url'):
files.append(handle_url(data.get('url'), rand_name=rand_name)) files.append(handle_url(data.get('url'), rand_name=rand_name))
if data.get('text'):
files.append(handle_text(
data.get('text'),
data.get('text_filename', ''),
rand_name=rand_name)
)
if data.get('delete_this'): if data.get('delete_this'):
delete_num = data.get('delete_num', '') delete_num = data.get('delete_num', '')
@ -134,6 +140,25 @@ def handle_url(url, rand_name=True):
return tup return tup
def handle_text(text, filename, rand_name=True):
"""Handles a posted text field."""
filename = safe_filename(filename)
if not filename:
rand_name = True
prefix = get_rand_chars()
if rand_name:
filename = prefix + os.path.splitext(filename)[1]
else:
filename = prefix + '_' + filename
filename = filename + '.txt'
with open(os.path.join(config.upload_dir, filename), 'w') as file:
file.write(text)
tup = (prefix, filename)
return tup
def safe_filename(filename=''): def safe_filename(filename=''):
"""Sanitizes the given filename.""" """Sanitizes the given filename."""
safe_char = string.ascii_letters + string.digits + '._ ' safe_char = string.ascii_letters + string.digits + '._ '

View File

@ -82,6 +82,7 @@ section {
color: black; color: black;
border: 1px solid darkgray; border: 1px solid darkgray;
border-bottom: none; border-bottom: none;
box-shadow: 0 1px 0 gainsboro;
} }
.tabWindow { .tabWindow {

View File

@ -11,3 +11,12 @@ function switchFileTab(span, window_id) {
let tab_window = document.querySelector('#' + window_id); let tab_window = document.querySelector('#' + window_id);
tab_window.classList.add('tabWindowSelected'); tab_window.classList.add('tabWindowSelected');
} }
function disable_text_filename(checkbox) {
let input = document.querySelector('#text_filename');
if (checkbox.checked) {
input.disabled = true;
} else {
input.disabled = false;
}
}

View File

@ -2,4 +2,7 @@
<object id="logo" title="Saddle Logo" data="/static/saddle.svg"></object> <object id="logo" title="Saddle Logo" data="/static/saddle.svg"></object>
<h1>Saddle</h1> <h1>Saddle</h1>
</div> </div>
<nav><span><a href="./gallery/{{ request.cookies.get('userid') }}">Gallery</a></span></nav> <nav>
<span><a href="{{ url('index') }}">Home</a></span>
<span><a href="{{ url('gallery', user_id=request.cookies.get('userid')) }}">Gallery</a></span>
</nav>

View File

@ -27,10 +27,12 @@
<input type="url" name="url" placeholder="URL"><br> <input type="url" name="url" placeholder="URL"><br>
</div> </div>
<div id="textTabWindow" class="tabWindow"> <div id="textTabWindow" class="tabWindow">
Imagine actually using this feature. <label for="text_filename">Filename:</label>
<input type="text" name="text_filename" id="text_filename" required disabled><br>
<textarea name="text"></textarea>
</div> </div>
</div> </div>
<input type="checkbox" name="rand_name" id="rand_name" checked> <input type="checkbox" name="rand_name" id="rand_name" onchange="disable_text_filename(this)" checked>
<label for="rand_name">Generate random filename.</label><br> <label for="rand_name">Generate random filename.</label><br>
<input type="hidden" name="response_type" value="html"> <input type="hidden" name="response_type" value="html">
<input type="checkbox" name="delete_this" id="delete_this"> <input type="checkbox" name="delete_this" id="delete_this">