Spaces:
Sleeping
Sleeping
Echo-ai
commited on
Upload admin.py
Browse files
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'))
|