|
|
|
from flask import Blueprint, url_for, jsonify, g
|
|
|
|
from utils.auth import auth_required
|
|
|
|
from db.model import db, Badge, UserBadge
|
|
|
|
from sqlalchemy import select
|
|
|
|
badge_route = Blueprint('badge', __name__)
|
|
|
|
|
|
|
|
@badge_route.route('/listAllBadges')
|
|
|
|
def all_badges():
|
|
|
|
badges: list[Badge] = db.session.execute(select(Badge)).scalars()
|
|
|
|
data: list = []
|
|
|
|
for bgd in badges:
|
|
|
|
data.append({
|
|
|
|
'id': bgd.id,
|
|
|
|
'name': bgd.name,
|
|
|
|
'description': bgd.description,
|
|
|
|
'createDate': bgd.createDate,
|
|
|
|
'icon': url_for('send_file', filename=bgd.icon),
|
|
|
|
'canClaim': bgd.canClaim
|
|
|
|
})
|
|
|
|
return jsonify({
|
|
|
|
'count': len(data),
|
|
|
|
'data': data
|
|
|
|
})
|
|
|
|
|
|
|
|
@badge_route.route('/myBadges')
|
|
|
|
@auth_required()
|
|
|
|
def my_badges():
|
|
|
|
user_badges: list[UserBadge] = db.session.execute(select(UserBadge).where(
|
|
|
|
UserBadge.userID == g.current_user.id
|
|
|
|
)).scalars()
|
|
|
|
data: list = []
|
|
|
|
for ub in user_badges:
|
|
|
|
bgd = ub.badge
|
|
|
|
data.append({
|
|
|
|
'id': ub.id,
|
|
|
|
'badgeID': bgd.id,
|
|
|
|
'userID': ub.userID,
|
|
|
|
'name': bgd.name,
|
|
|
|
'description': bgd.description,
|
|
|
|
'createDate': bgd.createDate,
|
|
|
|
'icon': url_for('send_file', filename=bgd.icon),
|
|
|
|
'canClaim': bgd.canClaim,
|
|
|
|
'claimedDate': ub.claimedDate,
|
|
|
|
})
|
|
|
|
return jsonify({
|
|
|
|
'count': len(data),
|
|
|
|
'data': data
|
|
|
|
})
|