Add problem volunteer
This commit is contained in:
parent
e51129d36f
commit
e70618ed19
15 changed files with 396 additions and 5 deletions
|
@ -14,6 +14,7 @@ from judge.models.profile import Organization, OrganizationRequest, Profile, Fri
|
|||
from judge.models.runtime import Judge, Language, RuntimeVersion
|
||||
from judge.models.submission import SUBMISSION_RESULT, Submission, SubmissionSource, SubmissionTestCase
|
||||
from judge.models.ticket import Ticket, TicketMessage
|
||||
from judge.models.volunteer import VolunteerProblemVote
|
||||
|
||||
revisions.register(Profile, exclude=['points', 'last_access', 'ip', 'rating'])
|
||||
revisions.register(Problem, follow=['language_limits'])
|
||||
|
|
|
@ -377,6 +377,7 @@ class Problem(models.Model):
|
|||
save.alters_data = True
|
||||
|
||||
def can_vote(self, request):
|
||||
return False
|
||||
user = request.user
|
||||
if not user.is_authenticated:
|
||||
return False
|
||||
|
|
28
judge/models/volunteer.py
Normal file
28
judge/models/volunteer.py
Normal file
|
@ -0,0 +1,28 @@
|
|||
from django.db import models
|
||||
from django.db.models import CASCADE
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from judge.models import Profile, Problem, ProblemType
|
||||
|
||||
__all__ = ['VolunteerProblemVote']
|
||||
|
||||
class VolunteerProblemVote(models.Model):
|
||||
voter = models.ForeignKey(Profile, related_name='volunteer_problem_votes', on_delete=CASCADE)
|
||||
problem = models.ForeignKey(Problem, related_name='volunteer_user_votes', on_delete=CASCADE)
|
||||
time = models.DateTimeField(auto_now_add=True)
|
||||
knowledge_points = models.PositiveIntegerField(verbose_name=_('knowledge points'),
|
||||
help_text=_('Points awarded by knowledge difficulty'))
|
||||
thinking_points = models.PositiveIntegerField(verbose_name=_('thinking points'),
|
||||
help_text=_('Points awarded by thinking difficulty'))
|
||||
types = models.ManyToManyField(ProblemType, verbose_name=_('problem types'),
|
||||
help_text=_('The type of problem, '
|
||||
"as shown on the problem's page."))
|
||||
feedback = models.TextField(verbose_name=_('feedback'), blank=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('volunteer vote')
|
||||
verbose_name_plural = _('volunteer votes')
|
||||
unique_together = ['voter', 'problem']
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.voter} for {self.problem.code}'
|
Loading…
Add table
Add a link
Reference in a new issue