Merge pull request #22 from GoatCTF/feature-admin

[Fix #19] Feature admin
This commit is contained in:
Louis Fogel 2014-10-31 21:14:08 -04:00
commit d75ec164e0
2 changed files with 29 additions and 4 deletions

View File

@ -1,10 +1,13 @@
from django.contrib import admin
from core.models import Challenge
from core.models import Challenge, Team, Player, Solution
from core.forms import ChallengeAdminForm
class ChallengeAdmin(admin.ModelAdmin):
fields = ['points', 'category', 'flag', 'description_markdown']
fields = ['name', 'points', 'category', 'flag', 'description_markdown']
form = ChallengeAdminForm
admin.site.register(Challenge, ChallengeAdmin)
admin.site.register(Team)
admin.site.register(Player)
admin.site.register(Solution)

View File

@ -7,9 +7,21 @@ from core.settings import CHALLENGE_NAME_LENGTH, FLAG_LENGTH, TEAM_NAME_LENGTH
class Challenge(models.Model):
"""A challenge represents an individual problem to be solved."""
CATEGORY_CHOICES = (
('be', 'Beer'),
('cr', 'Crypto'),
('ex', 'Exploitation'),
('fo', 'Forensics'),
('rn', 'Recon'),
('re', 'Reversing'),
('we', 'Web'),
('mi', 'Miscellaneous'),
)
name = models.CharField(max_length=CHALLENGE_NAME_LENGTH)
points = models.IntegerField()
category = models.CharField(max_length=2)
category = models.CharField(max_length=2, choices=CATEGORY_CHOICES)
flag = models.CharField(max_length=FLAG_LENGTH)
description_markdown = models.TextField()
description_html = models.TextField()
@ -18,16 +30,23 @@ class Challenge(models.Model):
self.description_html = markdown.markdown(self.description_markdown)
super(Challenge, self).save(*args, **kwargs)
def __str__(self):
return "{} {}: {}".format(
self.get_category_display(), self.points, self.name)
class Team(models.Model):
"""A team is a collection of players."""
name = models.CharField(max_length=TEAM_NAME_LENGTH)
creator = models.ForeignKey("Player", related_name="created_teams")
def __str__(self):
return self.name
class Player(User):
"""A player is a user with a team."""
team = models.ForeignKey("Team")
team = models.ForeignKey("Team", blank=True, null=True)
class Solution(models.Model):
@ -35,3 +54,6 @@ class Solution(models.Model):
challenge = models.ForeignKey("Challenge")
solved_at = models.DateTimeField(auto_now_add=True)
solver = models.ForeignKey("Player")
def __str__(self):
return "{} by {}".format(self.challenge, self.solver)