Working implementation

This commit is contained in:
Kevin Chung
2020-08-16 23:14:59 -04:00
parent cd12d5df7e
commit 7601a52c3b
5 changed files with 38 additions and 2 deletions

View File

@@ -276,7 +276,7 @@ class Users(db.Model):
# Relationship for Teams # Relationship for Teams
team_id = db.Column(db.Integer, db.ForeignKey("teams.id")) team_id = db.Column(db.Integer, db.ForeignKey("teams.id"))
fields = db.relationship( field_entries = db.relationship(
"FieldEntries", foreign_keys="FieldEntries.user_id", lazy="joined" "FieldEntries", foreign_keys="FieldEntries.user_id", lazy="joined"
) )
@@ -313,6 +313,10 @@ class Users(db.Model):
elif user_mode == "users": elif user_mode == "users":
return self return self
@property
def fields(self):
return self.get_fields(admin=False)
@property @property
def solves(self): def solves(self):
return self.get_solves(admin=False) return self.get_solves(admin=False)
@@ -338,6 +342,12 @@ class Users(db.Model):
else: else:
return None return None
def get_fields(self, admin=False):
if admin:
return self.field_entries
return [entry for entry in self.field_entries if entry.field.public]
def get_solves(self, admin=False): def get_solves(self, admin=False):
from CTFd.utils import get_config from CTFd.utils import get_config
@@ -828,3 +838,11 @@ class FieldEntries(db.Model):
user = db.relationship("Users", foreign_keys="FieldEntries.user_id") user = db.relationship("Users", foreign_keys="FieldEntries.user_id")
field = db.relationship("Fields", foreign_keys="FieldEntries.field_id") field = db.relationship("Fields", foreign_keys="FieldEntries.field_id")
@hybrid_property
def name(self):
return self.field.name
@hybrid_property
def description(self):
return self.field.description

View File

@@ -51,7 +51,7 @@ class UserSchema(ma.ModelSchema):
) )
country = field_for(Users, "country", validate=[validate_country_code]) country = field_for(Users, "country", validate=[validate_country_code])
password = field_for(Users, "password") password = field_for(Users, "password")
fields = Nested(FieldEntriesSchema, partial=True, many=True) fields = Nested(FieldEntriesSchema, partial=True, many=True, attribute="field_entries")
@pre_load @pre_load
def validate_name(self, data): def validate_name(self, data):

View File

@@ -132,6 +132,12 @@
</h2> </h2>
{% endif %} {% endif %}
{% for field in user.get_fields(true) %}
<h3 class="d-block">
{{ field.name }}: {{ field.value }}
</h3>
{% endfor %}
<h3 id="team-place" class="text-center"> <h3 id="team-place" class="text-center">
{% if place %} {% if place %}
{{ place }} {{ place }}

View File

@@ -39,6 +39,12 @@
</h3> </h3>
{% endif %} {% endif %}
{% for field in user.fields %}
<h3 class="d-inline-block">
{{ field.name }}: {{ field.value }}
</h3>
{% endfor %}
<div> <div>
<h2 class="text-center"> <h2 class="text-center">
{% if account.place %} {% if account.place %}

View File

@@ -39,6 +39,12 @@
</h3> </h3>
{% endif %} {% endif %}
{% for field in user.get_fields() %}
<h3 class="d-block">
{{ field.name }}: {{ field.value }}
</h3>
{% endfor %}
<div> <div>
<h2 class="text-center"> <h2 class="text-center">
{% if account.place %} {% if account.place %}