From 8ef4ff2c4db015dc5328edc8f01961cc71df6812 Mon Sep 17 00:00:00 2001 From: Kevin Chung Date: Thu, 20 Aug 2020 18:55:39 -0400 Subject: [PATCH] Require required fields in schemas --- CTFd/schemas/teams.py | 9 ++++++++- CTFd/schemas/users.py | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CTFd/schemas/teams.py b/CTFd/schemas/teams.py index 40616fa1..68639c62 100644 --- a/CTFd/schemas/teams.py +++ b/CTFd/schemas/teams.py @@ -246,13 +246,20 @@ class TeamSchema(ma.ModelSchema): # Remove any existing set f.pop("id", None) field_id = f.get("field_id") + value = f.get("value") # # Check that we have an existing field for this. May be unnecessary b/c the foriegn key should enforce field = TeamFields.query.filter_by(id=field_id).first_or_404() + if field.required is True and value.strip() == "": + raise ValidationError( + f"Field '{field.name}' is required", field_names=["fields"] + ) + if field.editable is False: raise ValidationError( - f"Field {field.name} cannot be editted", field_names=["fields"] + f"Field '{field.name}' cannot be editted", + field_names=["fields"], ) # Get the existing field entry if one exists diff --git a/CTFd/schemas/users.py b/CTFd/schemas/users.py index 285919d2..66393061 100644 --- a/CTFd/schemas/users.py +++ b/CTFd/schemas/users.py @@ -240,13 +240,20 @@ class UserSchema(ma.ModelSchema): # Remove any existing set f.pop("id", None) field_id = f.get("field_id") + value = f.get("value") # # Check that we have an existing field for this. May be unnecessary b/c the foriegn key should enforce field = UserFields.query.filter_by(id=field_id).first_or_404() + if field.required is True and value.strip() == "": + raise ValidationError( + f"Field '{field.name}' is required", field_names=["fields"] + ) + if field.editable is False: raise ValidationError( - f"Field {field.name} cannot be editted", field_names=["fields"] + f"Field '{field.name}' cannot be editted", + field_names=["fields"], ) # Get the existing field entry if one exists