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
|
# 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
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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 }}
|
||||||
|
|||||||
@@ -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 %}
|
||||||
|
|||||||
@@ -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 %}
|
||||||
|
|||||||
Reference in New Issue
Block a user