-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path__init__.py
95 lines (78 loc) · 3.07 KB
/
__init__.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
from flask import Flask,render_template,url_for,redirect,request,flash
# from flask_sqlalchemy import SQLAlchemy
# db = SQLAlchemy()
from .extensions import db,login_manager
from .models import PasswordManager,User
from flask_login import login_required
def create_app():
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data2.db'
app.config['SECRET_KEY'] = 'the random string'
db.init_app(app)
# For managing sessions during login
login_manager.init_app(app)
from .auth import auth
app.register_blueprint(auth)
@login_manager.user_loader
def load_user(user_id):
# using the user id as primary key as id for session
return User.query.get(int(user_id))
@login_required
@app.route("/")
def index():
passwordlist = PasswordManager.query.all()
return render_template('index.html', passwordlist=passwordlist)
@app.route("/Home")
def home_page():
passwordlist = PasswordManager.query.all()
return render_template('home.html', passwordlist=passwordlist)
@login_required
@app.route("/add",methods=["GET","POST"])
def add_password():
if request.method == 'POST':
email = request.form['email']
site_url = request.form['site_url']
site_password = request.form['site_password']
new_password_details = PasswordManager(email=email,site_url=site_url,site_password=site_password)
db.session.add(new_password_details)
db.session.commit()
flash("Password Added")
return redirect('/')
@login_required
@app.route('/delete/<int:id>')
def delete(id):
new_password_to_delete = PasswordManager.query.get_or_404(id)
try:
db.session.delete(new_password_to_delete)
db.session.commit()
return redirect('/')
except:
return 'There was a problem deleting that task'
@login_required
@app.route('/update/<int:id>', methods=['GET', 'POST'])
def update(id):
task = PasswordManager.query.get_or_404(id)
if request.method == 'POST':
task.email = request.form['email']
task.site_url = request.form['site_url']
task.site_password = request.form['site_password']
try:
db.session.commit()
flash("Password Updated")
return redirect('/')
except:
return 'There was an issue updating your task'
else:
return render_template('update.html', task=task)
@app.route('/export')
def export_data():
with open('dump.csv', 'w') as f:
out = csv.writer(f)
out.writerow(['id', 'email','site_url','site_password'])
for item in PasswordManager.query.all():
out.writerow([item.id, item.email,item.site_url,item.site_password])
return send_file('dump.csv',
mimetype='text/csv',
download_name=f"Export_Password_{timestr}.csv",
as_attachment=True)
return app