# 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)
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")
# @@@@@@@@@@ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 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)
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)
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:
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,