Add profile info
This commit is contained in:
parent
55a85689e9
commit
8d0045ec82
10 changed files with 353 additions and 157 deletions
|
@ -43,6 +43,7 @@ from judge.models.profile import (
|
|||
Profile,
|
||||
Friend,
|
||||
OrganizationProfile,
|
||||
ProfileInfo,
|
||||
)
|
||||
from judge.models.runtime import Judge, Language, RuntimeVersion
|
||||
from judge.models.submission import (
|
||||
|
|
|
@ -26,6 +26,15 @@ from judge.caching import cache_wrapper
|
|||
__all__ = ["Organization", "Profile", "OrganizationRequest", "Friend"]
|
||||
|
||||
|
||||
TSHIRT_SIZES = (
|
||||
("S", "Small (S)"),
|
||||
("M", "Medium (M)"),
|
||||
("L", "Large (L)"),
|
||||
("XL", "Extra Large (XL)"),
|
||||
("XXL", "2 Extra Large (XXL)"),
|
||||
)
|
||||
|
||||
|
||||
class EncryptedNullCharField(EncryptedCharField):
|
||||
def get_prep_value(self, value):
|
||||
if not value:
|
||||
|
@ -213,11 +222,6 @@ class Profile(models.Model):
|
|||
help_text=_("User will not be ranked."),
|
||||
default=False,
|
||||
)
|
||||
is_banned_problem_voting = models.BooleanField(
|
||||
verbose_name=_("banned from voting"),
|
||||
help_text=_("User will not be able to vote on problems' point values."),
|
||||
default=False,
|
||||
)
|
||||
rating = models.IntegerField(null=True, default=None, db_index=True)
|
||||
current_contest = models.OneToOneField(
|
||||
"ContestParticipation",
|
||||
|
@ -422,6 +426,36 @@ class Profile(models.Model):
|
|||
verbose_name_plural = _("user profiles")
|
||||
|
||||
|
||||
class ProfileInfo(models.Model):
|
||||
profile = models.OneToOneField(
|
||||
Profile,
|
||||
verbose_name=_("profile associated"),
|
||||
on_delete=models.CASCADE,
|
||||
related_name="info",
|
||||
)
|
||||
tshirt_size = models.CharField(
|
||||
max_length=5,
|
||||
choices=TSHIRT_SIZES,
|
||||
verbose_name=_("t-shirt size"),
|
||||
null=True,
|
||||
blank=True,
|
||||
)
|
||||
date_of_birth = models.DateField(
|
||||
verbose_name=_("date of birth"),
|
||||
null=True,
|
||||
blank=True,
|
||||
)
|
||||
address = models.CharField(
|
||||
max_length=255,
|
||||
verbose_name=_("address"),
|
||||
null=True,
|
||||
blank=True,
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.profile.user.username}'s Info"
|
||||
|
||||
|
||||
class OrganizationRequest(models.Model):
|
||||
user = models.ForeignKey(
|
||||
Profile,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue