Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions api/messages/messages_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -1642,6 +1642,38 @@ def update_hackathon_request(doc_id, json):
return None


def get_all_hackathon_requests():
db = get_db()
logger.debug("Hackathon Requests List (Admin)")
collection = db.collection('hackathon_requests')
docs = collection.stream()
requests = []
for doc in docs:
doc_dict = doc.to_dict()
doc_dict["id"] = doc.id
requests.append(doc_dict)
# Sort by created date descending (newest first)
requests.sort(key=lambda x: x.get("created", ""), reverse=True)
return {"requests": requests}


def admin_update_hackathon_request(doc_id, json):
db = get_db()
logger.debug("Hackathon Request Admin Update")
doc_ref = db.collection('hackathon_requests').document(doc_id)
doc_snapshot = doc_ref.get()
if not doc_snapshot.exists:
return None

send_slack_audit(action="admin_update_hackathon_request", message="Admin updating", payload=json)
json["updated"] = datetime.now().isoformat()
doc_ref.update(json)

updated_doc = doc_ref.get().to_dict()
updated_doc["id"] = doc_id
return updated_doc



@limits(calls=50, period=ONE_MINUTE)
def save_hackathon(json_data, propel_id):
Expand Down
19 changes: 19 additions & 0 deletions api/messages/messages_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -669,6 +669,25 @@ def admin_get_all_giveaways():
return get_all_giveaways()


@bp.route("/admin/hackathon-requests", methods=["GET"])
@auth.require_user
@auth.require_org_member_with_permission("volunteer.admin", req_to_org_id=getOrgId)
def admin_get_all_hackathon_requests():
logger.info("GET /admin/hackathon-requests called")
from api.messages.messages_service import get_all_hackathon_requests
return get_all_hackathon_requests()

@bp.route("/admin/hackathon-requests/<request_id>", methods=["PATCH"])
@auth.require_user
@auth.require_org_member_with_permission("volunteer.admin", req_to_org_id=getOrgId)
def admin_update_hackathon_request_api(request_id):
logger.info(f"PATCH /admin/hackathon-requests/{request_id} called")
from api.messages.messages_service import admin_update_hackathon_request
result = admin_update_hackathon_request(request_id, request.get_json())
if result is None:
return {"error": "Hackathon request not found"}, 404
return result

@bp.route("/create-hackathon", methods=["POST"])
def submit_create_hackathon():
logger.info("POST /create-hackathon called")
Expand Down
Loading