def truncate_database(): # delete all table data (but keep tables) _pages = Pages.query.all() for p in _pages: for f in p.files: delete_file(file_id=f.id) Pages.query.delete() Notifications.query.delete() _challenges = Challenges.query.all() for c in _challenges: for f in c.files: delete_file(file_id=f.id) Challenges.query.delete() Users.query.delete() Teams.query.delete() Solves.query.delete() Submissions.query.delete() Awards.query.delete() Unlocks.query.delete() Tracking.query.delete() Configs.query.delete() clear_config() clear_pages() clear_standings() cache.clear() db.session.commit()
def reset(): if request.method == "POST": require_setup = False logout = False next_url = url_for("admin.statistics") data = request.form if data.get("pages"): _pages = Pages.query.all() for p in _pages: for f in p.files: delete_file(file_id=f.id) Pages.query.delete() if data.get("notifications"): Notifications.query.delete() if data.get("challenges"): _challenges = Challenges.query.all() for c in _challenges: for f in c.files: delete_file(file_id=f.id) Challenges.query.delete() if data.get("accounts"): Users.query.delete() Teams.query.delete() require_setup = True logout = True if data.get("submissions"): Solves.query.delete() Submissions.query.delete() Awards.query.delete() Unlocks.query.delete() Tracking.query.delete() if require_setup: set_config("setup", False) cache.clear() logout_user() next_url = url_for("views.setup") db.session.commit() clear_pages() clear_standings() clear_config() if logout is True: cache.clear() logout_user() db.session.close() return redirect(next_url) return render_template("admin/reset.html")
def delete(self, page_id): page = Pages.query.filter_by(id=page_id).first_or_404() db.session.delete(page) db.session.commit() db.session.close() clear_pages() return {"success": True}
def post(self, json_args): req = json_args schema = PageSchema() response = schema.load(req) if response.errors: return {"success": False, "errors": response.errors}, 400 db.session.add(response.data) db.session.commit() response = schema.dump(response.data) db.session.close() clear_pages() return {"success": True, "data": response.data}
def post(self): req = request.get_json() schema = PageSchema() response = schema.load(req) if response.errors: return {'success': False, 'errors': response.errors}, 400 db.session.add(response.data) db.session.commit() response = schema.dump(response.data) db.session.close() clear_pages() return {'success': True, 'data': response.data}
def patch(self, page_id): page = Pages.query.filter_by(id=page_id).first_or_404() req = request.get_json() schema = PageSchema(partial=True) response = schema.load(req, instance=page, partial=True) if response.errors: return {"success": False, "errors": response.errors}, 400 db.session.commit() response = schema.dump(response.data) db.session.close() clear_pages() return {"success": True, "data": response.data}
def test_hidden_pages(): """Test that hidden pages aren't on the navbar but can be loaded""" app = create_ctfd() with app.app_context(): page = gen_page( app.db, title="HiddenPageTitle", route="this-is-a-hidden-route", content="This is some HTML", hidden=True, ) clear_pages() assert page not in get_pages() with app.test_client() as client: r = client.get("/") assert r.status_code == 200 assert "HiddenPageTitle" not in r.get_data(as_text=True) with app.test_client() as client: r = client.get("/this-is-a-hidden-route") assert r.status_code == 200 assert "This is some HTML" in r.get_data(as_text=True) destroy_ctfd(app)
for y in range(random.randint(1, CHAL_AMOUNT * 20)): chalid = random.randint(1, CHAL_AMOUNT) if chalid not in used: used.append(chalid) user = Users.query.filter_by(id=x + 1).first() wrong = Fails( user_id=user.id, team_id=user.team_id, challenge_id=chalid, ip="127.0.0.1", provided=gen_word(), ) new_base = random_date( base_time, base_time + datetime.timedelta(minutes=random.randint(30, 60)), ) wrong.date = new_base base_time = new_base db.session.add(wrong) db.session.commit() db.session.commit() db.session.close() clear_config() clear_standings() clear_pages()