diff --git a/shop.py b/shop.py index c8cabfb..d3b5d3f 100644 --- a/shop.py +++ b/shop.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # all the imports import sqlite3, time, datetime, hashlib, os,re -from shutil import copyfile +from shutil import copyfile, move from flask import Flask, request, session, g, redirect, url_for, \ abort, render_template, flash from revprox import ReverseProxied @@ -200,6 +200,28 @@ def edit_md(): flash('Saved new file.') return redirect(url_for('show_shop',shopid=shopid)) +@app.route('/restore', methods=['POST']) +def restore_md(): + if not session.get('logged_in'): + abort(401) + shopid=int(request.form['shopid']) + ownerid=g.db.execute('select owner from shops where id=?',request.form['shopid']).fetchall()[0][0] + shopname=g.db.execute('select shop from shops where id=?',request.form['shopid']).fetchall()[0][0] + ownername=get_username(ownerid) + data_dir=os.path.join(DATADIR, ownername) + data_file=os.path.join(data_dir, shopname+".md") + backup=data_file+".bkp" + backup_tmp=data_file+".tmp" + if not os.path.exists(backup): + flash('Backup does not exist') + return redirect(url_for('show_shop',shopid=shopid)) + copyfile(data_file,backup_tmp) + copyfile(backup, data_file) + move(backup_tmp, backup) + flash('Backup restored') + return redirect(url_for('show_shop',shopid=shopid)) + + @app.route('/toggle', methods=['POST']) def toggle_item(): @@ -247,6 +269,7 @@ def remove_toggled(): ownername=get_username(ownerid) data_dir=os.path.join(DATADIR, ownername) data_file=os.path.join(data_dir, shopname+".md") + backup=data_file+".bkp" contents_file=open(data_file,'rt') contents=[] changed=False @@ -257,6 +280,7 @@ def remove_toggled(): changed=True contents_file.close() if changed: + copyfile(data_file, backup) contents_file=open(data_file,'wt') contents_file.write("\n".join(contents).encode('utf-8')) contents_file.close() diff --git a/static/style.css b/static/style.css index f927cbb..8dc7cdb 100644 --- a/static/style.css +++ b/static/style.css @@ -17,7 +17,7 @@ td { height: 1.75em; } .add-entry { font-size: 0.9em; } .add-entry dl { font-weight: bold; } .metanav { text-align: left; font-size: 1.2em; - background: #fafafa; } + background: #fafafa; font-weight: bold; } .flash { background: #cee5F5; padding: 0.5em; border: 1px solid #aacbe2; } .error { background: #f0d6d6; padding: 0.5em; } diff --git a/templates/layout.html b/templates/layout.html index 92a0b70..e6a42f1 100644 --- a/templates/layout.html +++ b/templates/layout.html @@ -14,7 +14,7 @@