Batch Lizenzen funktionieren wieder
Dieser Commit ist enthalten in:
@@ -649,33 +649,121 @@ def allocate_resources():
|
||||
@login_required
|
||||
def check_resource_availability():
|
||||
"""Prüfe Verfügbarkeit von Ressourcen"""
|
||||
# Einzelne Ressource prüfen (alte API)
|
||||
resource_type = request.args.get('type')
|
||||
count = int(request.args.get('count', 1))
|
||||
is_test = request.args.get('is_test', 'false') == 'true'
|
||||
if resource_type:
|
||||
count = int(request.args.get('count', 1))
|
||||
is_test = request.args.get('is_test', 'false') == 'true'
|
||||
show_test = request.args.get('show_test', 'false') == 'true'
|
||||
|
||||
conn = get_connection()
|
||||
cur = conn.cursor()
|
||||
|
||||
try:
|
||||
# Hole verfügbare Ressourcen mit Details
|
||||
if show_test:
|
||||
# Zeige alle verfügbaren Ressourcen (Test und Produktion)
|
||||
cur.execute("""
|
||||
SELECT id, resource_value, is_test
|
||||
FROM resource_pools
|
||||
WHERE resource_type = %s
|
||||
AND status = 'available'
|
||||
ORDER BY is_test, resource_value
|
||||
LIMIT %s
|
||||
""", (resource_type, count))
|
||||
else:
|
||||
# Zeige nur Produktions-Ressourcen
|
||||
cur.execute("""
|
||||
SELECT id, resource_value, is_test
|
||||
FROM resource_pools
|
||||
WHERE resource_type = %s
|
||||
AND status = 'available'
|
||||
AND is_test = false
|
||||
ORDER BY resource_value
|
||||
LIMIT %s
|
||||
""", (resource_type, count))
|
||||
|
||||
available_resources = []
|
||||
for row in cur.fetchall():
|
||||
available_resources.append({
|
||||
'id': row[0],
|
||||
'value': row[1],
|
||||
'is_test': row[2]
|
||||
})
|
||||
|
||||
return jsonify({
|
||||
'resource_type': resource_type,
|
||||
'requested': count,
|
||||
'available': available_resources,
|
||||
'sufficient': len(available_resources) >= count,
|
||||
'show_test': show_test
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
logging.error(f"Fehler beim Prüfen der Verfügbarkeit: {str(e)}")
|
||||
return jsonify({'error': 'Fehler beim Prüfen der Verfügbarkeit'}), 500
|
||||
finally:
|
||||
cur.close()
|
||||
conn.close()
|
||||
|
||||
if not resource_type:
|
||||
return jsonify({'error': 'Ressourcen-Typ erforderlich'}), 400
|
||||
# Mehrere Ressourcen gleichzeitig prüfen (für Batch)
|
||||
domain_count = int(request.args.get('domain', 0))
|
||||
ipv4_count = int(request.args.get('ipv4', 0))
|
||||
phone_count = int(request.args.get('phone', 0))
|
||||
is_test = request.args.get('is_test', 'false') == 'true'
|
||||
|
||||
conn = get_connection()
|
||||
cur = conn.cursor()
|
||||
|
||||
try:
|
||||
# Zähle verfügbare Ressourcen
|
||||
# Zähle verfügbare Ressourcen für jeden Typ
|
||||
result = {}
|
||||
|
||||
# Domains
|
||||
cur.execute("""
|
||||
SELECT COUNT(*)
|
||||
FROM resource_pools
|
||||
WHERE resource_type = %s
|
||||
WHERE resource_type = 'domain'
|
||||
AND status = 'available'
|
||||
AND is_test = %s
|
||||
""", (resource_type, is_test))
|
||||
""", (is_test,))
|
||||
domain_available = cur.fetchone()[0]
|
||||
|
||||
available_count = cur.fetchone()[0]
|
||||
# IPv4
|
||||
cur.execute("""
|
||||
SELECT COUNT(*)
|
||||
FROM resource_pools
|
||||
WHERE resource_type = 'ipv4'
|
||||
AND status = 'available'
|
||||
AND is_test = %s
|
||||
""", (is_test,))
|
||||
ipv4_available = cur.fetchone()[0]
|
||||
|
||||
# Phones
|
||||
cur.execute("""
|
||||
SELECT COUNT(*)
|
||||
FROM resource_pools
|
||||
WHERE resource_type = 'phone'
|
||||
AND status = 'available'
|
||||
AND is_test = %s
|
||||
""", (is_test,))
|
||||
phone_available = cur.fetchone()[0]
|
||||
|
||||
return jsonify({
|
||||
'resource_type': resource_type,
|
||||
'requested': count,
|
||||
'available': available_count,
|
||||
'sufficient': available_count >= count,
|
||||
'domain_requested': domain_count,
|
||||
'domain_available': domain_available,
|
||||
'domain_sufficient': domain_available >= domain_count,
|
||||
'ipv4_requested': ipv4_count,
|
||||
'ipv4_available': ipv4_available,
|
||||
'ipv4_sufficient': ipv4_available >= ipv4_count,
|
||||
'phone_requested': phone_count,
|
||||
'phone_available': phone_available,
|
||||
'phone_sufficient': phone_available >= phone_count,
|
||||
'all_sufficient': (
|
||||
domain_available >= domain_count and
|
||||
ipv4_available >= ipv4_count and
|
||||
phone_available >= phone_count
|
||||
),
|
||||
'is_test': is_test
|
||||
})
|
||||
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren