Skip to content

Commit 6cd86b2

Browse files
Update
1 parent b665821 commit 6cd86b2

File tree

6,734 files changed

+781224
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

6,734 files changed

+781224
-1
lines changed

AreaLogin/.env

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
DEBUG = True
2+
ALLOWED_HOSTS = '192.168.1.105'
3+
DATABASE_URL = 'postgresql://postgres:brian@localhost:5432/rest'
4+
EMAIL_HOST = 'server54.web-hosting.com'
5+
EMAIL_USER = '[email protected]'
6+
EMAIL_PASSWORD = 'zJ&gZq0#t1y'
7+
EMAIL_PORT = 26
8+
EMAIL_TLS = False
9+
EMAIL_BACKEND= 'django.core.mail.backends.smtp.EmailBackend'
10+
EMAIL_ALERTS = ''
11+
SECRET_KEY = 'django-insecure-7jy&ce2764i916iw=sb7(s@_c(gj$r&r$_#nadqijo+r1k!tt7'

AreaLogin/AreaLogin/db.sqlite3

148 KB
Binary file not shown.

AreaLogin/AreaLogin/manage.py

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env python
2+
"""Django's command-line utility for administrative tasks."""
3+
import os
4+
import sys
5+
6+
7+
def main():
8+
"""Run administrative tasks."""
9+
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'profiles_project.settings')
10+
try:
11+
from django.core.management import execute_from_command_line
12+
except ImportError as exc:
13+
raise ImportError(
14+
"Couldn't import Django. Are you sure it's installed and "
15+
"available on your PYTHONPATH environment variable? Did you "
16+
"forget to activate a virtual environment?"
17+
) from exc
18+
execute_from_command_line(sys.argv)
19+
20+
21+
if __name__ == '__main__':
22+
main()
23+
24+
25+

AreaLogin/AreaLogin/perfiles_api/__init__.py

Whitespace-only changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from django.contrib import admin
2+
from django.db.models.base import Model
3+
from perfiles_api import models
4+
# Register your models here.
5+
# se registro un modelo
6+
admin.site.register(models.UserProfile)
7+
+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from django.apps import AppConfig
2+
3+
class PerfilesApiConfig(AppConfig):
4+
default_auto_field = 'django.db.models.BigAutoField'
5+
name = 'perfiles_api'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Generated by Django 3.2.8 on 2021-10-18 15:50
2+
3+
from django.db import migrations, models
4+
import django.db.models.manager
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
initial = True
10+
11+
dependencies = [
12+
('auth', '0012_alter_user_first_name_max_length'),
13+
]
14+
15+
operations = [
16+
migrations.CreateModel(
17+
name='UserProfile',
18+
fields=[
19+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
20+
('password', models.CharField(max_length=128, verbose_name='password')),
21+
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
22+
('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
23+
('email', models.EmailField(max_length=255, unique=True)),
24+
('name', models.CharField(max_length=255)),
25+
('is_active', models.BooleanField(default=True)),
26+
('is_staff', models.BooleanField(default=False)),
27+
('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')),
28+
('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')),
29+
],
30+
options={
31+
'abstract': False,
32+
},
33+
managers=[
34+
('object', django.db.models.manager.Manager()),
35+
],
36+
),
37+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 3.2.8 on 2021-10-18 18:08
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('perfiles_api', '0001_initial'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='userprofile',
15+
name='email',
16+
field=models.EmailField(max_length=250, unique=True),
17+
),
18+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 3.2.8 on 2021-10-18 18:08
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('perfiles_api', '0002_alter_userprofile_email'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='userprofile',
15+
name='email',
16+
field=models.EmailField(max_length=255, unique=True),
17+
),
18+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 3.2.8 on 2021-10-19 15:30
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('perfiles_api', '0003_alter_userprofile_email'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='userprofile',
15+
name='email',
16+
field=models.EmailField(max_length=250, unique=True),
17+
),
18+
]

AreaLogin/AreaLogin/perfiles_api/migrations/__init__.py

Whitespace-only changes.
Binary file not shown.
+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
from django.db import models
2+
from django.contrib.auth.models import AbstractBaseUser, User
3+
from django.contrib.auth.models import PermissionsMixin
4+
from django.contrib.auth.models import BaseUserManager
5+
# Create your models here.
6+
7+
class UserProfileManager(BaseUserManager):
8+
""" Manager para perfiles de usuario """
9+
10+
def create_user(self, email, name, password=None):
11+
"""Crear nuevo user profile"""
12+
13+
if not email:
14+
raise ValueError('Usuario debe tener un email')
15+
16+
email = self.normalize_email(email)
17+
user = self.model(email=email, name=name)
18+
19+
user.set_password(password)
20+
user.save(using=self._db)
21+
22+
return user
23+
24+
def create_superuser(self, email, name, password):
25+
user= self.create_user(email, name, password)
26+
27+
user.is_superuser = True
28+
user.is_staff = True
29+
user.save(using=self._db)
30+
31+
return user
32+
33+
34+
class UserProfile(AbstractBaseUser, PermissionsMixin):
35+
"""Modelo personalisado base de datos para usuarios en el sistemma"""
36+
37+
email = models.EmailField(max_length=255, unique=True)
38+
name = models.CharField(max_length=255)
39+
is_active = models.BooleanField(default=True)
40+
is_staff = models.BooleanField(default=False)
41+
42+
objects = UserProfileManager()
43+
44+
USERNAME_FIELD = 'email'
45+
REQUIRED_FIELDS = ['name']
46+
47+
def get_full_name(self):
48+
"""Obtener nombre completo"""
49+
return self.name
50+
51+
def get_short_name(self):
52+
"""Obtener nombre corto"""
53+
return self.name
54+
55+
"""Obtener cadena de representando nestro usuario"""
56+
def ___str__(self):
57+
return self.email
58+
59+
60+
61+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""Permiso personalisado"""
2+
from rest_framework import permissions
3+
4+
class UpdateOwnProfile(permissions.BasePermission):
5+
"""Perimite usuario editar su propio perfil"""
6+
7+
8+
def has_object_permission(self, request, view, obj):
9+
"""Chequear si un usuario esta intentando editar su propio perfil """
10+
if request.method in permissions.SAFE_METHODS:
11+
return True
12+
13+
return obj.id == request.user.id
14+
15+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
from django.db.models import fields
2+
from rest_framework import serializers
3+
4+
from perfiles_api import models
5+
6+
7+
class HelloSerializer(serializers.Serializer):
8+
"""Serializa un campo para probar nuestra APIview"""
9+
10+
name = serializers.CharField(max_length=10)
11+
12+
13+
# Perfiles
14+
class UserPerfilSerializer(serializers.ModelSerializer):
15+
"""Serealiza objeto de perfil usuario"""
16+
17+
class Meta:
18+
model = models.UserProfile
19+
fields = ('id', 'email', 'name', 'password')
20+
""" Proteccion de contraseña """
21+
extra_kwargs = {
22+
'password': {
23+
'write_only': True,
24+
'style': {'input_type': 'password'}
25+
}
26+
}
27+
28+
def create(self, validated_data):
29+
"""Crear y retornar nuevo usuario"""
30+
31+
user = models.UserProfile.objects.create_superuser(
32+
email=validated_data['email'],
33+
name=validated_data['name'],
34+
password=validated_data['password']
35+
)
36+
return user
37+
38+
def update(self, instance, validated_data):
39+
"""Actualiza cuenta de usuario"""
40+
41+
if 'password' in validated_data:
42+
password = validated_data.pop('password')
43+
instance.set_password(password)
44+
45+
return super().update(instance, validated_data)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from django.test import TestCase
2+
3+
# Create your tests here.
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from django.urls import path, include
2+
from rest_framework import routers
3+
4+
from rest_framework.routers import DefaultRouter
5+
# VIEWS
6+
from perfiles_api import views
7+
8+
router = DefaultRouter()
9+
router.register('hello_viewset', views.HelloViewSet, basename='hello-viewset')
10+
router.register('profile', views.UserProfileViewSet)
11+
12+
urlpatterns = [
13+
path('hello_view/', views.HelloapiView.as_view()),
14+
path('login/', views.UserLoginApiView.as_view()),
15+
path('', include(router.urls))
16+
]

0 commit comments

Comments
 (0)