from otree.api import Currency as c, currency_range, expect, Bot from . import * import simplejson from otree.api import SubmissionMustFail class PlayerBot(Bot): def play_round(self): #importar diccionarios de json para la sección de VIVIENDA: with open('sedapal_survey/choices_survey.json','r',encoding='utf-8') as json_file: data=simplejson.load(json_file) choices=[] for x in data['distritos']: choices.append(x) with open('sedapal_survey/test_cases.json','r',encoding='utf-8') as json_file: values=simplejson.load(json_file) valid_values=values['values_validation'] yield Introduccion, dict( consentimiento = 1 ) yield Hogar_y_Vivienda_drop_edad, dict( edad = 19, informado = 1 ) ''' Encuestado Checkbox: marcar solo 1, con opción "otro" Dropdown de Distrito y provincia: tienen que ser las opciones correctas ''' #Marca más de una opción (casos consecutivos) para vinculo con jefe del hogar: for index in range(1,9): suma=1+index yield SubmissionMustFail(Hogar_y_Vivienda_encuestado,{"vinculo%s" %str(index):1,"vinculo%s" %str(suma):1,"genero1": 1,"genero2": 0,"genero3": 0,"genero4": 0,"otro_genero": '',"provincia":"Lima","distrito": "Lima"}) #Marca más de una opción (casos consecutivos) para genero: for index in range(1,4): suma=1+index yield SubmissionMustFail(Hogar_y_Vivienda_encuestado,{"genero%s" %str(index):1,"genero%s" %str(suma):1,"vinculo1":0,"vinculo2":0,"vinculo3":1,"vinculo4":0,"vinculo5":0,"vinculo6":0,"vinculo7":0,"vinculo8":0,"vinculo9":0,"otro_vinculo":"","provincia":"Lima","distrito": "Lima"}) #Marca "Otro", no llena espacio en blanco: #vinculo yield SubmissionMustFail(Hogar_y_Vivienda_encuestado,{"vinculo9" :1,"otro_vinculo":'',"genero1": 1,"genero2": 0,"genero3": 0,"genero4": 0,"otro_genero": '',"provincia":"Lima","distrito": "Lima"}) #genero yield SubmissionMustFail(Hogar_y_Vivienda_encuestado,{"genero4" :1,"otro_genero":'',"vinculo1":0,"vinculo2":0,"vinculo3":1,"vinculo4":0,"vinculo5":0,"vinculo6":0,"vinculo7":0,"vinculo8":0,"vinculo9":0,"otro_vinculo":"","provincia":"Lima","distrito": "Lima"} ) #No marca la opcion Otro pero si llena el espacio en blanco: for index in range(1,9): yield SubmissionMustFail(Hogar_y_Vivienda_encuestado,{"vinculo%s" %str(index):1,"otro_vinculo":'Abuelo',"genero1": 1,"genero2": 0,"genero3": 0,"genero4": 0,"otro_genero": '',"provincia":"Lima","distrito": "Lima"}) for index in range(1,4): yield SubmissionMustFail(Hogar_y_Vivienda_encuestado,{"genero%s" %str(index):1,"otro_genero":'algungenero',"vinculo1":0,"vinculo2":0,"vinculo3":1,"vinculo4":0,"vinculo5":0,"vinculo6":0,"vinculo7":0,"vinculo8":0,"vinculo9":0,"otro_vinculo":"","provincia":"Lima","distrito": "Lima"}) #No marca ninguna opción: #vinculo: yield SubmissionMustFail(Hogar_y_Vivienda_encuestado,{"vinculo1":0,"vinculo2":0,"vinculo3":0,"vinculo4":0,"vinculo5":0,"vinculo6":0,"vinculo7":0,"vinculo8":0,"vinculo9":0,"otro_vinculo":"","genero1": 1,"genero2": 0,"genero3": 0,"genero4": 0,"otro_genero": '',"provincia":"Lima","distrito": "Lima"}) #genero: yield SubmissionMustFail(Hogar_y_Vivienda_encuestado,{"vinculo1":0,"vinculo2":1,"vinculo3":0,"vinculo4":0,"vinculo5":0,"vinculo6":0,"vinculo7":0,"vinculo8":0,"vinculo9":0,"otro_vinculo":"","genero1": 0,"genero2": 0,"genero3": 0,"genero4": 0,"otro_genero": '',"provincia":"Lima","distrito": "Lima"}) #Marca distrito inválido: for index in ["---Lima---","---Callao---", "---No vivo en Lima Metropolitana ni Callao---"]: yield SubmissionMustFail(Hogar_y_Vivienda_encuestado,{"vinculo1":0,"vinculo2":0,"vinculo3":0,"vinculo4":0,"vinculo5":1,"vinculo6":0,"vinculo7":0,"vinculo8":0,"vinculo9":0,"otro_vinculo":"","genero1": 1,"genero2": 0,"genero3": 0,"genero4": 0,"otro_genero": '',"provincia":"Lima","distrito":index}) #Marca distinto distrito y provincia: Lima: dicts=[] for ele in choices: for key, value in ele.items(): dicts.append(value) distritos_callao=dicts[1] distritos_callao.remove('---Callao---') for index in distritos_callao: yield SubmissionMustFail(Hogar_y_Vivienda_encuestado,{"vinculo1":0,"vinculo2":0,"vinculo3":0,"vinculo4":0,"vinculo5":1,"vinculo6":0,"vinculo7":0,"vinculo8":0,"vinculo9":0,"otro_vinculo":"","genero1": 1,"genero2": 0,"genero3": 0,"genero4": 0,"otro_genero": '',"provincia":"Lima","distrito":index}) #Marca distinto distrito y provincia: Callao: distritos_lima=dicts[0] distritos_lima.remove('---Lima---') for index in distritos_lima: yield SubmissionMustFail(Hogar_y_Vivienda_encuestado,{"vinculo1":0,"vinculo2":0,"vinculo3":0,"vinculo4":0,"vinculo5":1,"vinculo6":0,"vinculo7":0,"vinculo8":0,"vinculo9":0,"otro_vinculo":"","genero1": 1,"genero2": 0,"genero3": 0,"genero4": 0,"otro_genero": '',"provincia":"Callao","distrito":index}) #No marca ni Lima ni Callao en provincia: distritos=distritos_lima+distritos_callao for index in distritos: yield SubmissionMustFail(Hogar_y_Vivienda_encuestado,{"vinculo1":0,"vinculo2":0,"vinculo3":0,"vinculo4":0,"vinculo5":1,"vinculo6":0,"vinculo7":0,"vinculo8":0,"vinculo9":0,"otro_vinculo":"","genero1": 1,"genero2": 0,"genero3": 0,"genero4": 0,"otro_genero": '',"provincia":"No vivo en Lima Metropolitana ni Callao","distrito":index}) #Marca Lima o Calla en provincia, pero en distrito marca que no vive ni en Lima ni Callao: for index in ["Lima","Callao"]: yield SubmissionMustFail(Hogar_y_Vivienda_encuestado,{"vinculo1":0,"vinculo2":0,"vinculo3":0,"vinculo4":0,"vinculo5":1,"vinculo6":0,"vinculo7":0,"vinculo8":0,"vinculo9":0,"otro_vinculo":"","genero1": 1,"genero2": 0,"genero3": 0,"genero4": 0,"otro_genero": '',"provincia":index,"distrito":"No vivo en Lima Metropolitana ni Callao"}) yield Hogar_y_Vivienda_encuestado, dict( vinculo1 = 0, vinculo2 = 0, vinculo3 = 1, vinculo4 = 0, vinculo5 = 0, vinculo6 = 0, vinculo7 = 0, vinculo8 = 0, vinculo9 = 0, otro_vinculo = '', genero1 = 1, genero2 = 0, genero3 = 0, genero4 = 0, otro_genero = '', provincia = "Lima",#dropdown distrito = "Lima" #dropdown ) ''' Celular No hay checkboxes, solo rellenar valores ''' #Valores de número de celular: for value in valid_values['valid_celular']: yield SubmissionMustFail(Hogar_y_Vivienda_celular,dict(celular=value)) #Valores de correo: for value in valid_values['valid_correo']: yield SubmissionMustFail(Hogar_y_Vivienda_celular,dict(correo=value)) yield Hogar_y_Vivienda_celular, dict( celular = 992345678, #espacio para rellenar correo = '' #espacio para rellenar ) ''' Jefe hogar Checkbox: solo marcar uno, opción de "otro" Dropdown de edad, radioselect de grado de estudios ''' #si el que llena la encuesta es jefe de hogar: if self.player.vinculo1 == True: yield Hogar_y_Vivienda_jefehogar, dict( grado_estudios_jefe_hogar = "Secundaria" ) #Si el que llena la encuesta no es jefe de hogar: else: #Marca más de una opción (casos consecutivos) para genero del jefe de hogar: for index in range(1,4): suma=index+1 yield SubmissionMustFail(Hogar_y_Vivienda_jefehogar,{"edad_jefe_hogar":19,"genero_jefe%s" %str(index):1,"genero_jefe%s" %str(suma):1,"grado_estudios_jefe_hogar": "Secundaria"}) #Marca "Otro", no llena espacio en blanco: yield SubmissionMustFail(Hogar_y_Vivienda_jefehogar,{"edad_jefe_hogar":19,"genero_jefe4" :1,"otro_genero_jefe":'',"grado_estudios_jefe_hogar": "Secundaria"}) #No marca la opcion Otro pero si llena el espacio en blanco: for index in range(1,4): yield SubmissionMustFail(Hogar_y_Vivienda_jefehogar,{"edad_jefe_hogar":19,"genero_jefe%s" %str(index):1,"otro_genero_jefe":'otrogenero',"grado_estudios_jefe_hogar": "Secundaria"}) #No marca ninguna opción: yield SubmissionMustFail(Hogar_y_Vivienda_jefehogar,{"edad_jefe_hogar":19,"genero_jefe1":0, "genero_jefe2":0,"genero_jefe3":0,"genero_jefe4":0, "otro_genero_jefe":"","grado_estudios_jefe_hogar": "Secundaria"}) yield Hogar_y_Vivienda_jefehogar, dict( edad_jefe_hogar= 19, #dropdown genero_jefe1 = 1, genero_jefe2 = 0, genero_jefe3 = 0, genero_jefe4 = 0, otro_genero_jefe = '', grado_estudios_jefe_hogar = "Secundaria" #radioselect ) ''' Demografia Checkbox: puede marcar más de uno Dropdown de miembros del hogar ''' #No marca ninguna opción: yield SubmissionMustFail(Hogar_y_Vivienda_demografia,{"miembros_hogar":1,"cuantos_miembros_5":0,"cuantos_miembros_6_17":0,"cuantos_miembros_18_35":0,"cuantos_miembros_36_64":0,"cuantos_miembros_65": 0}) yield Hogar_y_Vivienda_demografia, dict( miembros_hogar = 1, #dropdown cuantos_miembros_5 = 1, cuantos_miembros_6_17 = 0, cuantos_miembros_18_35 = 0, cuantos_miembros_36_64 = 0, cuantos_miembros_65 = 0 ) ''' NSE No hay checkboxes, solo dropdown de cuantas personas trabajan en el hogar ''' yield Hogar_y_Vivienda_NSE, dict( cuantos_trabajaron = 1 #dropdown ) ''' Suministro_sector No hay checkboxes, solo rellenar valores ''' #Valores de suministro 1: for value in valid_values['valid_suministro1']: yield SubmissionMustFail(Hogar_y_Vivienda_suministro_sector,{"numero_suministro":value,"numero_suministro_2":1,"numero_sector":103}) #Valores de suministro 2: for value in valid_values['valid_suministro2']: yield SubmissionMustFail(Hogar_y_Vivienda_suministro_sector,{"numero_suministro_2":value,"numero_suministro":1,"numero_sector":103}) #Valores de sector: for value in valid_values['valid_sector']: yield SubmissionMustFail(Hogar_y_Vivienda_suministro_sector,{"numero_sector":value,"numero_suministro_2":1,"numero_suministro":1}) yield Hogar_y_Vivienda_suministro_sector, dict( numero_suministro = 1234567, #espacio para rellenar numero_suministro_2 = 1, #espacio para rellenar numero_sector = 103 #espacio para rellenar ) ''' Vivienda Checkboxes: Hay opción "Ninguna" y "Otro", Dropdown de habitaciones, baños y hogar ''' #Marca más de una opción (casos consecutivos): for index in range(1,6): yield SubmissionMustFail(Hogar_y_Vivienda_vivienda,{"vivienda%s" %str(index):1,"vivienda%s" %str(index+1):1,"otro_vivienda": '',"hogares": 5,"habitaciones": 3,"baños": 4,"adiciones_1": 1,"adiciones_2": 0,"adiciones_3": 0,"adiciones_4": 0,"adiciones_5": 0,"adiciones_6": 0}) #No marca la opcion Otro pero si llena el espacio en blanco for index in range(1,6): yield SubmissionMustFail(Hogar_y_Vivienda_vivienda,{"vivienda%s" %str(index):1,"otro_vivienda":'otravivienda',"hogares": 5,"habitaciones": 3,"baños": 4,"adiciones_1": 1,"adiciones_2": 0,"adiciones_3": 0,"adiciones_4": 0,"adiciones_5": 0,"adiciones_6": 0}) #Si marca Ninguna no puede marcar otra opcion for index in range(1,6): yield SubmissionMustFail(Hogar_y_Vivienda_vivienda,{"vivienda%s" %str(index):1,"vivienda6":1,"otro_vivienda":"","hogares": 5,"habitaciones": 3,"baños": 4,"adiciones_1": 1,"adiciones_2": 0,"adiciones_3": 0,"adiciones_4": 0,"adiciones_5": 0,"adiciones_6": 0}) #Marca "Otro", no llena espacio en blanco: yield SubmissionMustFail(Hogar_y_Vivienda_vivienda,{"vivienda6" :1,"otro_vivienda":'',"hogares": 5,"habitaciones": 3,"baños": 4,"adiciones_1": 1,"adiciones_2": 0,"adiciones_3": 0,"adiciones_4": 0,"adiciones_5": 0,"adiciones_6": 0}) #No marca ninguna opción: #vivienda: yield SubmissionMustFail(Hogar_y_Vivienda_vivienda,{"vivienda1":0,"vivienda2":0,"vivienda3":0,"vivienda4":0,"vivienda5":0,"vivienda6":0,"otro_vivienda": '',"hogares": 5,"habitaciones": 3,"baños": 4,"adiciones_1": 1,"adiciones_2": 0,"adiciones_3": 0,"adiciones_4": 0,"adiciones_5": 0,"adiciones_6": 0}) #adiciones: yield SubmissionMustFail(Hogar_y_Vivienda_vivienda,{"vivienda1":1,"vivienda2":0,"vivienda3":0,"vivienda4":0,"vivienda5":0,"vivienda6":0,"otro_vivienda": '',"hogares": 5,"habitaciones": 3,"baños": 4,"adiciones_1": 0,"adiciones_2": 0,"adiciones_3": 0,"adiciones_4": 0,"adiciones_5": 0,"adiciones_6": 0}) yield Hogar_y_Vivienda_vivienda, dict( vivienda1 = 1, vivienda2 = 0, vivienda3 = 0, vivienda4 = 0, vivienda5 = 0, vivienda6 = 0, otro_vivienda = '', hogares = 5, #dropdown habitaciones = 3, #dropdown baños = 4, #dropdown adiciones_1 = 1, adiciones_2 = 0, adiciones_3 = 0, adiciones_4 = 0, adiciones_5 = 0, adiciones_6 = 0, ) ''' Servicio_Agua1 Tipo de checkbox: Marca todas las que apliquen Hay opcion "Otro" pero no opcion "Ninguna" ''' #No marca la opcion Otro pero si llena el espacio en blanco for abs_index in range(1,7): yield SubmissionMustFail(Servicio_agua1,{"abastecimiento%s" %abs_index:1,"abastecimiento7":0,"abastecimiento7_otro":'agua de los andes',"recibo_otroshogares":"No", "pago_mes" : 99-abs_index}) #Marca la opcion de Otro pero no llena el espacio en blanco for abs_index in range(1,7): yield SubmissionMustFail(Servicio_agua1,{"abastecimiento%s" %abs_index:1,"abastecimiento7":1,"abastecimiento7_otro":'',"recibo_otroshogares":"No sé", "pago_mes" : 99-abs_index}) #Caso especial: No marca ninguna opcion yield SubmissionMustFail(Servicio_agua1,dict( abastecimiento1 = 0, abastecimiento2 = 0, abastecimiento3 = 0, abastecimiento4 = 0, abastecimiento5 = 0, abastecimiento6 = 0, abastecimiento7 = 0, abastecimiento7_otro = '', recibo_otroshogares="Sí", #RadioSelect pago_mes = 84 #recuadro para llenar )) #Pago mensual dentro del rango 0 al 10,000 with open("sedapal_survey/test_cases.json","r",encoding="utf-8") as json_file: data=simplejson.load(json_file) for caso in data['values_validation']['valid_servicio_agua']: yield SubmissionMustFail(Servicio_agua1,dict( abastecimiento1 = 0, abastecimiento2 = 1, abastecimiento3 = 0, abastecimiento4 = 0, abastecimiento5 = 1, abastecimiento6 = 0, abastecimiento7 = 1, abastecimiento7_otro = 'agua de lavadora', recibo_otroshogares="No", pago_mes=caso )) yield Servicio_agua1, dict( #checkboxes abastecimiento1 = 0, abastecimiento2 = 1, abastecimiento3 = 0, abastecimiento4 = 0, abastecimiento5 = 1, abastecimiento6 = 0, abastecimiento7 = 1, abastecimiento7_otro = 'agua de lavadora', recibo_otroshogares="No", #RadioSelect pago_mes = 99 #recuadro para llenar ) ''' Servicio_Agua2 Tipo de checkbox: Marca todas las que apliquen Hay opcion "Ninguna" pero no opcion de "Otro" instalaciones5=Ninguna ''' #si marca Ninguna no puede marcar otra opcion for ins_index in range(1,5): yield SubmissionMustFail(Servicio_agua2,{"instalaciones%s" %ins_index:1,"instalaciones5":1,"dispone_agua":3,"dispone_agua2":23-ins_index,"cortes_servicio":"No"}) #Caso especial: Debe responder la pregunta (no esta marcando ninguna opcion) yield SubmissionMustFail(Servicio_agua2,dict( instalaciones1=0, instalaciones2=0, instalaciones3=0, instalaciones4=0, instalaciones5=0, dispone_agua=7, #dropdown dispone_agua2 = 3, #dropdown cortes_servicio="Sí" #RadioSelect )) yield Servicio_agua2, dict( #checkboxes instalaciones1=0, instalaciones2=0, instalaciones3=0, instalaciones4=0, instalaciones5=1, dispone_agua=5, #dropdown dispone_agua2 = 20, #dropdown cortes_servicio='No' #RadioSelect ) ''' Consumo_habitos1 No hay checkbox, solo un slider ''' #Si no marca nada en el slider yield SubmissionMustFail(Consumo_habitos1,dict(consumo_afirmacion2=None)) yield Consumo_habitos1,dict( consumo_afirmacion='No', consumo_afirmacion2=99 ) ''' Consumo_habitos2 No hay checkbox, solo dos sliders ''' #Si no selecciona ninguno de los dos sliders yield SubmissionMustFail(Consumo_habitos2,dict(ahorro_agua3=None,ahorro_agua4=None)) yield Consumo_habitos2, dict( #RadioSelect ahorro_agua1='No', ahorro_agua2='No', #Sliders ahorro_agua3=99, ahorro_agua4=55 ) ''' Consumo_habitos3 Tipo de checkbox: Marca todas las que apliquen Hay opcion "Ninguna" y opcion "Otro" consumo_habitos9=Ninguna consumo_habitos8=Otro ''' #si no selecciona el slider yield SubmissionMustFail(Consumo_habitos3,dict( consumo_agua=None, )) #Si marca Ninguna no puede marcar otra opcion for cons_index in range(1,9): yield SubmissionMustFail(Consumo_habitos3,{"consumo_agua":99-cons_index,"consumo_habitos%s" %cons_index:1,"consumo_habitos9":1}) #No marca la opcion Otro pero si llena el espacio en blanco for cons_index in range(1,8): yield SubmissionMustFail(Consumo_habitos3,{"consumo_agua":50-cons_index,"consumo_habitos%s" %cons_index:1,"consumo_habitos8":0,"consumo_habitos8_otro":'consumo agua'}) #Marca la opcion de Otro pero no llena el espacio en blanco for cons_index in range(1,8): yield SubmissionMustFail(Consumo_habitos3,{"consumo_agua":30-cons_index,"consumo_habitos%s" %cons_index:1,"consumo_habitos8":1,"consumo_habitos8_otro":''}) #Caso especial: no marca ninguna opcion (ningun checkbox) yield SubmissionMustFail(Consumo_habitos3,dict( consumo_agua=23, consumo_habitos1=0, consumo_habitos2=0, consumo_habitos3=0, consumo_habitos4=0, consumo_habitos5=0, consumo_habitos6=0, consumo_habitos7=0, consumo_habitos8=0, consumo_habitos9=0, consumo_habitos8_otro='' )) yield Consumo_habitos3,dict( consumo_agua=99, consumo_habitos1=0, consumo_habitos2=1, consumo_habitos3=0, consumo_habitos4=0, consumo_habitos5=1, consumo_habitos6=0, consumo_habitos7=1, consumo_habitos8=0, consumo_habitos9=0, consumo_habitos8_otro='' ) ''' Consumo_habitos4 Tipo de checkbox: Marca hasta 2 opciones Hay opcion "Otro" motivacion8=Otro ''' #Solo se puede marcar hasta 2 opciones for mot_index in range(1,7): yield SubmissionMustFail(Consumo_habitos4,{"consumo_inversion_ahorrar":'No',"motivacion%s" %mot_index:1,"motivacion7":1,"motivacion8":1,"motivacion8_otro":'los pinguinos',"soles_ahorrados":"2 soles","reminder":2}) #No marca la opcion Otro pero si llena el espacio en blanco for mot_index in range(1,8): yield SubmissionMustFail(Consumo_habitos4,{"consumo_inversion_ahorrar":'Sí',"motivacion%s" %mot_index:1,"motivacion8":0,"motivacion8_otro":'el aire',"soles_ahorrados":"3 soles","reminder":3}) #Marca la opcion de Otro pero no llena el espacio en blanco for mot_index in range(1,8): yield SubmissionMustFail(Consumo_habitos4,{"consumo_inversion_ahorrar":'No',"motivacion%s" %mot_index:1,"motivacion8":1,"motivacion8_otro":'',"soles_ahorrados":"4 soles","reminder":4}) #Caso especial: no marca ninguna opcion yield SubmissionMustFail(Consumo_habitos4,dict( consumo_inversion_ahorrar='Sí', #checkboxes motivacion1=0, motivacion2=0, motivacion3=0, motivacion4=0, motivacion5=0, motivacion6=0, motivacion7=0, motivacion8=0, motivacion8_otro='', soles_ahorrados="8 soles", reminder="4" )) yield Consumo_habitos4,dict( consumo_inversion_ahorrar='No', #radioSelect #checkboxes motivacion1=0, motivacion2=0, motivacion3=0, motivacion4=0, motivacion5=1, motivacion6=0, motivacion7=0, motivacion8=1, motivacion8_otro='el medio ambiente', soles_ahorrados="5 soles", #dropdown reminder="2" #dropdown ) ''' Pago_servicio Tipo de checkbox: Marca hasta 2 opciones Hay opcion "Otro" agua_pago_servicio5=Otro ''' #Solo se puede marcar hasta 2 opciones for servicio_index in range(1,4): yield SubmissionMustFail(Pago_servicio,{"agua_pago_servicio%s" %servicio_index:1,"agua_pago_servicio4":1,"agua_pago_servicio5":1,"agua_pago_servicio5_otro":'le pago a mi vecino'}) #Si marca la opcion agua_pago_servicio6 no puede marcar otra opcion for servicio_index in range(1,6): yield SubmissionMustFail(Pago_servicio,{"agua_pago_servicio%s" %servicio_index:1,"agua_pago_servicio6":1}) #No marca la opcion Otro pero si llena el espacio en blanco for servicio_index in range(1,5): yield SubmissionMustFail(Pago_servicio,{"agua_pago_servicio%s" %servicio_index:1,"agua_pago_servicio5":0,"agua_pago_servicio5_otro":'con tarjeta cineplanet'}) #Marca la opcion de Otro pero no llena el espacio en blanco for servicio_index in range(1,5): yield SubmissionMustFail(Pago_servicio,{"agua_pago_servicio%s" %servicio_index:1,"agua_pago_servicio5":1,"agua_pago_servicio5_otro":''}) #Caso especial: no marca ninguna opcion yield SubmissionMustFail(Pago_servicio,{"agua_pago_servicio%s" %servicio_index:0 for servicio_index in range(1,7)}) yield Pago_servicio,dict( #checkboxes agua_pago_servicio1=1, agua_pago_servicio2=0, agua_pago_servicio3=0, agua_pago_servicio4=0, agua_pago_servicio5=1, agua_pago_servicio5_otro = 'tarjeta led', agua_pago_servicio6=0, ) ''' Cualidades_Servicio No hay checkbox, ni sliders solo RadioSelect y Dropdowns ''' #No marca algunos fields yield SubmissionMustFail(Cualidades_Servicio,dict( atributo2=2, pago_consumo='Injusto', servicio_mejor_dos='No, la calidad del servicio ha empeorado mucho' )) yield Cualidades_Servicio,dict( #RadioSelects atributo1 = 1, atributo2 = 2, atributo3 = 3, pago_consumo='Prefiero no indicar', pago_consumo2='Injusto', servicio_mejor_dos='Se ha mantenido' ) ''' Global Preferences Solo sliders ''' for slider in range(1,5): yield SubmissionMustFail(Global_preferences,{"dispuesto_riesgos":None,"disposicion%s" %slider:6}) for slider in range(1,6): yield SubmissionMustFail(Global_preferences,{"dispuesto_riesgos":None,"describe%s" %slider:6}) yield SubmissionMustFail(Global_preferences,{"describe%s" %slider:None for slider in range(1,6)}) yield SubmissionMustFail(Global_preferences,{"disposicion%s" %slider:None for slider in range(1,5)}) yield Global_preferences,dict( #Sliders dispuesto_riesgos=5, disposicion1=8, disposicion2=6, disposicion3=1, disposicion4=4, describe1=1, describe2=2, describe3=6, describe4=9, describe5=8, )