94 lines
3.5 KiB
Python
94 lines
3.5 KiB
Python
from django.db import models
|
||
from BaseModels.base_models import BaseModel
|
||
from django.utils.translation import gettext_lazy as _
|
||
from AuthApp.models import User
|
||
|
||
game_status_choices = (
|
||
('waiting_users', 'Ожидание пользователей'),
|
||
('game', 'В процессе'),
|
||
('finished', 'Завершена')
|
||
)
|
||
|
||
|
||
class Game(BaseModel):
|
||
level = models.IntegerField(verbose_name=_('Уровень игры'), default=1)
|
||
status = models.CharField(max_length=100, verbose_name=_('Статус'), default='waiting_users')
|
||
time_for_waiting_users = models.IntegerField(verbose_name=_('Время ожидания пользователей (сек)'), default=15)
|
||
cur_lap = models.IntegerField(verbose_name=_('Текущий круг'), default=0)
|
||
|
||
winner = models.OneToOneField(User, verbose_name=_(u'id пользователя'), related_name='rel_games_for_user',
|
||
null=True, blank=True, on_delete=models.CASCADE)
|
||
|
||
comment = models.TextField(verbose_name=_('Комментарий'), null=True, blank=True)
|
||
|
||
def __str__(self):
|
||
if self.name:
|
||
return f'{self.name}'
|
||
else:
|
||
return str(self.id)
|
||
|
||
|
||
class Meta:
|
||
|
||
verbose_name = _('Игра')
|
||
verbose_name_plural = _('Игры')
|
||
# ordering = ('user__last_name', 'user__first_name')
|
||
|
||
|
||
user_in_game_status_choices = (
|
||
('waiting_users', 'Ожидание пользователей'),
|
||
('in_game', 'В игре'),
|
||
('lose', 'Выбыл'),
|
||
('finish', 'Завершил игру')
|
||
)
|
||
|
||
class UserInGame(BaseModel):
|
||
game = models.OneToOneField(
|
||
Game, verbose_name=_('Игра'), related_name='rel_userInGame_for_game', on_delete=models.CASCADE)
|
||
user = models.OneToOneField(
|
||
User, verbose_name=_('Игрок'), related_name='rel_userInGame_for_user', on_delete=models.CASCADE)
|
||
|
||
last_lap = models.IntegerField(verbose_name=_('Последний круг'), default=0)
|
||
|
||
status = models.CharField(max_length=100, verbose_name=_('Статус'), default='waiting_users')
|
||
|
||
def __str__(self):
|
||
if self.name:
|
||
return f'{self.name}'
|
||
else:
|
||
return str(self.id)
|
||
|
||
|
||
class Meta:
|
||
verbose_name = _('Пользователь в игре')
|
||
verbose_name_plural = _('Пользователи в игре')
|
||
# ordering = ('question')
|
||
|
||
|
||
question_in_game_status_choices = (
|
||
('wait', 'Ожидание ответа'),
|
||
('answered', 'Ответил'),
|
||
)
|
||
|
||
class QuestionInGameForUser(BaseModel):
|
||
from QuestionsApp.models import Question
|
||
user_in_game = models.OneToOneField(
|
||
UserInGame, verbose_name=_('Игра'), related_name='rel_questionInGame_for_userInGame', on_delete=models.CASCADE)
|
||
question = models.OneToOneField(
|
||
Question, verbose_name=_('Вопрос'), related_name='rel_questionInGame_for_question', on_delete=models.CASCADE)
|
||
|
||
status = models.CharField(max_length=100, verbose_name=_('Статус'), default='wait')
|
||
answer_right = models.BooleanField(verbose_name=_('Верный ответ'), default=False)
|
||
use_time_for_answer = models.IntegerField(verbose_name=_('Потрачено времени на ответ (сек)'), default=0)
|
||
|
||
def __str__(self):
|
||
if self.name:
|
||
return f'{self.name}'
|
||
else:
|
||
return str(self.id)
|
||
|
||
|
||
class Meta:
|
||
verbose_name = _('Вопрос в игре')
|
||
verbose_name_plural = _('Вопросы в игре')
|
||
# ordering = ('question') |