групповая привязка событий к постам по площадкам
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
+68
@@ -1215,6 +1215,74 @@ def api_get_all_interlinks():
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
# Новые API endpoints для работы с площадками
|
||||
@bp.route('/api/venues')
|
||||
@login_required
|
||||
def api_venues():
|
||||
"""Получает список всех уникальных площадок с количеством событий"""
|
||||
db = get_db()
|
||||
try:
|
||||
with db.conn.cursor() as cursor:
|
||||
cursor.execute("""
|
||||
SELECT unit_name as name, COUNT(*) as event_count
|
||||
FROM events
|
||||
WHERE unit_name IS NOT NULL AND unit_name != ''
|
||||
GROUP BY unit_name
|
||||
ORDER BY unit_name
|
||||
""")
|
||||
venues = cursor.fetchall()
|
||||
|
||||
venues_list = []
|
||||
for venue in venues:
|
||||
venues_list.append({
|
||||
'name': venue['name'],
|
||||
'event_count': venue['event_count']
|
||||
})
|
||||
|
||||
return jsonify(venues_list)
|
||||
except Exception as e:
|
||||
return jsonify({'error': str(e)}), 500
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
@bp.route('/api/venues/<venue_name>/events')
|
||||
@login_required
|
||||
def api_venue_events(venue_name):
|
||||
"""Получает список событий для указанной площадки с информацией о привязке к посту"""
|
||||
post_id = request.args.get('post_id')
|
||||
if not post_id:
|
||||
return jsonify({'error': 'post_id parameter is required'}), 400
|
||||
|
||||
db = get_db()
|
||||
try:
|
||||
with db.conn.cursor() as cursor:
|
||||
# Получаем события площадки с информацией о привязке к посту
|
||||
cursor.execute("""
|
||||
SELECT e.id, e.name, e.number, e.unit_name,
|
||||
CASE WHEN i.post_id IS NOT NULL THEN 1 ELSE 0 END as linked
|
||||
FROM events e
|
||||
LEFT JOIN interlinks i ON e.id = i.event_id AND i.post_id = %s
|
||||
WHERE e.unit_name = %s
|
||||
ORDER BY e.name
|
||||
""", (post_id, venue_name))
|
||||
events = cursor.fetchall()
|
||||
|
||||
events_list = []
|
||||
for event in events:
|
||||
events_list.append({
|
||||
'id': event['id'],
|
||||
'name': event['name'],
|
||||
'number': event['number'],
|
||||
'unit_name': event['unit_name'],
|
||||
'linked': bool(event['linked'])
|
||||
})
|
||||
|
||||
return jsonify(events_list)
|
||||
except Exception as e:
|
||||
return jsonify({'error': str(e)}), 500
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
@bp.route('/image_proxy')
|
||||
@login_required
|
||||
def image_proxy():
|
||||
|
||||
Reference in New Issue
Block a user