untick all entries
This commit is contained in:
19
shop.py
19
shop.py
@@ -249,8 +249,6 @@ def restore_md():
|
|||||||
flash('Backup restored')
|
flash('Backup restored')
|
||||||
return redirect(url_for('show_shop',shopid=shopid))
|
return redirect(url_for('show_shop',shopid=shopid))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/toggle', methods=['POST'])
|
@app.route('/toggle', methods=['POST'])
|
||||||
def toggle_item():
|
def toggle_item():
|
||||||
if not session.get('logged_in'):
|
if not session.get('logged_in'):
|
||||||
@@ -266,23 +264,30 @@ def toggle_item():
|
|||||||
if key=='toggleAll':
|
if key=='toggleAll':
|
||||||
# Special meaning: toggle all rows
|
# Special meaning: toggle all rows
|
||||||
req_row=-1
|
req_row=-1
|
||||||
|
if key=='unTickAll':
|
||||||
|
# Special meaning: untick all rows
|
||||||
|
req_row=-2
|
||||||
if req_row==None:
|
if req_row==None:
|
||||||
return redirect(url_for('show_shop',shopid=shopid))
|
return redirect(url_for('show_shop',shopid=shopid))
|
||||||
data_dir=os.path.join(DATADIR, ownername)
|
data_dir=os.path.join(DATADIR, ownername)
|
||||||
data_file=os.path.join(data_dir, shopname+".md")
|
data_file=os.path.join(data_dir, shopname+".md")
|
||||||
|
backup=data_file+".bkp"
|
||||||
contents_file=open(data_file,'rt')
|
contents_file=open(data_file,'rt')
|
||||||
contents=contents_file.read().decode('utf-8').split("\n")
|
contents=contents_file.read().decode('utf-8').split("\n")
|
||||||
contents_file.close()
|
contents_file.close()
|
||||||
changed=False
|
changed=False
|
||||||
for i,row in enumerate(contents):
|
for i,row in enumerate(contents):
|
||||||
if i==req_row or req_row==-1:
|
if i==req_row or req_row<0:
|
||||||
if '[ ]' in row:
|
if req_row!=-2: # no ticking if unticking all
|
||||||
contents[i]=row.replace('[ ]','[x]')
|
if '[ ]' in row:
|
||||||
|
contents[i]=row.replace('[ ]','[x]')
|
||||||
if '[x]' in row:
|
if '[x]' in row:
|
||||||
contents[i]=row.replace('[x]','[ ]')
|
contents[i]=row.replace('[x]','[ ]')
|
||||||
if row!=contents[i]:
|
if row!=contents[i]:
|
||||||
changed=True
|
changed=True
|
||||||
if changed:
|
if changed:
|
||||||
|
if req_row==-1 or req_row==-2:
|
||||||
|
copyfile(data_file, backup)
|
||||||
contents_file=open(data_file,'wt')
|
contents_file=open(data_file,'wt')
|
||||||
contents_file.write("\n".join(contents).encode('utf-8'))
|
contents_file.write("\n".join(contents).encode('utf-8'))
|
||||||
contents_file.close()
|
contents_file.close()
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ hr { border-color: #377ba8; }
|
|||||||
.add-entry dl { font-weight: bold; }
|
.add-entry dl { font-weight: bold; }
|
||||||
.metanav { text-align: left; font-size: 1.2em;
|
.metanav { text-align: left; font-size: 1.2em;
|
||||||
background: #fafafa; font-weight: normal; }
|
background: #fafafa; font-weight: normal; }
|
||||||
|
.button-panel-row { margin-top: 1em; }
|
||||||
|
.button-panel-col { float: left; display: block; margin-right: 1em;
|
||||||
|
min-width: 23ex;}
|
||||||
.flash { background: #cee5F5; padding: 0.5em;
|
.flash { background: #cee5F5; padding: 0.5em;
|
||||||
border: 1px solid #aacbe2; }
|
border: 1px solid #aacbe2; }
|
||||||
.error { background: #f0d6d6; padding: 0.5em; }
|
.error { background: #f0d6d6; padding: 0.5em; }
|
||||||
|
|||||||
@@ -24,29 +24,45 @@
|
|||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
<div id="disp_add">
|
<div id="disp_add">
|
||||||
<form name="area_add" action="{{ url_for('add_items') }}" method=post class=add-entry>
|
<form name="area_add" action="{{ url_for('add_items') }}" method=post class=add-entry>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><textarea cols=40 rows=1 id=add_md name=add_md onkeyup="growTextarea('add_md')"></textarea>
|
<dt><textarea cols=40 rows=1 id=add_md name=add_md onkeyup="growTextarea('add_md')"></textarea>
|
||||||
<dt><input type=hidden name=shopid value={{ shopid }}><input class="submit submitNextTo" type=submit value="Add items">
|
<dt><input type=hidden name=shopid value={{ shopid }}><input class="submit submitNextTo" type=submit value="Add items">
|
||||||
</dl>
|
</dl>
|
||||||
</form>
|
</form>
|
||||||
<form action="{{ url_for('remove_toggled') }}" method=post class=add-entry>
|
<hr>
|
||||||
<dl><input type=hidden name=shopid value={{ shopid }}><input class=submit type=submit onclick="return confirm('Do you really want to remove ticked entries?');" value="Remove ticked">
|
<div class="button-panel-row">
|
||||||
</dl>
|
<span class="button-panel-col">
|
||||||
</form>
|
<form action="{{ url_for('toggle_item') }}" method=post>
|
||||||
<form action="{{ url_for('toggle_item') }}" method=post class=add-entry>
|
<input type=hidden name=shopid value="{{ shopid }}">
|
||||||
<dl><input type=hidden name=shopid value="{{ shopid }}"><input class=submit type=submit name=toggleAll value="Invert selection">
|
<input class=submit type=submit name=toggleAll value="Invert selection">
|
||||||
</dl>
|
</form>
|
||||||
</form>
|
</span>
|
||||||
<form action="{{ url_for('sort_flip') }}" method=post class=add-entry>
|
<span class="button-panel">
|
||||||
<dl><input type=hidden name=shopid value="{{ shopid }}">
|
<form action="{{ url_for('toggle_item') }}" method=post>
|
||||||
{% if autosort %}
|
<input type=hidden name=shopid value="{{ shopid }}">
|
||||||
<input class=submit type=submit name=toggleAll value="Autosort mode: On">
|
<input class=submit type=submit name=unTickAll value="Untick all items" onclick="return confirm('Do you really want to untick all entries?');">
|
||||||
{% else %}
|
</form>
|
||||||
<input class=submit type=submit name=toggleAll value="Autosort mode: Off">
|
</span>
|
||||||
{% endif %}
|
</div>
|
||||||
</dl>
|
<div class="button-panel-row">
|
||||||
</form>
|
<span class="button-panel-col">
|
||||||
|
<form action="{{ url_for('sort_flip') }}" method=post>
|
||||||
|
<input type=hidden name=shopid value="{{ shopid }}">
|
||||||
|
{% if autosort %}
|
||||||
|
<input class=submit type=submit name=toggleAll value="Autosort mode: On">
|
||||||
|
{% else %}
|
||||||
|
<input class=submit type=submit name=toggleAll value="Autosort mode: Off">
|
||||||
|
{% endif %}
|
||||||
|
</form>
|
||||||
|
</span>
|
||||||
|
<span class="button-panel">
|
||||||
|
<form action="{{ url_for('remove_toggled') }}" method=post>
|
||||||
|
<input type=hidden name=shopid value={{ shopid }}>
|
||||||
|
<input class=submit type=submit onclick="return confirm('Do you really want to remove ticked entries?');" value="Remove ticked">
|
||||||
|
</form>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<form id="disp_edit" class=hidden name="area_edit" action="{{ url_for('edit_md') }}" method=post class=add-entry>
|
<form id="disp_edit" class=hidden name="area_edit" action="{{ url_for('edit_md') }}" method=post class=add-entry>
|
||||||
<dl>Edit content file:
|
<dl>Edit content file:
|
||||||
|
|||||||
Reference in New Issue
Block a user