48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
from os.path import exists
|
|
from flask import Blueprint, jsonify, url_for, current_app
|
|
import os
|
|
import datetime
|
|
|
|
from acmsite.models import Event, Officer, User
|
|
|
|
bp = Blueprint("api", __name__, url_prefix="/api")
|
|
|
|
|
|
def json(obj):
|
|
"""
|
|
Calls a "create_json" method on the passed in object. Write it yourself!
|
|
"""
|
|
return obj.create_json()
|
|
|
|
@bp.route("/events/upcoming")
|
|
def upcoming_events():
|
|
event_list = Event.query.filter(Event.start_time >
|
|
datetime.datetime.now()).all()
|
|
|
|
return jsonify(list(map(json, event_list)))
|
|
|
|
@bp.route("/officers/current")
|
|
def current_officers():
|
|
now = datetime.datetime.now()
|
|
officers = Officer.query.filter(Officer.term_start < now, Officer.term_end >
|
|
now).all()
|
|
|
|
officers_complete = []
|
|
for o in officers:
|
|
u = User.query.filter_by(id = o.user_id).first()
|
|
if u is None:
|
|
continue # Broken reference, continue
|
|
img = url_for('static', filename="img/officers/placeholder.png")
|
|
if exists(f"acmsite/{current_app.config['UPLOAD_FOLDER']}/{u.username()}.png"):
|
|
img = url_for("main.officer_images", username="f{u.username()}.png")
|
|
officers_complete.append({
|
|
"id": o.id,
|
|
"position": o.position,
|
|
"term_end": o.term_end,
|
|
"term_start": o.term_start,
|
|
"name": u.first_name + " " + u.last_name,
|
|
"img": img
|
|
})
|
|
|
|
|
|
return jsonify(list(officers_complete))
|