Fix CLI argument handling for all commands
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
affd2fc116
commit
197181f6f9
1 changed files with 15 additions and 12 deletions
|
|
@ -44,7 +44,7 @@ def reset_password(email: str, new_password: str):
|
|||
db.close()
|
||||
|
||||
|
||||
def list_users():
|
||||
def list_users(args=None):
|
||||
db = SessionLocal()
|
||||
try:
|
||||
users = db.query(User).order_by(User.id).all()
|
||||
|
|
@ -119,7 +119,7 @@ def delete_user(email: str):
|
|||
db.close()
|
||||
|
||||
|
||||
def stats():
|
||||
def stats(args=None):
|
||||
from app.models.quiz import Quiz
|
||||
from app.models.question import Question
|
||||
from app.models.attempt import QuizAttempt
|
||||
|
|
@ -160,28 +160,31 @@ def stats():
|
|||
db.close()
|
||||
|
||||
|
||||
def list_courses():
|
||||
def list_courses(args=None):
|
||||
from app.models.course import Course, CourseEnrollment
|
||||
from sqlalchemy import func
|
||||
db = SessionLocal()
|
||||
try:
|
||||
counts = dict(db.query(CourseEnrollment.course_id, func.count()).group_by(CourseEnrollment.course_id).all())
|
||||
courses = db.query(Course).order_by(Course.id).all()
|
||||
print(f"{'ID':<5} {'Title':<35} {'Status':<12} {'Creator':<20} {'Enrolled':<10}")
|
||||
print("-" * 82)
|
||||
for c in courses:
|
||||
creator = db.query(User).filter(User.id == c.user_id).first()
|
||||
name = creator.name if creator else "?"
|
||||
print(f"{c.id:<5} {(c.title or '-')[:34]:<35} {c.status:<12} {name[:19]:<20} {c.enrolled_count or 0:<10}")
|
||||
enrolled = counts.get(c.id, 0)
|
||||
print(f"{c.id:<5} {(c.title or '-')[:34]:<35} {c.status:<12} {name[:19]:<20} {enrolled:<10}")
|
||||
print(f"\n{len(courses)} course(s)")
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
def list_quizzes(show_all=False):
|
||||
def list_quizzes(args=None):
|
||||
from app.models.quiz import Quiz
|
||||
db = SessionLocal()
|
||||
try:
|
||||
q = db.query(Quiz)
|
||||
if not show_all:
|
||||
if not (args and "--all" in args):
|
||||
q = q.filter(Quiz.deleted_at.is_(None))
|
||||
quizzes = q.order_by(Quiz.id).all()
|
||||
print(f"{'ID':<5} {'Title':<35} {'Qs':<5} {'Mode':<10} {'Type':<10} {'Status':<10}")
|
||||
|
|
@ -195,7 +198,7 @@ def list_quizzes(show_all=False):
|
|||
db.close()
|
||||
|
||||
|
||||
def list_docs():
|
||||
def list_docs(args=None):
|
||||
from app.models.pdf_document import PDFDocument
|
||||
db = SessionLocal()
|
||||
try:
|
||||
|
|
@ -214,7 +217,7 @@ def list_docs():
|
|||
db.close()
|
||||
|
||||
|
||||
def fix_stuck_docs():
|
||||
def fix_stuck_docs(args=None):
|
||||
from datetime import datetime, timedelta
|
||||
from app.models.pdf_document import PDFDocument
|
||||
db = SessionLocal()
|
||||
|
|
@ -261,7 +264,7 @@ def reprocess_doc(doc_id: str):
|
|||
db.close()
|
||||
|
||||
|
||||
def cleanup_redis():
|
||||
def cleanup_redis(args=None):
|
||||
from app.config import settings
|
||||
import redis as redis_lib
|
||||
r = redis_lib.from_url(settings.REDIS_URL, decode_responses=True)
|
||||
|
|
@ -281,7 +284,7 @@ def cleanup_redis():
|
|||
print(f"Cleaned {expired} orphaned keys out of {len(keys) + len(session_keys)} total")
|
||||
|
||||
|
||||
def export_users():
|
||||
def export_users(args=None):
|
||||
db = SessionLocal()
|
||||
try:
|
||||
users = db.query(User).order_by(User.id).all()
|
||||
|
|
@ -303,7 +306,7 @@ COMMANDS = {
|
|||
"delete-user": (lambda args: delete_user(args[0]), 1),
|
||||
"stats": (stats, 0),
|
||||
"list-courses": (list_courses, 0),
|
||||
"list-quizzes": (lambda args: list_quizzes("--all" in args), 0),
|
||||
"list-quizzes": (list_quizzes, 0),
|
||||
"list-docs": (list_docs, 0),
|
||||
"fix-stuck-docs": (fix_stuck_docs, 0),
|
||||
"reprocess-doc": (lambda args: reprocess_doc(args[0]), 1),
|
||||
|
|
@ -331,6 +334,6 @@ if __name__ == "__main__":
|
|||
print(f"Error: '{cmd}' requires {min_args} argument(s), got {len(rest)}")
|
||||
sys.exit(1)
|
||||
|
||||
result = fn(rest) if min_args > 0 else fn()
|
||||
result = fn(rest) if min_args > 0 else fn(rest)
|
||||
if result is False:
|
||||
sys.exit(1)
|
||||
|
|
|
|||
Loading…
Reference in a new issue