Agregado metodo para cambiar las redes sociales

This commit is contained in:
Daniel Cortes
2020-06-28 08:02:11 -04:00
parent b06d66abe5
commit a01d124324
5 changed files with 76 additions and 6 deletions

View File

@@ -2,6 +2,7 @@ from django.http import JsonResponse
from django.views.decorators.http import require_GET
from oauth2_provider.decorators import protected_resource
from users.forms import SocialNetworksForm
from users.models import User, SocialNetworks
@@ -32,14 +33,16 @@ def _get_user(request, user_id=None):
@protected_resource()
def social_networks(request, user_id=None):
if request.method == 'GET':
return _get_social_networks(request, user_id)
def _get_social_networks(request, user_id=None):
if user_id is None:
user_id = request.user.id
if request.method == 'GET':
return _get_social_networks(request, user_id)
if request.method == 'PUT':
return _update_social_networks(request, user_id)
def _get_social_networks(request, user_id):
social_networks = SocialNetworks.objects.filter(user_id=user_id)
if social_networks.count() != 1:
return JsonResponse({'status': 404, 'error': f'No existe redes sociales de un usuario con id {user_id}'})
@@ -54,3 +57,25 @@ def _get_social_networks(request, user_id=None):
'twitch': social_networks.twitch
}
return JsonResponse(encoded_social_networks)
def _update_social_networks(request, user_id=None):
social_networks = SocialNetworks.objects.filter(user_id=user_id)
if social_networks.count() != 1:
return JsonResponse({'status': 404, 'error': f'No existe redes sociales de un usuario '
f'con id {user_id}'}, status=404)
social_networks = social_networks[0]
form = SocialNetworksForm(request.PUT or None)
if not form.is_valid():
return JsonResponse({'status': 400, 'errors': form.errors}, status=400)
social_networks.twitter = form.cleaned_data['twitter']
social_networks.facebook = form.cleaned_data['facebook']
social_networks.instagram = form.cleaned_data['instagram']
social_networks.youtube = form.cleaned_data['youtube']
social_networks.twitch = form.cleaned_data['twitch']
social_networks.save()
return JsonResponse({'status': 200}, status=200)

9
users/forms.py Normal file
View File

@@ -0,0 +1,9 @@
from django import forms
class SocialNetworksForm(forms.Form):
twitter = forms.CharField(max_length=255, strip=True, required=False, empty_value='')
facebook = forms.CharField(max_length=255, strip=True, required=False, empty_value='')
instagram = forms.CharField(max_length=255, strip=True, required=False, empty_value='')
youtube = forms.CharField(max_length=255, strip=True, required=False, empty_value='')
twitch = forms.CharField(max_length=255, strip=True, required=False, empty_value='')

View File

@@ -4,6 +4,7 @@ from django.shortcuts import render
from django.utils.http import url_has_allowed_host_and_scheme
from django.contrib.auth import login as auth_login, logout as auth_logout
from django.contrib.auth import authenticate, get_user_model
from django.views.decorators.csrf import csrf_protect
def get_next_url(request):
@@ -24,6 +25,7 @@ def get_next_url(request):
return next_url if url_is_safe else '/'
@csrf_protect
def login(request):
"""Entrada de la ruta de login
@@ -72,6 +74,7 @@ def logout(request):
return HttpResponseRedirect(get_next_url(request))
@csrf_protect
def register(request):
"""Entrada de la ruta de register, solo acepta GET y POST"""
if request.method == 'GET':