webapp/api: remove dead code

This commit is contained in:
radex 2024-07-08 21:34:10 +02:00
parent 459695b65a
commit b3ec38bffe
Signed by: radex
SSH key fingerprint: SHA256:hvqRXAGG1h89yqnS+cyFTLKQbzjWD4uXIqw7Y+0ws30

View file

@ -71,90 +71,6 @@ def _public_api_method(path):
return bp.route("/api/" + path + ".json", methods=["GET"])(wrapper_json)
return decorator2
def _private_api_method(path):
"""A decorator that adds a private, HMACed, POST based method at /api/path.
The JSON-decoded POSTbody is stored as request.decoded.
The resulting data is also JSON-encoded.
It also that ensures that the request is authorized if 'private' is True.
If so, it also adds a request.api_member object that points to a member if an
API key should be limited to that member (for example, when handing over
keys to normal members)."""
def decorator(original):
@wraps(original)
def wrapper(*args, **kwargs):
if request.data.count(",") != 1:
abort(400)
message64, mac64 = request.data.split(",")
try:
message = message64.decode("base64")
mac = mac64.decode("base64")
except:
abort(400)
for key in models.APIKey.query.all():
mac_verify = hmac.new(key.secret.encode("utf-8"))
mac_verify.update(message)
if mac_verify.digest() == mac:
break
else:
abort(403)
if key.member:
request.api_member = key.member
else:
request.api_member = None
try:
if request.data:
request.decoded = json.loads(request.data.decode("base64"))
else:
request.decoded = {}
except Exception:
logger.exception('Request decode failed')
abort(400)
return json.dumps(original(*args, **kwargs))
return bp.route("/api/" + path, methods=["POST"])(wrapper)
return decorator
@_private_api_method("list_members")
def api_members():
if request.api_member:
abort(403)
members = [member.username for member in models.Member.query.all()]
return members
@_private_api_method("get_member_info")
def api_member():
mid = request.decoded["member"]
if request.api_member and request.api_member.username != mid:
abort(403)
member = models.Member.query.filter_by(username=mid).join(models.Member.transfers).\
join(models.MemberTransfer.transfer).first()
mts = member.transfers
response = {}
response["paid"] = []
for mt in mts:
t = {}
t["year"] = mt.year
t["month"] = mt.month
transfer = {}
transfer["uid"] = mt.transfer.uid
transfer["amount"] = mt.transfer.amount
transfer["title"] = mt.transfer.title
transfer["account"] = mt.transfer.account_from
transfer["from"] = mt.transfer.name_from
t["transfer"] = transfer
response["paid"].append(t)
response["months_due"] = member.get_months_due()
response["membership"] = member.type
return response
@cache.memoize()
def _stats_for_month(year, month):
# TODO: export this to the config
@ -173,13 +89,6 @@ def api_month(year=None, month=None):
money_required, money_paid = _stats_for_month(year, month)
return dict(required=money_required, paid=money_paid)
@_public_api_method("mana")
def api_manamana():
"""To-odee doo-dee-doo!"""
now = datetime.datetime.now()
money_required, money_paid = _stats_for_month(now.year, now.month)
return dict(required=money_required, paid=money_paid)
@_public_api_method("judgement/<membername>")
def api_judgement(membername):
member = models.Member.query.filter_by(username=membername).first()
@ -203,16 +112,3 @@ def api_months_due(membername):
raise APIError("No longer a member.", 410)
due = member.get_months_due()
return due
@_public_api_method("cashflow/<int:year>/<int:month>")
@cache.memoize()
def api_cashflow(year, month):
start = datetime.date(year=year, month=month, day=1)
month += 1
if month > 12:
month = 1
year += 1
end = datetime.date(year=year, month=month, day=1)
transfers = models.Transfer.query.filter(and_(models.Transfer.date >= start, models.Transfer.date < end, models.Transfer.ignore == False)).all()
amount_in = sum(t.amount for t in transfers)
return {"in": amount_in/100, "out": -1}