FIX 3 für Codex
Dieser Commit ist enthalten in:
@@ -21,11 +21,73 @@ license_bp = Blueprint('licenses', __name__)
|
||||
@login_required
|
||||
def licenses():
|
||||
from datetime import datetime, timedelta
|
||||
show_test = request.args.get('show_test', 'false') == 'true'
|
||||
|
||||
# Get filter parameters
|
||||
search = request.args.get('search', '').strip()
|
||||
filter_type = request.args.get('type', '')
|
||||
filter_status = request.args.get('status', '')
|
||||
sort = request.args.get('sort', 'created_at')
|
||||
order = request.args.get('order', 'desc')
|
||||
page = request.args.get('page', 1, type=int)
|
||||
per_page = 50
|
||||
|
||||
# Process type filter to determine show_test
|
||||
show_test = filter_type in ['test_data', 'test']
|
||||
|
||||
# Get licenses based on filters
|
||||
licenses_list = get_licenses(show_test=show_test)
|
||||
|
||||
# Additional filtering based on type and status
|
||||
if filter_type:
|
||||
if filter_type == 'full':
|
||||
licenses_list = [l for l in licenses_list if l.get('license_type') == 'full' and not l.get('is_test')]
|
||||
elif filter_type == 'test':
|
||||
licenses_list = [l for l in licenses_list if l.get('license_type') == 'test' and not l.get('is_test')]
|
||||
elif filter_type == 'test_data':
|
||||
licenses_list = [l for l in licenses_list if l.get('is_test')]
|
||||
elif filter_type == 'live_data':
|
||||
licenses_list = [l for l in licenses_list if not l.get('is_test')]
|
||||
|
||||
# Status filtering
|
||||
if filter_status:
|
||||
now = datetime.now()
|
||||
if filter_status == 'active':
|
||||
licenses_list = [l for l in licenses_list if l.get('is_active') and l.get('valid_until') and l.get('valid_until') > now]
|
||||
elif filter_status == 'expiring':
|
||||
expiry_threshold = now + timedelta(days=30)
|
||||
licenses_list = [l for l in licenses_list if l.get('valid_until') and now < l.get('valid_until') <= expiry_threshold]
|
||||
elif filter_status == 'expired':
|
||||
licenses_list = [l for l in licenses_list if l.get('valid_until') and l.get('valid_until') <= now]
|
||||
elif filter_status == 'inactive':
|
||||
licenses_list = [l for l in licenses_list if not l.get('is_active')]
|
||||
|
||||
# Search filtering
|
||||
if search:
|
||||
search_lower = search.lower()
|
||||
licenses_list = [l for l in licenses_list if
|
||||
search_lower in str(l.get('license_key', '')).lower() or
|
||||
search_lower in str(l.get('customer_name', '')).lower() or
|
||||
search_lower in str(l.get('customer_email', '')).lower()]
|
||||
|
||||
# Calculate pagination
|
||||
total = len(licenses_list)
|
||||
total_pages = (total + per_page - 1) // per_page
|
||||
start = (page - 1) * per_page
|
||||
end = start + per_page
|
||||
licenses_list = licenses_list[start:end]
|
||||
|
||||
return render_template("licenses.html",
|
||||
licenses=licenses_list,
|
||||
show_test=show_test,
|
||||
search=search,
|
||||
filter_type=filter_type,
|
||||
filter_status=filter_status,
|
||||
sort=sort,
|
||||
order=order,
|
||||
page=page,
|
||||
total=total,
|
||||
total_pages=total_pages,
|
||||
per_page=per_page,
|
||||
now=datetime.now,
|
||||
timedelta=timedelta)
|
||||
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren