class Game(models.Model):
def __init__(self, *args, **kwargs):
super(Game, self).__init__(*args, **kwargs)
#Non-django-ORM instance variables
self.question_bank = []
self.answer_bank = []
self.object_id_list = []
self.qi = 0 # Question iterator
self.max_questions = 10
self.player_list = []
self.question_started = None
GAME_CHOICES = (
('solo', 'Trivia Solo'),
('rtt', 'Real-Time Trivia'),
('rtd', 'Real-Time Deathmatch'),
('mtb', 'Multiplayer Turn-Based'),
)
category = models.ForeignKey('Category')
maxPlayers = models.IntegerField()
gameType = models.CharField("Game Type", max_length=255, choices=GAME_CHOICES)
started = models.DateTimeField(auto_now_add=True)
finished = models.DateTimeField(default=None, null=True)
players = models.ManyToManyField(User, through="Player")
def __unicode__(self):
return str(self.id) + " | " + self.gameType + " | " + self.category.categoryName + " | " + str(self.started)
def get_questions(self):
if len(self.object_id_list) != 0:
self.question_bank.append(Question.objects.filter(category__categoryName=self.category.categoryName).exclude(id__in=self.object_id_list).order_by('?')[:10])
else:
self.question_bank = Question.objects.filter(category__id=self.category.id).order_by('?')[:10]
for q in self.question_bank:
self.object_id_list.append(q.id)
def update_player_list(self):
player_list = []
the_players = self.players.all()
player_number = 1
for player in the_players:
single_player = player.player_set.get(game__id__exact=self.id)
#single_player.player_number = player_number
player_list.append(single_player)
player_number += 1
self.player_list = player_list
def get_username_list(self):
username_arr = []
for player in self.player_list:
tmp_obj = {}
tmp_obj['name'] = player.base_user.username
tmp_obj['number'] = player.player_number
username_arr.append(tmp_obj)
return username_arr