mirror of
https://github.com/aljazceru/CTFd.git
synced 2025-12-18 14:34:21 +01:00
Working implementation
This commit is contained in:
@@ -276,7 +276,7 @@ class Users(db.Model):
|
||||
# Relationship for Teams
|
||||
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"
|
||||
)
|
||||
|
||||
@@ -313,6 +313,10 @@ class Users(db.Model):
|
||||
elif user_mode == "users":
|
||||
return self
|
||||
|
||||
@property
|
||||
def fields(self):
|
||||
return self.get_fields(admin=False)
|
||||
|
||||
@property
|
||||
def solves(self):
|
||||
return self.get_solves(admin=False)
|
||||
@@ -338,6 +342,12 @@ class Users(db.Model):
|
||||
else:
|
||||
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):
|
||||
from CTFd.utils import get_config
|
||||
|
||||
@@ -828,3 +838,11 @@ class FieldEntries(db.Model):
|
||||
|
||||
user = db.relationship("Users", foreign_keys="FieldEntries.user_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
|
||||
|
||||
@@ -51,7 +51,7 @@ class UserSchema(ma.ModelSchema):
|
||||
)
|
||||
country = field_for(Users, "country", validate=[validate_country_code])
|
||||
password = field_for(Users, "password")
|
||||
fields = Nested(FieldEntriesSchema, partial=True, many=True)
|
||||
fields = Nested(FieldEntriesSchema, partial=True, many=True, attribute="field_entries")
|
||||
|
||||
@pre_load
|
||||
def validate_name(self, data):
|
||||
|
||||
@@ -132,6 +132,12 @@
|
||||
</h2>
|
||||
{% 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">
|
||||
{% if place %}
|
||||
{{ place }}
|
||||
|
||||
@@ -39,6 +39,12 @@
|
||||
</h3>
|
||||
{% endif %}
|
||||
|
||||
{% for field in user.fields %}
|
||||
<h3 class="d-inline-block">
|
||||
{{ field.name }}: {{ field.value }}
|
||||
</h3>
|
||||
{% endfor %}
|
||||
|
||||
<div>
|
||||
<h2 class="text-center">
|
||||
{% if account.place %}
|
||||
|
||||
@@ -39,6 +39,12 @@
|
||||
</h3>
|
||||
{% endif %}
|
||||
|
||||
{% for field in user.get_fields() %}
|
||||
<h3 class="d-block">
|
||||
{{ field.name }}: {{ field.value }}
|
||||
</h3>
|
||||
{% endfor %}
|
||||
|
||||
<div>
|
||||
<h2 class="text-center">
|
||||
{% if account.place %}
|
||||
|
||||
Reference in New Issue
Block a user