init
This commit is contained in:
0
GameApp/__init__.py
Normal file
0
GameApp/__init__.py
Normal file
16
GameApp/admin.py
Normal file
16
GameApp/admin.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from django.contrib import admin
|
||||
from BaseModels.admin_utils import Admin_BaseIconModel
|
||||
from .models import *
|
||||
|
||||
class Admin_Game(Admin_BaseIconModel):
|
||||
pass
|
||||
admin.site.register(Game, Admin_Game)
|
||||
|
||||
class Admin_UserInGame(Admin_BaseIconModel):
|
||||
pass
|
||||
admin.site.register(UserInGame, Admin_UserInGame)
|
||||
|
||||
|
||||
class Admin_QuestionInGameForUser(Admin_BaseIconModel):
|
||||
pass
|
||||
admin.site.register(QuestionInGameForUser, Admin_QuestionInGameForUser)
|
||||
6
GameApp/apps.py
Normal file
6
GameApp/apps.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class GameappConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'GameApp'
|
||||
84
GameApp/migrations/0001_initial.py
Normal file
84
GameApp/migrations/0001_initial.py
Normal file
@@ -0,0 +1,84 @@
|
||||
# Generated by Django 4.2.1 on 2023-05-16 14:01
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('QuestionsApp', '0001_initial'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Game',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')),
|
||||
('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')),
|
||||
('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')),
|
||||
('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')),
|
||||
('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')),
|
||||
('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')),
|
||||
('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')),
|
||||
('level', models.IntegerField(default=1, verbose_name='Уровень игры')),
|
||||
('status', models.CharField(default='waiting_users', max_length=100, verbose_name='Статус')),
|
||||
('time_for_waiting_users', models.IntegerField(default=15, verbose_name='Время ожидания пользователей (сек)')),
|
||||
('cur_lap', models.IntegerField(default=0, verbose_name='Текущий круг')),
|
||||
('comment', models.TextField(blank=True, null=True, verbose_name='Комментарий')),
|
||||
('winner', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='rel_games_for_user', to=settings.AUTH_USER_MODEL, verbose_name='id пользователя')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Игра',
|
||||
'verbose_name_plural': 'Игры',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UserInGame',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')),
|
||||
('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')),
|
||||
('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')),
|
||||
('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')),
|
||||
('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')),
|
||||
('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')),
|
||||
('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')),
|
||||
('last_lap', models.IntegerField(default=0, verbose_name='Последний круг')),
|
||||
('status', models.CharField(default='waiting_users', max_length=100, verbose_name='Статус')),
|
||||
('game', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='rel_userInGame_for_game', to='GameApp.game', verbose_name='Игра')),
|
||||
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='rel_userInGame_for_user', to=settings.AUTH_USER_MODEL, verbose_name='Игрок')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Игрок',
|
||||
'verbose_name_plural': 'Игроки',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='QuestionInGameForUser',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')),
|
||||
('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')),
|
||||
('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')),
|
||||
('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')),
|
||||
('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')),
|
||||
('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')),
|
||||
('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')),
|
||||
('status', models.CharField(default='wait', max_length=100, verbose_name='Статус')),
|
||||
('answer_right', models.BooleanField(default=False, verbose_name='Верный ответ')),
|
||||
('use_time_for_answer', models.IntegerField(default=0, verbose_name='Потрачено времени на ответ (сек)')),
|
||||
('question', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='rel_questionInGame_for_question', to='QuestionsApp.question', verbose_name='Вопрос')),
|
||||
('user_in_game', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='rel_questionInGame_for_userInGame', to='GameApp.useringame', verbose_name='Игра')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Игрок',
|
||||
'verbose_name_plural': 'Игроки',
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,21 @@
|
||||
# Generated by Django 4.2.1 on 2023-05-16 14:07
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('GameApp', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='questioningameforuser',
|
||||
options={'verbose_name': 'Вопрос в игре', 'verbose_name_plural': 'Вопросы в игре'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='useringame',
|
||||
options={'verbose_name': 'Пользователь в игре', 'verbose_name_plural': 'Пользователи в игре'},
|
||||
),
|
||||
]
|
||||
0
GameApp/migrations/__init__.py
Normal file
0
GameApp/migrations/__init__.py
Normal file
94
GameApp/models.py
Normal file
94
GameApp/models.py
Normal file
@@ -0,0 +1,94 @@
|
||||
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')
|
||||
3
GameApp/tests.py
Normal file
3
GameApp/tests.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
3
GameApp/views.py
Normal file
3
GameApp/views.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
Reference in New Issue
Block a user