def strategy(request,username,name): t=StudentTeam.objects.get(pk=name) tm=TeamMonth.objects.filter(team=t).filter(month=t.cm)[0] strategies=TeamStrategy.objects.filter(team=t).filter(month=t.cm.month_id-1) adjusted_round_limit=t.round_limit+timedelta(minutes=60) if strategies: strategies=roundings(strategies) StrategyFormSet=formset_factory(StrategyForm, extra=tm.strat_num) c=str(tm.strat_num) data={'form-TOTAL_FORMS': c,'form-INITIAL_FORMS': u'0','form-MAX_NUM_FORMS': u''} formset=StrategyFormSet(data) if request.method=='POST': formset=StrategyFormSet(request.POST) if formset.is_valid(): chk=0 for form in formset: if(form.cleaned_data['gearing']>t.maxg): return render(request,'game/Step2.html',{'name':name,'username': username,'formset':formset,'status':t.approve, 'error':'Your gearing level cannot exceed %s'%(t.maxg), 'limit':t.round_limit, 'lmonth':t.round_limit.strftime("%B"),'aum':round(tm.aum),'strategies':strategies}) chk+=form.cleaned_data['weight'] if(chk==100): for form in formset: g=0 if form.cleaned_data['gearing']: g=form.cleaned_data['gearing'] ts=TeamStrategy(team=t,month=t.cm,name=form.cleaned_data['name'],weight=form.cleaned_data['weight'], gearing=g,profit=0.0,market_return=0.0) ts.save() return HttpResponseRedirect(BASE_URL+'%(username)s/%(name)s/game/4/' %{"username":username,"name":name}) else: return render(request,'game/Step2.html',{'name':name,'username': username,'formset':formset,'status':t.approve, 'error':'The weights do not add up to 100%','month':t.cm, 'limit':t.round_limit,'lmonth':t.round_limit.strftime("%B"),'aum':round(tm.aum),'strategies':strategies}) else: return render(request,'game/Step2.html',{'name':name,'username': username,'formset':formset,'status':t.approve, 'error':'Invalid','month':t.cm, 'limit':t.round_limit,'lmonth':t.round_limit.strftime("%B"),'aum':round(tm.aum),'strategies':strategies}) if(t.cm.month_id==t.launch_month.month_id): return render_to_response('game/Step2.html',{'name': name, 'username': username, 'status':t.approve, 'formset':formset,'error':'', 'month':t.cm, 'limit':adjusted_round_limit,'lmonth':t.round_limit.strftime("%B"),'aum':round(t.saum),'strategies':strategies},RequestContext(request)) return render_to_response('game/Step2.html',{'name': name, 'username': username, 'status':t.approve, 'formset':formset,'error':'', 'month':t.cm, 'limit':adjusted_round_limit,'lmonth':t.round_limit.strftime("%B"),'aum':round(tm.aum),'strategies':strategies}, RequestContext(request))
def record_new_strategies(t): tss=TeamStrategy.objects.filter(team=t).filter(month=t.cm.month_id-1) for s in tss: ts=TeamStrategy(team=t,month=t.cm,name=s.name,weight=s.weight, gearing=s.gearing,profit=0.0,market_return=0.0) ts.save()