Example #1
0
def article_request(request):
    if request.method == 'POST':
        article = Article.objects.get(id=request.POST['article_id'])

        if request.user.enabled:
            try:
                string_inicio = request.POST[
                    'fecha_inicio'] + " " + request.POST['hora_inicio']
                start_date_time = datetime.strptime(string_inicio,
                                                    '%Y-%m-%d %H:%M')
                string_fin = request.POST['fecha_fin'] + " " + request.POST[
                    'hora_fin']
                end_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

                if start_date_time > end_date_time:
                    messages.warning(
                        request,
                        'La reserva debe terminar después de iniciar.')
                elif start_date_time < datetime.now() + timedelta(hours=1):
                    messages.warning(
                        request,
                        'Los pedidos deben ser hechos al menos con una hora de anticipación.'
                    )
                elif start_date_time.date() != end_date_time.date():
                    messages.warning(
                        request,
                        'Los pedidos deben ser devueltos el mismo día que se entregan.'
                    )
                elif not verificar_horario_habil(
                        start_date_time) or not verificar_horario_habil(
                            end_date_time):
                    messages.warning(
                        request,
                        'Los pedidos deben ser hechos en horario hábil de Lunes a Viernes entre 9:00 y 18:00.'
                    )
                else:
                    loan = Loan(article=article,
                                starting_date_time=start_date_time,
                                ending_date_time=end_date_time,
                                user=request.user)
                    loan.save()
                    messages.success(request, 'Pedido realizado con éxito')
            except Exception as e:
                messages.warning(request, 'Ingrese una fecha y hora válida.')
        else:
            messages.warning(request,
                             'Usuario no habilitado para realizar préstamos')

        return redirect('/article/' + str(article.id))
    def create_a_loan(self, article=None):
        if article is None:
            article = self.create_an_article()

        start_date_time = datetime.now()
        end_date_time = datetime.now()
        loan = Loan(article=article,
                    starting_date_time=start_date_time,
                    ending_date_time=end_date_time,
                    user=self.get_user_foo())
        if self.loans is None:
            self.loans = []

        self.loans.append(loan)
        return loan
Example #3
0
    def setUp(self):
        # Set Up
        temp_file = tempfile.NamedTemporaryFile()
        test_image = get_temporary_image(temp_file)
        self.my_article = create_article(image=test_image.name)
        self.my_article_id = self.my_article.id
        self.user = User.objects.create(email='*****@*****.**')
        self.user.set_password('12345')
        self.user.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:01'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation1 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation1.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:02'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation2 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation2.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:04'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation3 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation3.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:06'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation4 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation4.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:08'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation5 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation5.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:10'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation6 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation6.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:12'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation7 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation7.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:14'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation8 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation8.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:16'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation9 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation9.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:18'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation10 = Loan(article=self.my_article,
                                  starting_date_time=start_date_time,
                                  ending_date_time=final_date_time,
                                  user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation10.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:20'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation11 = Loan(article=self.my_article,
                                  starting_date_time=start_date_time,
                                  ending_date_time=final_date_time,
                                  user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation11.save()

        #import pdb
        #pdb.set_trace()
        self.reservation1 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation1.save()
Example #4
0
class UsersTest(TestCase):
    def setUp(self):
        # Set Up
        temp_file = tempfile.NamedTemporaryFile()
        test_image = get_temporary_image(temp_file)
        self.my_article = create_article(image=test_image.name)
        self.my_article_id = self.my_article.id
        self.user = User.objects.create(email='*****@*****.**')
        self.user.set_password('12345')
        self.user.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:01'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation1 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation1.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:02'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation2 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation2.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:04'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation3 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation3.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:06'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation4 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation4.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:08'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation5 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation5.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:10'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation6 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation6.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:12'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation7 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation7.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:14'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation8 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation8.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:16'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation9 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation9.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:18'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation10 = Loan(article=self.my_article,
                                  starting_date_time=start_date_time,
                                  ending_date_time=final_date_time,
                                  user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation10.save()

        fecha_inicio = '2018-08-10'
        hora_inicio = '15:20'
        fecha_fin = '2018-09-10'
        hora_fin = '16:30'
        string_inicio = fecha_inicio + ' ' + hora_inicio
        start_date_time = datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
        string_fin = fecha_fin + ' ' + hora_fin
        final_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

        self.reservation11 = Loan(article=self.my_article,
                                  starting_date_time=start_date_time,
                                  ending_date_time=final_date_time,
                                  user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation11.save()

        #import pdb
        #pdb.set_trace()
        self.reservation1 = Loan(article=self.my_article,
                                 starting_date_time=start_date_time,
                                 ending_date_time=final_date_time,
                                 user=self.user)
        #self.reservation1_id = self.reservation1.id
        self.reservation1.save()

    @override_settings(MEDIA_ROOT=tempfile.gettempdir())
    def test_model(self):

        self.assertIsNotNone(self.my_article.image)
        self.assertTrue(isinstance(self.my_article, Article))

    def test_have_object(self):
        self.client.login(email='*****@*****.**', password='******')
        url = reverse('user_data', args=[self.user.id])
        response = self.client.get(url)

        self.assertEqual(response.status_code, 200)
        self.assertTemplateUsed(response, 'usersApp/user_profile.html')
        self.assertEqual(len(response.context['articulos1']),
                         10)  # no se han hecho prestamos

        the_article = response.context['articulos1'][0].article
        self.assertEqual(the_article.name, 'guitarra')
        self.assertEqual(the_article.description, 'una guitarra')
        self.assertIsNotNone(the_article.image)
        self.assertEqual(the_article.image, self.my_article.image)
        self.assertEqual(the_article.state, 'D')

    def test_have_order(self):
        self.client.login(email='*****@*****.**', password='******')
        url = reverse('user_data', args=[self.user.id])
        response = self.client.get(url)

        self.assertEqual(response.status_code, 200)
        self.assertTemplateUsed(response, 'usersApp/user_profile.html')
        self.assertEqual(len(response.context['articulos1']),
                         10)  # no se han hecho prestamos

        the_article_time1 = response.context['articulos1'][
            0].starting_date_time
        the_article_time2 = response.context['articulos1'][
            1].starting_date_time
        the_article_time3 = response.context['articulos1'][
            2].starting_date_time

        self.assertTrue(the_article_time2 > the_article_time3)

    def test_eliminate(self):

        self.client.login(email='*****@*****.**', password='******')
        url = reverse('delete_loans')
        data = {'loan': self.reservation1.id}
        response = self.client.post(url, data=data)
        url = reverse('delete_loans')
        data = {'loan': self.reservation2.id}
        response = self.client.post(url, data=data)
        url = reverse('delete_loans')
        data = {'loan': self.reservation3.id}
        response = self.client.post(url, data=data)

        url = reverse('user_data', args=[self.user.id])
        response = self.client.get(url)
        self.assertEqual(len(response.context['articulos1']), 9)

    def test_space_data(self):
        self.client.login(email='*****@*****.**', password='******')
        url = reverse('space_data', args=[self.my_space_id])
        response = self.client.get(url)

        self.assertEqual(response.status_code, 200)
        self.assertTemplateUsed(response, 'space_data.html')