diff --git a/sitio_quantum/db.sqlite3 b/sitio_quantum/db.sqlite3 index 50dd481ac0bd3db578a05e3981db4c2599b005a5..05bf49ddf1b9d642397825bcac1bed975f390e0f 100644 Binary files a/sitio_quantum/db.sqlite3 and b/sitio_quantum/db.sqlite3 differ diff --git a/sitio_quantum/media/imagenes/576850.jpg b/sitio_quantum/media/imagenes/576850.jpg new file mode 100644 index 0000000000000000000000000000000000000000..673f0bb806523c404655daad443ff6ba44e3a333 Binary files /dev/null and b/sitio_quantum/media/imagenes/576850.jpg differ diff --git a/sitio_quantum/parque_quantum/__pycache__/admin.cpython-310.pyc b/sitio_quantum/parque_quantum/__pycache__/admin.cpython-310.pyc index bde0902575ee51b0e8ac67b5beca5cb3840de52b..67f789d018aed6ac84f81cdfaa16ae49362dd7ab 100644 Binary files a/sitio_quantum/parque_quantum/__pycache__/admin.cpython-310.pyc and b/sitio_quantum/parque_quantum/__pycache__/admin.cpython-310.pyc differ diff --git a/sitio_quantum/parque_quantum/__pycache__/forms.cpython-310.pyc b/sitio_quantum/parque_quantum/__pycache__/forms.cpython-310.pyc index 601453f9d6140d6577f26aa0d436603d7e3ecc31..e3de6daeeaad173d0950cb4235637dd5e7dc1efa 100644 Binary files a/sitio_quantum/parque_quantum/__pycache__/forms.cpython-310.pyc and b/sitio_quantum/parque_quantum/__pycache__/forms.cpython-310.pyc differ diff --git a/sitio_quantum/parque_quantum/__pycache__/models.cpython-310.pyc b/sitio_quantum/parque_quantum/__pycache__/models.cpython-310.pyc index b90f9dbb4782c0cb30b40c9e01221df58b7405e4..319e8eafcb9effb25d5a7d20df4ddaa20c195d1f 100644 Binary files a/sitio_quantum/parque_quantum/__pycache__/models.cpython-310.pyc and b/sitio_quantum/parque_quantum/__pycache__/models.cpython-310.pyc differ diff --git a/sitio_quantum/parque_quantum/__pycache__/views.cpython-310.pyc b/sitio_quantum/parque_quantum/__pycache__/views.cpython-310.pyc index ec195a1fd7b1159e8f6e1433b880fa7206a5b044..86b72ba12e6a8de3ad15c68197ceb384271802f4 100644 Binary files a/sitio_quantum/parque_quantum/__pycache__/views.cpython-310.pyc and b/sitio_quantum/parque_quantum/__pycache__/views.cpython-310.pyc differ diff --git a/sitio_quantum/parque_quantum/admin.py b/sitio_quantum/parque_quantum/admin.py index 8c38f3f3dad51e4585f3984282c2a4bec5349c1e..b86faa5d76b5ffbdc143bfaf774f305a50f6d23f 100644 --- a/sitio_quantum/parque_quantum/admin.py +++ b/sitio_quantum/parque_quantum/admin.py @@ -1,3 +1,9 @@ from django.contrib import admin +from .models import Actividades -# Register your models here. +@admin.register(Actividades) +class ActividadesAdmin(admin.ModelAdmin): + list_display = ('nombre', 'descripcion', 'fecha') # Campos que deseas mostrar en la lista del administrador + search_fields = ('nombre', 'descripcion') # Campos por los que puedes buscar + ordering = ('-fecha',) # Orden de las actividades + fields = ['nombre', 'descripcion', 'fecha', 'imagen'] # Campos que se muestran en el formulario de creación/edición diff --git a/sitio_quantum/parque_quantum/forms.py b/sitio_quantum/parque_quantum/forms.py index 6b4ad0936f00fb9d1f568d25cf58af159981fb55..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/sitio_quantum/parque_quantum/forms.py +++ b/sitio_quantum/parque_quantum/forms.py @@ -1,7 +0,0 @@ -from django import forms -from .models import Actividad - -class ActividadForm(forms.ModelForm): - class Meta: - model = Actividad - fields = ['nombre', 'imagen', 'fecha', 'descripcion'] diff --git a/sitio_quantum/parque_quantum/migrations/0001_initial.py b/sitio_quantum/parque_quantum/migrations/0001_initial.py new file mode 100644 index 0000000000000000000000000000000000000000..e7902d66bba208b25f9ba706159dc2ff65fff80b --- /dev/null +++ b/sitio_quantum/parque_quantum/migrations/0001_initial.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.12 on 2024-05-19 01:25 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Actividades', + 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.DateField()), + ('imagen', models.ImageField(upload_to='imagenes/')), + ], + ), + ] diff --git a/sitio_quantum/parque_quantum/migrations/__pycache__/0001_initial.cpython-310.pyc b/sitio_quantum/parque_quantum/migrations/__pycache__/0001_initial.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8f341d4e04e942cf39a94ff3562b643b9178dacd Binary files /dev/null and b/sitio_quantum/parque_quantum/migrations/__pycache__/0001_initial.cpython-310.pyc differ diff --git a/sitio_quantum/parque_quantum/models.py b/sitio_quantum/parque_quantum/models.py index 0564d8673cf507c5968dd109950883f91b9608da..c7269c115d833190b33b77fa4147fce107fa2c50 100644 --- a/sitio_quantum/parque_quantum/models.py +++ b/sitio_quantum/parque_quantum/models.py @@ -1,6 +1,6 @@ from django.db import models -class MiModelo(models.Model): +class Actividades (models.Model): nombre = models.CharField(max_length=100) descripcion = models.TextField() fecha = models.DateField() diff --git a/sitio_quantum/parque_quantum/templates/CRUD_actividades.html b/sitio_quantum/parque_quantum/templates/CRUD_actividades.html new file mode 100644 index 0000000000000000000000000000000000000000..cac629be6d48e2e51993eb19799da51f2d630ef0 --- /dev/null +++ b/sitio_quantum/parque_quantum/templates/CRUD_actividades.html @@ -0,0 +1,39 @@ +{% extends "base2.html" %} +{% load static %} + + +{% block title %} +Parque Etnobiológico +{% endblock %} + +{% block content %} +

Lista de Modelos

+ Añadir Nuevo + + + + + + + + + + + + {% for objeto in objetos %} + + + + + + + + {% endfor %} + +
NombreDescripciónFechaImagenAcciones
{{ objeto.nombre }}{{ objeto.descripcion }}{{ objeto.fecha }} + {{ objeto.nombre }} + + Editar + Borrar +
+{% endblock %} diff --git a/sitio_quantum/parque_quantum/templates/actividades.html b/sitio_quantum/parque_quantum/templates/actividades.html index 78765c289ae90c68a34aca17e98efce7c49335c7..ba33045846188ab3dede0349787a88c956fe71da 100644 --- a/sitio_quantum/parque_quantum/templates/actividades.html +++ b/sitio_quantum/parque_quantum/templates/actividades.html @@ -13,61 +13,5 @@ Parque Etnobiológico Crear Nueva Actividad - - - - - - {% endblock %} \ No newline at end of file diff --git a/sitio_quantum/parque_quantum/templates/actividades_form.html b/sitio_quantum/parque_quantum/templates/actividades_form.html new file mode 100644 index 0000000000000000000000000000000000000000..6488df7385503e402f8316f9d7821e85745c5471 --- /dev/null +++ b/sitio_quantum/parque_quantum/templates/actividades_form.html @@ -0,0 +1,17 @@ +{% extends "base2.html" %} +{% load static %} + + +{% block title %} +Parque Etnobiológico +{% endblock %} + +{% block content %} +

{% if object %}Editar{% else %}Nuevo{% endif %} Modelo

+
+ {% csrf_token %} + {{ form.as_p }} + + Cancelar +
+{% endblock %} diff --git a/sitio_quantum/parque_quantum/templates/base2.html b/sitio_quantum/parque_quantum/templates/base2.html index d430b02e73a171bb3c0562ced35dcd663977a770..37c9725bb5444faa575199eaf6e7cd9435263509 100644 --- a/sitio_quantum/parque_quantum/templates/base2.html +++ b/sitio_quantum/parque_quantum/templates/base2.html @@ -32,10 +32,10 @@ Biodiversidad
  • - Etnobiología + Etnobiología
  • - Actividades + Actividades
  • Proyección diff --git a/sitio_quantum/parque_quantum/templates/borrar_actividad.html b/sitio_quantum/parque_quantum/templates/borrar_actividad.html new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/sitio_quantum/parque_quantum/views.py b/sitio_quantum/parque_quantum/views.py index 81ea1810bd3eb3e7600fff29782bac9b01f573b2..8d0f3da5ff05ad351e335cebb8beb0d025d75b4f 100644 --- a/sitio_quantum/parque_quantum/views.py +++ b/sitio_quantum/parque_quantum/views.py @@ -3,11 +3,8 @@ from django.http import HttpResponse, HttpResponseRedirect from django.core.mail import send_mail from django.urls import reverse_lazy from django.views.generic import ListView, CreateView, UpdateView, DeleteView -from .models import Actividad -from .forms import ActividadForm -from django.http import JsonResponse -from .models import Actividad -from django.views.decorators.csrf import csrf_exempt +from .models import Actividades +from .admin import ActividadesAdmin def inicio(request): @@ -46,34 +43,31 @@ def biodiversidad(request): def actividades(request): return render(request, "actividades.html") +def CRUDactividades(request): + return render(request, "CRUD_actividades.html") -class ActividadListView(ListView): - model = Actividad - context_object_name = 'actividades' -class ActividadCreateView(CreateView): - model = Actividad - form_class = ActividadForm - success_url = reverse_lazy('actividades') +# CRUD de actividades +class ActividadesListView(ListView): + model = Actividades + context_object_name = 'objetos' -class ActividadUpdateView(UpdateView): - model = Actividad - form_class = ActividadForm - success_url = reverse_lazy('actividades') +class ActividadesCreateView(CreateView): + model = Actividades + form_class = ActividadesAdmin + success_url = reverse_lazy('lista') + template_name = 'actividades_form.html' -class ActividadDeleteView(DeleteView): - model = Actividad - success_url = reverse_lazy('actividades') +class ActividadesUpdateView(UpdateView): + model = Actividades + form_class = ActividadesAdmin + success_url = reverse_lazy('lista') +class ActividadesDeleteView(DeleteView): + model = Actividades + success_url = reverse_lazy('lista') + template_name = 'mi_app/Actividades_confirm_delete.html' -@csrf_exempt # Solo para demostración; idealmente maneja la CSRF de otra forma -def crear_actividad(request): - print('hola entrè') - if request.method == 'POST': - nombre = request.POST.get('nombre') - fecha = request.POST.get('fecha') - descripcion = request.POST.get('descripcion') - actividad = Actividad.objects.create(nombre=nombre, fecha=fecha, descripcion=descripcion) - return JsonResponse({'id': actividad.id}) # Retorna el id de la actividad creada o algún mensaje - return JsonResponse({'error': 'Método no permitido'}, status=405) - +def lista_actividades(request): + actividades = Actividades.objects.all().order_by('-fecha') + return render(request, 'actividades/lista_actividades.html', {'actividades': actividades}) \ No newline at end of file diff --git a/sitio_quantum/sitio_quantum/__pycache__/urls.cpython-310.pyc b/sitio_quantum/sitio_quantum/__pycache__/urls.cpython-310.pyc index 6819c2e496dc83642a18ae3eda4e1bc238c1cbbd..801c3b8def47676de24101c3bf1f373d4421170b 100644 Binary files a/sitio_quantum/sitio_quantum/__pycache__/urls.cpython-310.pyc and b/sitio_quantum/sitio_quantum/__pycache__/urls.cpython-310.pyc differ diff --git a/sitio_quantum/sitio_quantum/urls.py b/sitio_quantum/sitio_quantum/urls.py index d60524c7ac0d058059cd17f256716d218829814a..85e347d82a27e368f5096bb305b76da5343f0384 100644 --- a/sitio_quantum/sitio_quantum/urls.py +++ b/sitio_quantum/sitio_quantum/urls.py @@ -17,10 +17,9 @@ Including another URLconf from django.contrib import admin from django.conf import settings from django.conf.urls.static import static -from parque_quantum.views import ActividadListView, ActividadCreateView, ActividadUpdateView, ActividadDeleteView from django.urls import path from parque_quantum import views - +from parque_quantum.views import ActividadesListView, ActividadesCreateView, ActividadesUpdateView, ActividadesDeleteView urlpatterns = [ path('admin/', admin.site.urls), @@ -31,10 +30,12 @@ urlpatterns = [ path('colecciones/', views.colecciones, name="colecciones"), path('biodiversidad/', views.biodiversidad, name="biodiversidad"), path('actividades/', views.actividades, name="actividades"), - path('', ActividadListView.as_view(), name='actividad_list'), - path('new/', ActividadCreateView.as_view(), name='actividad_new'), - path('edit//', ActividadUpdateView.as_view(), name='actividad_edit'), - path('delete//', ActividadDeleteView.as_view(), name='actividad_delete'), - path('nueva_actividad/', views.crear_actividad, name='crear_actividad'), + path('lista/', ActividadesListView.as_view(), name='lista'), + path('nuevo/', ActividadesCreateView.as_view(), name='nuevo'), + path('editar//', ActividadesUpdateView.as_view(), name='editar'), + path('borrar//', ActividadesDeleteView.as_view(), name='borrar'), + path('CRUDactividades/', views.CRUDactividades, name="CRUDactividades"), + + ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)