diff --git a/AdAnalyzer/settings.py b/AdAnalyzer/settings.py index 9bce0f061eea3ddc845af45a9d5be2471050508e..246134690ae6a59f08d9e2cb3f9744a33e1f3b28 100644 --- a/AdAnalyzer/settings.py +++ b/AdAnalyzer/settings.py @@ -38,6 +38,7 @@ INSTALLED_APPS = [ "django.contrib.messages", "django.contrib.staticfiles", "pages.apps.PagesConfig", + "dashboard" ] MIDDLEWARE = [ @@ -75,9 +76,13 @@ WSGI_APPLICATION = "AdAnalyzer.wsgi.application" # https://docs.djangoproject.com/en/4.2/ref/settings/#databases DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", + 'default': { + 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'NAME': 'adana', + 'USER': 'adana', + 'PASSWORD': 'adana', + 'HOST': '127.0.0.1', + 'PORT': '5432', } } diff --git a/dashboard/__init__.py b/dashboard/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/dashboard/admin.py b/dashboard/admin.py new file mode 100644 index 0000000000000000000000000000000000000000..063f0655d2a2b545112d8f6792f90325a040118e --- /dev/null +++ b/dashboard/admin.py @@ -0,0 +1,6 @@ +from django.contrib import admin +from .models import Empresa, Competencia + +admin.site.register(Empresa) +admin.site.register(Competencia) + diff --git a/dashboard/apps.py b/dashboard/apps.py new file mode 100644 index 0000000000000000000000000000000000000000..3359c3498316c3622ea69ac0be4f96e93807d4f3 --- /dev/null +++ b/dashboard/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + +class DashboardConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "dashboard" diff --git a/dashboard/migrations/0001_initial.py b/dashboard/migrations/0001_initial.py new file mode 100644 index 0000000000000000000000000000000000000000..68615fdbc5dc17cc8251ffc43d3eb190c9b8ddeb --- /dev/null +++ b/dashboard/migrations/0001_initial.py @@ -0,0 +1,61 @@ +# Generated by Django 4.2.2 on 2023-06-28 19:26 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + initial = True + + dependencies = [] + + operations = [ + migrations.CreateModel( + name="Empresa", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("nombre", models.CharField(max_length=200)), + ], + ), + migrations.CreateModel( + name="Competencia", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "competidor", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="competidor", + to="dashboard.empresa", + ), + ), + ( + "empresa", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="empresa", + to="dashboard.empresa", + ), + ), + ], + options={ + "unique_together": {("empresa", "competidor")}, + }, + ), + ] diff --git a/dashboard/migrations/0002_empresa_usuarios.py b/dashboard/migrations/0002_empresa_usuarios.py new file mode 100644 index 0000000000000000000000000000000000000000..2431d260ecb54fcab8a10bd9f0874e7864330dea --- /dev/null +++ b/dashboard/migrations/0002_empresa_usuarios.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.2 on 2023-06-28 20:01 + +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ("dashboard", "0001_initial"), + ] + + operations = [ + migrations.AddField( + model_name="empresa", + name="usuarios", + field=models.ManyToManyField(to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/dashboard/migrations/__init__.py b/dashboard/migrations/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/dashboard/models.py b/dashboard/models.py new file mode 100644 index 0000000000000000000000000000000000000000..b4c95601c4848692f6b93201181109de9ba14674 --- /dev/null +++ b/dashboard/models.py @@ -0,0 +1,21 @@ +from django.db import models +from django.contrib.auth.models import User + +#This is the model for Companies that are going to be registered even thought they are not clients in the system +class Empresa(models.Model): + nombre = models.CharField(max_length=200) + usuarios = models.ManyToManyField(User) + + def __str__(self): + return self.nombre + +#This is the model for the competitors it is a relation of a Company to another. +class Competencia(models.Model): + empresa = models.ForeignKey(Empresa, related_name='empresa', on_delete=models.CASCADE) + competidor = models.ForeignKey(Empresa, related_name='competidor', on_delete=models.CASCADE) + + class Meta: + unique_together = ('empresa', 'competidor') + + def __str__(self): + return f"{self.empresa.nombre} competidor: {self.competidor.nombre}" diff --git a/dashboard/tests.py b/dashboard/tests.py new file mode 100644 index 0000000000000000000000000000000000000000..7ce503c2dd97ba78597f6ff6e4393132753573f6 --- /dev/null +++ b/dashboard/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/dashboard/views.py b/dashboard/views.py new file mode 100644 index 0000000000000000000000000000000000000000..aab5f30212a3298a24f0e3fef7800c2485283854 --- /dev/null +++ b/dashboard/views.py @@ -0,0 +1,26 @@ +from django.shortcuts import render, redirect +from .models import Empresa +from django.contrib.auth.models import User + +def asignar_usuarios(request, empresa_id): + empresa = Empresa.objects.get(id=empresa_id) + if request.method == 'POST': + usuarios_id = request.POST.getlist('usuarios') + usuarios = User.objects.filter(id__in=usuarios_id) + empresa.usuarios.set(usuarios) + + # obtén la referencia al permiso de "view" para el modelo User + permiso_ver_usuario = Permission.objects.get(codename='view_user') + + # para cada usuario de la empresa, agrega este permiso + for usuario in empresa.usuarios.all(): + usuario.user_permissions.add(permiso_ver_usuario) + + return redirect('dashboard:empresa_detalle', empresa_id=empresa_id) + else: + usuarios = User.objects.all() + return render(request, 'asignar_usuarios.html', {'empresa': empresa, 'usuarios': usuarios}) + +def inicio(request): + return render(request, 'inicio.html') + diff --git a/pages/templates/pages/home.html b/pages/templates/pages/home.html index b507173bf4807254ee1ba4b3f7e1a5af8f9b0f17..6c44799d475f4a56dd44f5e64e0113c27ed4585e 100644 --- a/pages/templates/pages/home.html +++ b/pages/templates/pages/home.html @@ -7,7 +7,7 @@ font-family: Arial, sans-serif; margin: 0; padding: 0; - background-color: #f0f0f0; + background-color: #aaaaaa; } .container { max-width: 800px;