def getPremi(request, pk_premi ): visitant = hlp_visitant_checkUser( request.user ) #frmFact = modelform_factory( CapturaDePremi, fields = ('captures_qr', ) ) premi = get_object_or_404( Premi, pk = pk_premi) captura = CapturaDePremi( premi = premi, visitant = visitant, codi_de_recollida = str(pk_premi) ) #TODO if request.method == 'POST': #frm = frmFact( request.POST, instance = captura ) frm = getPremiForm( request.POST ) frm.fields['captures_qr'].queryset = visitant.capturadeqr_set.filter( bescanviat_cache = False, caduca_dia__gte = date.today() ) if frm.is_valid(): try: #captura = frm.save( commit = False ) premi.bind_to_owner( frm.cleaned_data["captures_qr"] ) url = reverse( 'visitant:play_estat' ) messages.success(request, u'Premi capturat.') return HttpResponseRedirect( url ) except ValidationError, e: frm._errors.setdefault(NON_FIELD_ERRORS, []).extend( e.messages )
except ValidationError, e: frm._errors.setdefault(NON_FIELD_ERRORS, []).extend( e.messages ) else: capturesDeQR = visitant.capturadeqr_set.filter( bescanviat_cache = False, caduca_dia__gte = date.today() ) capturesNecessaries = [] suma = 0 for c in sorted( capturesDeQR, key = lambda x: x.caduca_dia): capturesNecessaries.append( c ) suma += c.punts_cache if suma >= premi.punts_cache: break #frm = frmFact( instance = captura, initial = { 'captures_qr': capturesNecessaries , } ) frm = getPremiForm( initial = { 'captures_qr': capturesNecessaries , } ) frm.fields['captures_qr'].queryset = visitant.capturadeqr_set.filter( bescanviat_cache = False ) frm.fields['captures_qr'].widget = CheckboxSelectMultiple( ) frm.helper = FormHelper() frm.helper.form_class = 'form-horizontal' frm.helper.layout = Layout( 'captures_qr', FormActions( Submit('save_changes', u"Me'l quedo!"), #Button('cancel', 'Cancel'), ) ) return render_to_response( 'form_getPremi.html',