28 lines
1.4 KiB
Python
28 lines
1.4 KiB
Python
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}'
|