Ejemplo n.º 1
0
    def test_crear_cajas_crea_instancias_de_box(self):
        """
        No boxes into the db but instances of 'Box'
        """
        
        bt = BoxTransmogrifier()
        for x in xrange(1, 10):
            cajas = self.randomboxes(choices=[self.a_pk, self.b_pk], number=x)
            
            lista_de_cajas = bt.crear_lista_de_cajas_apartir_de_lista_str(cajas)

            # Has to be box instance
            self.assert_(all([isinstance(b, Box) for b in lista_de_cajas]))
Ejemplo n.º 2
0
def pedido(request):
    # Context for the first template

    alfajores = Producto.objects.filter(tipo="Alfajor")
    bombones = Producto.objects.filter(tipo="Bombon")

    alfajores_disp = Producto.objects.filter(tipo="Alfajor",
                                             disponible=True).order_by('?')

    if alfajores_disp:
        alfajor = alfajores_disp[0]
    else:
        alfajor = None

    c = { 'date' : datetime.now(),
          'alfajores' : alfajores,
          'bombones' : bombones,
          'init_prod': alfajor, }

    pedido =  request.session.get(SESSION_PEDIDO_KEY, None)
    if pedido:
        c['pedido'] = pedido

    context = RequestContext(request, c)

    if request.method == 'POST':
        cajas = [s for s in request.POST.getlist('cajas[]') if s]
        

        # Object to validate boxes
        bt = BoxTransmogrifier()

        try:
            # before creating an object into the db, validate.
            # If cajas == "", also throw ValueError
            lista_de_cajas = bt.crear_lista_de_cajas_apartir_de_lista_str(cajas)

        except ValueError, e:
            # if error, no order
            pedido = None
        else:
            pedido = bt

        # if there is an order, go to next step
        if pedido:
            request.session[SESSION_PEDIDO_KEY] = pedido
            return HttpResponseRedirect(reverse('datos-de-envio'))
Ejemplo n.º 3
0
    def test_crear_pedido(self):
        
        bt = BoxTransmogrifier()
        bt.datos_de_envio = DatosDeEnvio.objects.create(**self._data)
        bt.gastos_de_envio = GastosDeEnvio.objects.get(provincia="C",
                                                       localidad="")
        for x in xrange(1, 10):
            cajas = self.randomboxes(choices=[self.a_pk, self.b_pk], number=x)
            
            lista_de_cajas = bt.crear_lista_de_cajas_apartir_de_lista_str(cajas)
            

            pedido = bt.crear_pedido()
            self.assert_(pedido)
            self.assert_(pedido.pk)
            
            sk = lambda obj : obj.pk

            # Take into account that the order can be different, so we
            # compare size of boxes first
            _len = lambda obj : obj.total_de_productos()
            self.assertEqual(sorted(map(_len, lista_de_cajas)),
                             sorted(map(_len, pedido.cajas.all())))

            # Now we compare that every item of the box (flatten)
            elems0 = sorted((elem
                             for box in lista_de_cajas
                             for elem in box), key=sk)

            elems1 = sorted((elem
                             for caja in pedido.cajas.all()
                             for elem in caja), key=sk)

            self.assertEqual(list(elems0), list(elems1))

        self.assertEqual(Pedido.objects.all().count(), 9)
Ejemplo n.º 4
0
 def test_validar_cajas_simple(self):
     bt = BoxTransmogrifier()
     for x in xrange(1, 10):
         cajas = self.randomboxes(choices=[self.a_pk, self.b_pk], number=x)
         self.assert_(bt.crear_lista_de_cajas_apartir_de_lista_str(cajas))