From 097d30bc5eefdcdfb2fa8ba0f80427a08b9370c0 Mon Sep 17 00:00:00 2001 From: Celestino Rey Date: Mon, 30 Sep 2024 15:43:11 +0200 Subject: [PATCH] =?UTF-8?q?A=C3=B1ado=20JugarAlPadel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JugarAlPadel/gestion_reservas/db.sqlite3 | Bin 0 -> 147456 bytes .../gestion_reservas/eventos/__init__.py | 0 .../gestion_reservas/eventos/admin.py | 10 ++ JugarAlPadel/gestion_reservas/eventos/apps.py | 6 + .../eventos/migrations/0001_initial.py | 36 +++++ .../eventos/migrations/__init__.py | 0 .../gestion_reservas/eventos/models.py | 25 ++++ .../eventos/templates/eventos/index.html | 1 + .../templates/eventos/lista_eventos.html | 7 + .../gestion_reservas/eventos/tests.py | 3 + JugarAlPadel/gestion_reservas/eventos/urls.py | 8 ++ .../gestion_reservas/eventos/views.py | 24 ++++ .../gestion_reservas/__init__.py | 0 .../gestion_reservas/gestion_reservas/asgi.py | 16 +++ .../gestion_reservas/settings.py | 128 ++++++++++++++++++ .../gestion_reservas/gestion_reservas/urls.py | 24 ++++ .../gestion_reservas/gestion_reservas/wsgi.py | 16 +++ JugarAlPadel/gestion_reservas/manage.py | 22 +++ 18 files changed, 326 insertions(+) create mode 100644 JugarAlPadel/gestion_reservas/db.sqlite3 create mode 100644 JugarAlPadel/gestion_reservas/eventos/__init__.py create mode 100644 JugarAlPadel/gestion_reservas/eventos/admin.py create mode 100644 JugarAlPadel/gestion_reservas/eventos/apps.py create mode 100644 JugarAlPadel/gestion_reservas/eventos/migrations/0001_initial.py create mode 100644 JugarAlPadel/gestion_reservas/eventos/migrations/__init__.py create mode 100644 JugarAlPadel/gestion_reservas/eventos/models.py create mode 100644 JugarAlPadel/gestion_reservas/eventos/templates/eventos/index.html create mode 100644 JugarAlPadel/gestion_reservas/eventos/templates/eventos/lista_eventos.html create mode 100644 JugarAlPadel/gestion_reservas/eventos/tests.py create mode 100644 JugarAlPadel/gestion_reservas/eventos/urls.py create mode 100644 JugarAlPadel/gestion_reservas/eventos/views.py create mode 100644 JugarAlPadel/gestion_reservas/gestion_reservas/__init__.py create mode 100644 JugarAlPadel/gestion_reservas/gestion_reservas/asgi.py create mode 100644 JugarAlPadel/gestion_reservas/gestion_reservas/settings.py create mode 100644 JugarAlPadel/gestion_reservas/gestion_reservas/urls.py create mode 100644 JugarAlPadel/gestion_reservas/gestion_reservas/wsgi.py create mode 100755 JugarAlPadel/gestion_reservas/manage.py diff --git a/JugarAlPadel/gestion_reservas/db.sqlite3 b/JugarAlPadel/gestion_reservas/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..70dcc4ea2ddb3155f3c9c4cfe1c0e4ecbfdaa574 GIT binary patch literal 147456 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 Q1Rh-iW1e~c_Ur%u2NgE$UjP6A literal 0 HcmV?d00001 diff --git a/JugarAlPadel/gestion_reservas/eventos/__init__.py b/JugarAlPadel/gestion_reservas/eventos/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/JugarAlPadel/gestion_reservas/eventos/admin.py b/JugarAlPadel/gestion_reservas/eventos/admin.py new file mode 100644 index 0000000..6e1743b --- /dev/null +++ b/JugarAlPadel/gestion_reservas/eventos/admin.py @@ -0,0 +1,10 @@ +from django.contrib import admin +from .models import Evento, Reserva + + +class EventoAdmin(admin.ModelAdmin): + list_display = ['nombre', 'fecha', 'plazas_disponibles'] + + +admin.site.register(Evento, EventoAdmin) +admin.site.register(Reserva) diff --git a/JugarAlPadel/gestion_reservas/eventos/apps.py b/JugarAlPadel/gestion_reservas/eventos/apps.py new file mode 100644 index 0000000..ece07f6 --- /dev/null +++ b/JugarAlPadel/gestion_reservas/eventos/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class EventosConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'eventos' diff --git a/JugarAlPadel/gestion_reservas/eventos/migrations/0001_initial.py b/JugarAlPadel/gestion_reservas/eventos/migrations/0001_initial.py new file mode 100644 index 0000000..7a5141e --- /dev/null +++ b/JugarAlPadel/gestion_reservas/eventos/migrations/0001_initial.py @@ -0,0 +1,36 @@ +# Generated by Django 5.1.1 on 2024-09-30 06:07 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Evento', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nombre', models.CharField(max_length=100)), + ('descripcion', models.TextField()), + ('fecha', models.DateTimeField()), + ('plazas_disponibles', models.PositiveIntegerField()), + ], + ), + migrations.CreateModel( + name='Reserva', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('fecha_reserva', models.DateTimeField(auto_now_add=True)), + ('evento', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reservas', to='eventos.evento')), + ('usuario', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/JugarAlPadel/gestion_reservas/eventos/migrations/__init__.py b/JugarAlPadel/gestion_reservas/eventos/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/JugarAlPadel/gestion_reservas/eventos/models.py b/JugarAlPadel/gestion_reservas/eventos/models.py new file mode 100644 index 0000000..f126b2c --- /dev/null +++ b/JugarAlPadel/gestion_reservas/eventos/models.py @@ -0,0 +1,25 @@ +from django.db import models +from django.contrib.auth.models import User + + +class Evento(models.Model): + nombre = models.CharField(max_length=100) + descripcion = models.TextField() + fecha = models.DateTimeField() + plazas_disponibles = models.PositiveIntegerField() + + def __str__(self): + return self.nombre + + def plazas_restantes(self): + return self.plazas_disponibles - self.reservas.count() + + +class Reserva(models.Model): + evento = models.ForeignKey( + Evento, related_name="reservas", on_delete=models.CASCADE) + usuario = models.ForeignKey(User, on_delete=models.CASCADE) + fecha_reserva = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return f'{self.usuario.username} - {self.evento.nombre}' diff --git a/JugarAlPadel/gestion_reservas/eventos/templates/eventos/index.html b/JugarAlPadel/gestion_reservas/eventos/templates/eventos/index.html new file mode 100644 index 0000000..b8b4a4e --- /dev/null +++ b/JugarAlPadel/gestion_reservas/eventos/templates/eventos/index.html @@ -0,0 +1 @@ +hola \ No newline at end of file diff --git a/JugarAlPadel/gestion_reservas/eventos/templates/eventos/lista_eventos.html b/JugarAlPadel/gestion_reservas/eventos/templates/eventos/lista_eventos.html new file mode 100644 index 0000000..37ddc2f --- /dev/null +++ b/JugarAlPadel/gestion_reservas/eventos/templates/eventos/lista_eventos.html @@ -0,0 +1,7 @@ +{% for evento in eventos %} +

{{ evento.nombre }}

+

{{ evento.descripcion }}

+

Fecha: {{ evento.fecha }}

+

Plazas restantes: {{ evento.plazas_restantes }}

+ Reservar +{% endfor %} diff --git a/JugarAlPadel/gestion_reservas/eventos/tests.py b/JugarAlPadel/gestion_reservas/eventos/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/JugarAlPadel/gestion_reservas/eventos/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/JugarAlPadel/gestion_reservas/eventos/urls.py b/JugarAlPadel/gestion_reservas/eventos/urls.py new file mode 100644 index 0000000..852d6c0 --- /dev/null +++ b/JugarAlPadel/gestion_reservas/eventos/urls.py @@ -0,0 +1,8 @@ +from django.urls import path +from . import views + + +urlpatterns = [ + path('', views.lista_eventos, name='lista_eventos'), + path('reservar//', views.reservar_evento, name='reservar_evento'), +] diff --git a/JugarAlPadel/gestion_reservas/eventos/views.py b/JugarAlPadel/gestion_reservas/eventos/views.py new file mode 100644 index 0000000..0b559b1 --- /dev/null +++ b/JugarAlPadel/gestion_reservas/eventos/views.py @@ -0,0 +1,24 @@ +from django.shortcuts import render, get_object_or_404 +from django.contrib.auth.decorators import login_required +from .models import Evento, Reserva +from django.http import HttpResponse + + +@login_required +def reservar_evento(request, evento_id): + evento = get_object_or_404(Evento, id=evento_id) + if evento.plazas_restantes() > 0: + Reserva.objects.create(evento=evento, usuario=request.user) + return HttpResponse( + f'Reserva realizada para el evento {evento.nombre}.') + else: + return HttpResponse('Lo sentimos, no quedan plazas disponibles.') + + +def lista_eventos(request): + eventos = Evento.objects.all() + return render(request, 'eventos/lista_eventos.html', {'eventos': eventos}) + + +def principal(request): + return render(request, 'eventos/index.html') diff --git a/JugarAlPadel/gestion_reservas/gestion_reservas/__init__.py b/JugarAlPadel/gestion_reservas/gestion_reservas/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/JugarAlPadel/gestion_reservas/gestion_reservas/asgi.py b/JugarAlPadel/gestion_reservas/gestion_reservas/asgi.py new file mode 100644 index 0000000..475d8cf --- /dev/null +++ b/JugarAlPadel/gestion_reservas/gestion_reservas/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for gestion_reservas project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.1/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'gestion_reservas.settings') + +application = get_asgi_application() diff --git a/JugarAlPadel/gestion_reservas/gestion_reservas/settings.py b/JugarAlPadel/gestion_reservas/gestion_reservas/settings.py new file mode 100644 index 0000000..d59907e --- /dev/null +++ b/JugarAlPadel/gestion_reservas/gestion_reservas/settings.py @@ -0,0 +1,128 @@ +""" +Django settings for gestion_reservas project. + +Generated by 'django-admin startproject' using Django 5.1.1. + +For more information on this file, see +https://docs.djangoproject.com/en/5.1/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/5.1/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-yft$kjzba+%i*%^n2u-i(3+tgvjitx%3we3y9l1pts$h3r#)ow' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + + 'eventos', +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'gestion_reservas.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'gestion_reservas.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/5.1/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/5.1/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/5.1/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/5.1/howto/static-files/ + +STATIC_URL = 'static/' + +# Default primary key field type +# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + +LOGIN_URL = '/login/' +LOGIN_REDIRECT_URL = '/' diff --git a/JugarAlPadel/gestion_reservas/gestion_reservas/urls.py b/JugarAlPadel/gestion_reservas/gestion_reservas/urls.py new file mode 100644 index 0000000..8c53567 --- /dev/null +++ b/JugarAlPadel/gestion_reservas/gestion_reservas/urls.py @@ -0,0 +1,24 @@ +""" +URL configuration for gestion_reservas project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/5.1/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path, include + + +urlpatterns = [ + path('admin/', admin.site.urls), + path("", include('eventos.urls')), # new +] diff --git a/JugarAlPadel/gestion_reservas/gestion_reservas/wsgi.py b/JugarAlPadel/gestion_reservas/gestion_reservas/wsgi.py new file mode 100644 index 0000000..b40a2e9 --- /dev/null +++ b/JugarAlPadel/gestion_reservas/gestion_reservas/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for gestion_reservas project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.1/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'gestion_reservas.settings') + +application = get_wsgi_application() diff --git a/JugarAlPadel/gestion_reservas/manage.py b/JugarAlPadel/gestion_reservas/manage.py new file mode 100755 index 0000000..cb2a08a --- /dev/null +++ b/JugarAlPadel/gestion_reservas/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'gestion_reservas.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main()