Echo-ai commited on
Commit
3c3e573
·
verified ·
1 Parent(s): a6659a1

Upload admin.py

Browse files
Files changed (1) hide show
  1. admin.py +117 -0
admin.py ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Blueprint, render_template, request, redirect, url_for, flash
2
+ from flask_login import login_required
3
+ from database import JSONDatabase
4
+ import os
5
+
6
+ admin = Blueprint('admin', __name__, url_prefix='/admin')
7
+ db = JSONDatabase(os.path.join(os.path.dirname(__file__), 'data'))
8
+
9
+ @admin.route('/')
10
+ @login_required
11
+ def index():
12
+ gangs = db.get_all_gangs()
13
+ blogs = db.get_all_blogs()
14
+ return render_template('admin/index.html', gangs=gangs, blogs=blogs)
15
+
16
+ @admin.route('/add-gang', methods=['GET', 'POST'])
17
+ @login_required
18
+ def add_gang():
19
+ if request.method == 'POST':
20
+ gang_data = {
21
+ 'name': request.form['name'],
22
+ 'description': request.form['description'],
23
+ 'known_members': request.form['known_members'],
24
+ 'territory': request.form['territory'],
25
+ 'known_activities': request.form['known_activities'],
26
+ 'image_url': request.form['image_url']
27
+ }
28
+
29
+ db.add_gang(gang_data)
30
+ flash('Gang added successfully!', 'success')
31
+ return redirect(url_for('admin.index'))
32
+
33
+ return render_template('admin/add_gang.html')
34
+
35
+ @admin.route('/edit-gang/<int:gang_id>', methods=['GET', 'POST'])
36
+ @login_required
37
+ def edit_gang(gang_id):
38
+ gang = db.get_gang(gang_id)
39
+ if gang is None:
40
+ flash('Gang not found!', 'error')
41
+ return redirect(url_for('admin.index'))
42
+
43
+ if request.method == 'POST':
44
+ gang_data = {
45
+ 'name': request.form['name'],
46
+ 'description': request.form['description'],
47
+ 'known_members': request.form['known_members'],
48
+ 'territory': request.form['territory'],
49
+ 'known_activities': request.form['known_activities'],
50
+ 'image_url': request.form['image_url']
51
+ }
52
+
53
+ db.update_gang(gang_id, gang_data)
54
+ flash('Gang updated successfully!', 'success')
55
+ return redirect(url_for('admin.index'))
56
+
57
+ # Convert lists back to newline-separated strings for form
58
+ gang['known_members'] = '\n'.join(gang['known_members'])
59
+ gang['territory'] = '\n'.join(gang['territory'])
60
+ gang['known_activities'] = '\n'.join(gang['known_activities'])
61
+
62
+ return render_template('admin/edit_gang.html', gang=gang)
63
+
64
+ @admin.route('/delete-gang/<int:gang_id>', methods=['POST'])
65
+ @login_required
66
+ def delete_gang(gang_id):
67
+ if db.delete_gang(gang_id):
68
+ flash('Gang deleted successfully!', 'success')
69
+ else:
70
+ flash('Gang not found!', 'error')
71
+ return redirect(url_for('admin.index'))
72
+
73
+ @admin.route('/add-blog', methods=['GET', 'POST'])
74
+ @login_required
75
+ def add_blog():
76
+ if request.method == 'POST':
77
+ blog_data = {
78
+ 'title': request.form['title'],
79
+ 'content': request.form['content'],
80
+ 'image_url': request.form['image_url']
81
+ }
82
+
83
+ db.add_blog(blog_data)
84
+ flash('Blog added successfully!', 'success')
85
+ return redirect(url_for('admin.index'))
86
+
87
+ return render_template('admin/add_blog.html')
88
+
89
+ @admin.route('/edit-blog/<int:blog_id>', methods=['GET', 'POST'])
90
+ @login_required
91
+ def edit_blog(blog_id):
92
+ blog = db.get_blog(blog_id)
93
+ if blog is None:
94
+ flash('Blog not found!', 'error')
95
+ return redirect(url_for('admin.index'))
96
+
97
+ if request.method == 'POST':
98
+ blog_data = {
99
+ 'title': request.form['title'],
100
+ 'content': request.form['content'],
101
+ 'image_url': request.form['image_url']
102
+ }
103
+
104
+ db.update_blog(blog_id, blog_data)
105
+ flash('Blog updated successfully!', 'success')
106
+ return redirect(url_for('admin.index'))
107
+
108
+ return render_template('admin/edit_blog.html', blog=blog)
109
+
110
+ @admin.route('/delete-blog/<int:blog_id>', methods=['POST'])
111
+ @login_required
112
+ def delete_blog(blog_id):
113
+ if db.delete_blog(blog_id):
114
+ flash('Blog deleted successfully!', 'success')
115
+ else:
116
+ flash('Blog not found!', 'error')
117
+ return redirect(url_for('admin.index'))