From 0172285c660bc5188d837017ad6fc7f4de0c8457 Mon Sep 17 00:00:00 2001 From: Celestino Rey Date: Mon, 26 Aug 2024 15:05:05 +0200 Subject: [PATCH] =?UTF-8?q?Creaci=C3=B3n=20de=20ReymotaApps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReymotaApps/accounts/__init__.py | 0 ReymotaApps/accounts/admin.py | 42 ++++++ ReymotaApps/accounts/apps.py | 6 + ReymotaApps/accounts/forms.py | 19 +++ ReymotaApps/accounts/managers.py | 34 +++++ .../accounts/migrations/0001_initial.py | 34 +++++ ReymotaApps/accounts/migrations/__init__.py | 0 ReymotaApps/accounts/models.py | 25 ++++ ReymotaApps/accounts/tests.py | 3 + ReymotaApps/accounts/views.py | 3 + ReymotaApps/db.sqlite3 | Bin 0 -> 131072 bytes ReymotaApps/libros/__init__.py | 0 ReymotaApps/libros/admin.py | 3 + ReymotaApps/libros/apps.py | 6 + ReymotaApps/libros/migrations/__init__.py | 0 ReymotaApps/libros/models.py | 3 + ReymotaApps/libros/tests.py | 3 + ReymotaApps/libros/views.py | 3 + ReymotaApps/lyrics/__init__.py | 0 ReymotaApps/lyrics/admin.py | 3 + ReymotaApps/lyrics/apps.py | 6 + ReymotaApps/lyrics/migrations/__init__.py | 0 ReymotaApps/lyrics/models.py | 3 + ReymotaApps/lyrics/tests.py | 3 + ReymotaApps/lyrics/views.py | 3 + ReymotaApps/manage.py | 22 +++ ReymotaApps/profile_images/gravatar-tino.jpeg | Bin 0 -> 29737 bytes ReymotaApps/reymotasite/__init__.py | 0 ReymotaApps/reymotasite/asgi.py | 16 +++ ReymotaApps/reymotasite/settings.py | 130 ++++++++++++++++++ ReymotaApps/reymotasite/urls.py | 22 +++ ReymotaApps/reymotasite/wsgi.py | 16 +++ 32 files changed, 408 insertions(+) create mode 100644 ReymotaApps/accounts/__init__.py create mode 100644 ReymotaApps/accounts/admin.py create mode 100644 ReymotaApps/accounts/apps.py create mode 100644 ReymotaApps/accounts/forms.py create mode 100644 ReymotaApps/accounts/managers.py create mode 100644 ReymotaApps/accounts/migrations/0001_initial.py create mode 100644 ReymotaApps/accounts/migrations/__init__.py create mode 100644 ReymotaApps/accounts/models.py create mode 100644 ReymotaApps/accounts/tests.py create mode 100644 ReymotaApps/accounts/views.py create mode 100644 ReymotaApps/db.sqlite3 create mode 100644 ReymotaApps/libros/__init__.py create mode 100644 ReymotaApps/libros/admin.py create mode 100644 ReymotaApps/libros/apps.py create mode 100644 ReymotaApps/libros/migrations/__init__.py create mode 100644 ReymotaApps/libros/models.py create mode 100644 ReymotaApps/libros/tests.py create mode 100644 ReymotaApps/libros/views.py create mode 100644 ReymotaApps/lyrics/__init__.py create mode 100644 ReymotaApps/lyrics/admin.py create mode 100644 ReymotaApps/lyrics/apps.py create mode 100644 ReymotaApps/lyrics/migrations/__init__.py create mode 100644 ReymotaApps/lyrics/models.py create mode 100644 ReymotaApps/lyrics/tests.py create mode 100644 ReymotaApps/lyrics/views.py create mode 100755 ReymotaApps/manage.py create mode 100644 ReymotaApps/profile_images/gravatar-tino.jpeg create mode 100644 ReymotaApps/reymotasite/__init__.py create mode 100644 ReymotaApps/reymotasite/asgi.py create mode 100644 ReymotaApps/reymotasite/settings.py create mode 100644 ReymotaApps/reymotasite/urls.py create mode 100644 ReymotaApps/reymotasite/wsgi.py diff --git a/ReymotaApps/accounts/__init__.py b/ReymotaApps/accounts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ReymotaApps/accounts/admin.py b/ReymotaApps/accounts/admin.py new file mode 100644 index 0000000..39afe65 --- /dev/null +++ b/ReymotaApps/accounts/admin.py @@ -0,0 +1,42 @@ +from django.contrib import admin +from django.contrib.auth.admin import UserAdmin + +# Register your models here. + + +from .models import ReyMotaUser +from .forms import ReyMotaUserCreationForm, ReyMotaUserChangeForm + +class ReyMotaUserAdmin(UserAdmin): + add_form = ReyMotaUserCreationForm + form = ReyMotaUserChangeForm + model = ReyMotaUser + list_display = ("email", "nombre", "is_staff", "is_active", "foto") + list_filter = ("email", "nombre", "is_staff", "is_active",) + fieldsets = ( + (None, {"fields": ("email", "password")}), + ("Personal", {"fields": ("nombre",)}), + ("Permissions", {"fields": ("is_staff", "is_active", "groups", + "user_permissions")}), + ("Varios", {"fields": ("foto",)}), + ) + add_fieldsets = ( + ( + None, + { + "classes": ("wide",), + "fields": ( + "email", "password1", "password2", "is_staff", + "is_active", "groups", "user_permissions" + ) + } + ), + + ("Personal", {"fields": ("nombre",)}), + ("Varios", {"fields": ("foto",)}), + ) + search_fields = ("email",) + ordering = ("email",) + + +admin.site.register(ReyMotaUser, ReyMotaUserAdmin) diff --git a/ReymotaApps/accounts/apps.py b/ReymotaApps/accounts/apps.py new file mode 100644 index 0000000..3e3c765 --- /dev/null +++ b/ReymotaApps/accounts/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class AccountsConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'accounts' diff --git a/ReymotaApps/accounts/forms.py b/ReymotaApps/accounts/forms.py new file mode 100644 index 0000000..5e8af6c --- /dev/null +++ b/ReymotaApps/accounts/forms.py @@ -0,0 +1,19 @@ +from django import forms +from django.contrib.auth.forms import UserCreationForm, UserChangeForm + +from .models import ReyMotaUser + + +class ReyMotaUserCreationForm(UserCreationForm): + + class Meta: + model = ReyMotaUser + fields = ("email", "nombre", "foto") + labels = {'email': 'Dirección de correo'} + + +class ReyMotaUserChangeForm(UserChangeForm): + + class Meta: + model = ReyMotaUser + fields = ("email", "foto") diff --git a/ReymotaApps/accounts/managers.py b/ReymotaApps/accounts/managers.py new file mode 100644 index 0000000..0b8128d --- /dev/null +++ b/ReymotaApps/accounts/managers.py @@ -0,0 +1,34 @@ +from django.contrib.auth.base_user import BaseUserManager +from django.utils.translation import gettext_lazy as _ + + +class ReyMotaUserManager(BaseUserManager): + """ + ReyMota user model manager where email is the unique identifiers + for authentication instead of usernames. + """ + def create_user(self, email, password, **extra_fields): + """ + Create and save a user with the given email and password. + """ + if not email: + raise ValueError(_("The Email must be set")) + email = self.normalize_email(email) + user = self.model(email=email, **extra_fields) + user.set_password(password) + user.save() + return user + + def create_superuser(self, email, password, **extra_fields): + """ + Create and save a SuperUser with the given email and password. + """ + extra_fields.setdefault("is_staff", True) + extra_fields.setdefault("is_superuser", True) + extra_fields.setdefault("is_active", True) + + if extra_fields.get("is_staff") is not True: + raise ValueError(_("Superuser must have is_staff=True.")) + if extra_fields.get("is_superuser") is not True: + raise ValueError(_("Superuser must have is_superuser=True.")) + return self.create_user(email, password, **extra_fields) diff --git a/ReymotaApps/accounts/migrations/0001_initial.py b/ReymotaApps/accounts/migrations/0001_initial.py new file mode 100644 index 0000000..5d32576 --- /dev/null +++ b/ReymotaApps/accounts/migrations/0001_initial.py @@ -0,0 +1,34 @@ +# Generated by Django 5.1 on 2024-08-26 13:03 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('auth', '0012_alter_user_first_name_max_length'), + ] + + operations = [ + migrations.CreateModel( + name='ReyMotaUser', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), + ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), + ('email', models.EmailField(max_length=254, unique=True, verbose_name='email address')), + ('foto', models.ImageField(blank=True, upload_to='profile_images')), + ('is_staff', models.BooleanField(default=False)), + ('is_active', models.BooleanField(default=True)), + ('nombre', models.CharField(blank=True, max_length=200, null=True)), + ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')), + ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/ReymotaApps/accounts/migrations/__init__.py b/ReymotaApps/accounts/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ReymotaApps/accounts/models.py b/ReymotaApps/accounts/models.py new file mode 100644 index 0000000..c1512d1 --- /dev/null +++ b/ReymotaApps/accounts/models.py @@ -0,0 +1,25 @@ +from django.db import models +from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin +from django.utils.translation import gettext_lazy as _ + +from .managers import ReyMotaUserManager + + +# Create your models here. + + +class ReyMotaUser(AbstractBaseUser, PermissionsMixin): + email = models.EmailField(_("email address"), unique=True) + foto = models.ImageField(upload_to="profile_images", blank=True) + is_staff = models.BooleanField(default=False) + is_active = models.BooleanField(default=True) + nombre = models.CharField(max_length=200, blank=True, null=True) + + USERNAME_FIELD = "email" + REQUIRED_FIELDS = [] + + objects = ReyMotaUserManager() + + def __str__(self): + return self.email + diff --git a/ReymotaApps/accounts/tests.py b/ReymotaApps/accounts/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/ReymotaApps/accounts/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/ReymotaApps/accounts/views.py b/ReymotaApps/accounts/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/ReymotaApps/accounts/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/ReymotaApps/db.sqlite3 b/ReymotaApps/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..67e7a401f59ed586015a4dae605a88c2b8b0548d GIT binary patch literal 131072 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 yWTpduk5BBP_Cqobjsp2tWk@z##lX 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 TJ9F2qH5)BXH$UF