コード例 #1
0
#  Contact authors : Arturo Moral <*****@*****.**>                        #
#                    Gregorio Robles <*****@*****.**>                    #
#                    Félix Redondo <*****@*****.**>         #
#                    Jorge González Navarro <*****@*****.**>        #
#                                                                           #
#############################################################################

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#                                                                     #
#   El script se lanza a las *:30                                     #
#                                                                     #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

from django.core.management import setup_environ
import settings

setup_environ(settings)

from quizbowl.models import Game
from quizbowl.views_notify import notify_user
import datetime

thirty_minutes_ahead = datetime.datetime.now() + datetime.timedelta(minutes=30)
g = Game.objects.filter(start_time__lte=thirty_minutes_ahead,
                        start_time__gte=datetime.datetime.now())

for game in g:
    if not game.log:
        notify_user(game.player1, 'hurry_up', game)
        notify_user(game.player2, 'hurry_up', game)
コード例 #2
0
def SelectStartTime(request, gid):

	if not request.user.is_authenticated():
		return HttpResponseRedirect('/')


	game = Game.objects.get(id = gid)
	pst = Preferred_start_time.objects.get(game = game, player = request.user)

	if request.user != game.player1 and request.user != game.player2 and request.user.username == "FLEQBOT":
		return HttpResponseRedirect('/')

	if game.is_over():
		return HttpResponseRedirect('/')

	if game.start_time_committed:
		return HttpResponseRedirect('/game-room/' + gid)

	now = datetime.datetime.now()

	g = game

	# Save all dates of my uncommitted games to select date and time to play
	myUncommittedGamesDate = [] # Contains all options to select in my next games

	startDate = g.round.start_date
	finishDate = g.round.finish_date

	while startDate <= finishDate:
		# Check to show only valid dates
		if startDate >= datetime.datetime.now().date():
			d = {}
			d['gid'] = g.pk
			d['date'] = startDate
			d['dateslashed'] = str(startDate.day) + "/" + str(startDate.month) + "/" + str(startDate.year)

			myUncommittedGamesDate.append(d)

		startDate = startDate + timedelta(days=1)

	if request.method == "GET":
		hour = now.hour

		# Extract all dates and times selected by user to show them
		mySelectedGamesDate = [] # Contains all options selected by user to each game
		opponentSelectedGamesDate = [] # Contains all options selected by opponent to each game

		# Select game preferences by user
		mySelection = Preferred_start_time.objects.filter(Q(player = request.user), Q(game = g))
		for selection in mySelection:
			# Extract all datetimes selected by user to show them
			myDateTimesSelected = Date_time.objects.filter(Q(preferred_start_time = selection)).order_by('date_time')			
			for dateSelected in myDateTimesSelected:
				s = {}
				s['gid'] = g.pk
				s['date'] = dateSelected
				mySelectedGamesDate.append(s)
				
		# Select game preferences by opponent
		if g.player1 == request.user:
			opponent = g.player2
		else:
			opponent = g.player1

		opponentSelection = Preferred_start_time.objects.filter(Q(player = opponent), Q(game = g))

		firstDateSinceNow = datetime.datetime.now()

		if firstDateSinceNow.hour < 22:
			firstDateSinceNow = datetime.datetime(now.year, now.month, now.day, now.hour + 2, 0, 0)
		else:
			firstDateSinceNow = firstDateSinceNow + datetime.timedelta(minutes=120)

		for selection in opponentSelection:
			# Extract all datetimes selected by opponent to show them
			myDateTimesSelected = Date_time.objects.filter(Q(preferred_start_time = selection)).order_by('date_time')			
			for dateSelected in myDateTimesSelected:
				s = {}
				s['gid'] = g.pk
				s['date'] = dateSelected
				
				if dateSelected.date_time >= firstDateSinceNow:			
					opponentSelectedGamesDate.append(s)

		hours = []

		if hour < 6:
			hours = range(8,24)
		elif hour < 22:
			hour = hour + 2
			while hour < 24:
				hours.append(hour)
				hour = hour + 1


		template = 'pc/select-time.html'
	
		if request.mobile:
			template = 'mobile/select-time.html'

		return render_to_response(template, {
				'hours': hours,
				'allhours': range(8,24),
				'today': now.date(),
				'myUncommittedGamesDate': myUncommittedGamesDate,
				'mySelectedGamesDate': mySelectedGamesDate,
				'opponentSelectedGamesDate': opponentSelectedGamesDate,
				'player1': game.player1.username,
				'player2': game.player2.username,
				'date': now,
				'user_me': request.user,
			})




	elif request.method == "POST":

		pst = Preferred_start_time.objects.get(player=request.user, game=game)
		gameDate = pst.game.start_time.date()

		for date in request.POST.getlist('hours'):
			pst = Preferred_start_time.objects.get(player=request.user, game=game)
			date = date.split("/")
			date = datetime.datetime(int(date[3]), int(date[2]), int(date[1]), int(date[0]), 0, 0)
			checkDate = Date_time.objects.filter(date_time = date, preferred_start_time = pst)

			if not checkDate:
				dateTime = Date_time(date_time = date, preferred_start_time = pst)
				dateTime.save()
				pst.committed = True
				pst.save()


			pst = Preferred_start_time.objects.filter(game = pst.game)

			if pst[0].committed and pst[1].committed:
				d_t1 = Date_time.objects.filter(preferred_start_time = pst[0])
				d_t2 = Date_time.objects.filter(preferred_start_time = pst[1])
				for d_t_player1 in d_t1:
					for d_t_player2 in d_t2:
						if d_t_player1.date_time == d_t_player2.date_time and not game.start_time_committed:
							game.start_time = d_t_player1.date_time
							game.start_time_committed = True
							game.save()
							notify_user(game.player1, 'time_commited', game)
							notify_user(game.player2, 'time_commited', game)
							return HttpResponseRedirect('/next-games')



		# Check if players saved the same hour to play
		for date in request.POST.getlist('hourselected'):

			checkDate = Date_time.objects.filter(date_time = date, preferred_start_time = pst)

			if not checkDate:
				dateTime = Date_time(date_time = date, preferred_start_time = pst)
				dateTime.save()
				pst.committed = True
				pst.save()


			pst = Preferred_start_time.objects.filter(game = pst.game)

			if pst[0].committed and pst[1].committed:
				d_t1 = Date_time.objects.filter(preferred_start_time = pst[0])
				d_t2 = Date_time.objects.filter(preferred_start_time = pst[1])
				for d_t_player1 in d_t1:
					for d_t_player2 in d_t2:
						if d_t_player1.date_time == d_t_player2.date_time and not game.start_time_committed:
							game.start_time = d_t_player1.date_time
							game.start_time_committed = True
							game.save()
							notify_user(game.player1, 'time_commited', game)
							notify_user(game.player2, 'time_commited', game)
							return HttpResponseRedirect('/next-games')


		return HttpResponseRedirect('/game-room/' + gid + "/select-time")
コード例 #3
0
ファイル: player_reminder.py プロジェクト: cristilav/FLEQ
#                       @@@@@@@@@@                                    #
#                                                                     #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 

from django.core.management import setup_environ
import settings

setup_environ(settings)

from quizbowl.models import Game
from quizbowl.views_notify import notify_user
import datetime

###
#import os
#from django.core.mail import send_mail
#os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
#send_mail("Bienvenido a FLEQ", "Eres un nuevo usuario de FLEQ", '*****@*****.**', ['*****@*****.**'])
###

print datetime.datetime.now()

thirty_minutes_ahead = datetime.datetime.utcnow() + datetime.timedelta(minutes=30)  # datetime X minutes ahead from now
g = Game.objects.filter(start_time__lte = thirty_minutes_ahead, start_time__gte = datetime.datetime.utcnow())


for game in g:
	if not game.log:
		notify_user(game.player1, 'hurry_up', game)
		notify_user(game.player2, 'hurry_up', game)
コード例 #4
0
ファイル: round_creator.py プロジェクト: cristilav/FLEQ
    s = Score.objects.filter(tournament = round.tournament.id).order_by('player_profile__timezone', 'points', '?') 
    # get'em ordered first by points, second randomly

    for r in s:
        print r.player.username
        print r.player_profile.timezone
    
    scores = list(s)

    if len(scores)%2:
        # if the number of players is odd, a random player is earned with 1 point and won't play this round  
        lucky_score = choice(scores)
        lucky_score.points += 1
        lucky_score.save()
        scores.remove(lucky_score)
        notify_user(lucky_score.player, 'meditation_round', round)

    while scores:
        player1 = scores.pop().player
        player2 = scores.pop().player
        default_date = round.finish_date 
        default_time = datetime.time(21,00)
        default_start_time = datetime.datetime.combine(default_date, default_time)
        
        game = Game(start_time = default_start_time, player1 = player1, player2 = player2, score_player1 = 0, score_player2 = 0, winner = round.tournament.admin, round = round)
        game.save()
        
        notify_user(player1, 'new_game', round)
        notify_user(player2, 'new_game', round)
        
        pst = Preferred_start_time(player = game.player1, game = game)
コード例 #5
0
import settings

setup_environ(settings)

from quizbowl.models import Round, Score, Tournament
from quizbowl.views_notify import notify_user
import datetime
import sys

t = Tournament.objects.all()
t = Tournament.objects.filter(start_date=datetime.date.today())

for tournament in t:
    if tournament.players.all().count() < 2:
        # tournaments with one or no users are deleted before starting
        notify_user(tournament.admin, 'tournament_canceled', tournament)
        if tournament.players.all().count() > 0:
            p = tournament.players.all()
            for player in p:
                notify_user(player, 'tournament_canceled', tournament)
        tournament.delete()

    else:
        p = tournament.players.all()
        for player in p:
            notify_user(player, 'new_tournament', tournament)

        i = 1
        actual_date = tournament.start_date
        while True:
            if i <= tournament.rounds:
コード例 #6
0
ファイル: round_creator.py プロジェクト: gregoriorobles/fleq
import sys

r = Round.objects.filter(start_date=datetime.date.today())

for round in r:
    s = Score.objects.filter(tournament=round.tournament.id).order_by(
        'points', '?')
    scores = list(s)

    if len(scores) % 2:
        # if the number of players is odd, a random player is earned with 1 point and won't play this round
        lucky_score = choice(scores)
        lucky_score.points += 1
        lucky_score.save()
        scores.remove(lucky_score)
        notify_user(lucky_score.player, 'meditation_round', round)

    while scores:
        player1 = scores.pop().player
        player2 = scores.pop().player
        default_date = round.finish_date
        default_time = datetime.time(22, 00)
        default_start_time = datetime.datetime.combine(default_date,
                                                       default_time)

        game = Game(start_time=default_start_time,
                    player1=player1,
                    player2=player2,
                    score_player1=0,
                    score_player2=0,
                    winner=round.tournament.admin,