def init_contracts(request): if request.user.username not in settings.ADMIN_SUNETID: return render_to_response('message.html', {'message' : 'You aren\'t authorized to view that page.', 'user' : current_person, 'dorm_name' : settings.DORM_NAME}) Contract.objects.all().delete() people = get_people(request.POST['start_list'].split(), list(Person.objects.all())) for i in range(len(people)): people[i].status = PersonStatus.ALIVE people[i].save() c = Contract(assassin=people[i], target=people[(i+1)%len(people)], start_time=datetime.now(), status=ContractStatus.ACTIVE) c.save() send_contract_email(c.assassin.sunetid, c.target.name()) print >> sys.stderr, "Sent to {0}".format(c.assassin.name()) time.sleep(1) return redirect('/admin/')
def scramble_remaining(request): if request.user.username not in settings.ADMIN_SUNETID: return render_to_response('message.html', {'message' : 'You aren\'t authorized to view that page.', 'user' : current_person}) old_contracts = Contract.objects.filter(status=ContractStatus.ACTIVE) pending_contracts = Contract.objects.filter(Q(status=ContractStatus.PENDING) | Q(status=ContractStatus.PENDING_TERMINATED)) for contract in old_contracts: contract.status = ContractStatus.INCOMPLETE contract.save() for contract in pending_contracts: contract.status = ContractStatus.COMPLETE contract.save() people = get_people(request.POST['start_list'].split(), list(Person.objects.filter(status=PersonStatus.ALIVE))) for i in range(len(people)): c = Contract(assassin=people[i], target=people[(i+1)%len(people)], start_time=datetime.now(), status=ContractStatus.ACTIVE) c.save() send_contract_email(c.assassin.sunetid, c.target.name()) print >> sys.stderr, "Sent to {0}".format(c.assassin.name()) time.sleep(1) return redirect('/admin/')
def confirm_death(request): current_person = None if request.user.username in settings.ADMIN_SUNETID: #Allows admins to force confirm death current_person = Person.objects.get(sunetid=request.POST['sunetid']) else: current_person = Person.objects.get(sunetid=request.user.username) if not current_person: return render_to_response('message.html', {'message' : "You aren't in the game.", 'user' : current_person}) completed_contract = Contract.objects.filter(target=current_person).filter(Q(status=ContractStatus.PENDING) | Q(status=ContractStatus.PENDING_TERMINATED)) actual_completed_contract = Contract.objects.filter(target=current_person, status=ContractStatus.COMPLETE) if len(completed_contract) > 0: completed_contract = completed_contract.get() elif len(actual_completed_contract) > 0: return render_to_response('message.html', {'message' : 'You have already been confirmed dead.', 'user' : current_person, 'dorm_name' : settings.DORM_NAME}) else: return render_to_response('message.html', {'message' : 'It seems no one has claimed that you are dead.', 'user' : current_person, 'dorm_name' : settings.DORM_NAME}) current_person.status = PersonStatus.DEAD current_person.save() old_status = completed_contract.status if completed_contract and completed_contract.status: completed_contract.status = ContractStatus.COMPLETE completed_contract.save() contract = Contract.objects.filter(Q(status=ContractStatus.ACTIVE) | Q(status=ContractStatus.PENDING) | Q(status=ContractStatus.PENDING_TERMINATED), assassin=current_person) if contract: contract = contract[0] contract.status = ContractStatus.INCOMPLETE contract.save() if (completed_contract.assassin != contract.target): newcontract = Contract(assassin=completed_contract.assassin, target=contract.target, start_time=datetime.now(), status=ContractStatus.ACTIVE) newcontract.save() if old_status == ContractStatus.PENDING: send_contract_email(completed_contract.assassin.sunetid, contract.target.name()) else: send_terminated_email(completed_contract.assassin.sunetid, completed_contract.target.name().split()[0], contract.target.name()) else: send_mail('Game Over!', '%s won the game.' % completed_contract.assassin.name(), settings.ADMIN_SUNETID[0]) return redirect('/')