Beispiel #1
0
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/')
Beispiel #2
0
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/')
Beispiel #3
0
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('/')