API modificacion de usuario
This commit is contained in:
@@ -1,27 +1,28 @@
|
||||
import json
|
||||
|
||||
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.forms import SocialNetworksForm, UserForm
|
||||
from users.models import User, SocialNetworks
|
||||
|
||||
|
||||
@protected_resource()
|
||||
def user(request, user_id=None):
|
||||
def user_view(request, user_id=None):
|
||||
if user_id is None:
|
||||
return JsonResponse({'status': 400, 'error': 'No se entrego un user_id'}, status=400)
|
||||
|
||||
user = User.objects.filter(pk=user_id)
|
||||
if user.count() != 1:
|
||||
return JsonResponse({'status': 404, 'error': f'No existe un usuario con id {user_id}'}, status=404)
|
||||
user = user[0]
|
||||
|
||||
if request.method == 'GET':
|
||||
return _get_user(request, user_id)
|
||||
return _get_user(request, user)
|
||||
if request.method == 'PUT':
|
||||
return _put_user(request, user)
|
||||
|
||||
|
||||
@require_GET
|
||||
def _get_user(request, user_id=None):
|
||||
user = request.user
|
||||
|
||||
if user_id is not None:
|
||||
user = User.objects.filter(pk=user_id)
|
||||
if user.count() != 1:
|
||||
return JsonResponse({'status': 404, 'error': f'No existe un usuario con id {user_id}'})
|
||||
user = user[0]
|
||||
|
||||
def _get_user(request, user):
|
||||
encoded_user = {
|
||||
'id': user.id,
|
||||
'username': user.username,
|
||||
@@ -32,23 +33,41 @@ def _get_user(request, user_id=None):
|
||||
|
||||
|
||||
@protected_resource()
|
||||
def social_networks(request, user_id=None):
|
||||
def _put_user(request, user):
|
||||
if request.user.id != user.id and not request.user.is_admin:
|
||||
return JsonResponse({'status': 403,
|
||||
'error': 'El usuario no tiene permiso para hacer esta acción'},
|
||||
status=403)
|
||||
|
||||
request_data = json.loads(request.body.decode('utf8'))
|
||||
form = UserForm(request_data, instance=user)
|
||||
|
||||
if not form.is_valid():
|
||||
return JsonResponse({'status': 400, 'error': form.errors.as_json()}, status=400)
|
||||
|
||||
form.save()
|
||||
|
||||
return JsonResponse({'status': 200}, status=200)
|
||||
|
||||
|
||||
def social_networks_view(request, user_id=None):
|
||||
if user_id is None:
|
||||
user_id = request.user.id
|
||||
return JsonResponse({'status': 400, 'error': 'No se entrego un user_id'}, status=400)
|
||||
|
||||
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}'})
|
||||
return JsonResponse({'status': 404, 'error': f'No existe redes sociales de un usuario con id {user_id}'},
|
||||
status=404)
|
||||
|
||||
social_networks = social_networks[0]
|
||||
|
||||
if request.method == 'GET':
|
||||
return _get_social_networks(request, social_networks)
|
||||
if request.method == 'PUT':
|
||||
return _update_social_networks(request, social_networks)
|
||||
|
||||
|
||||
def _get_social_networks(request, social_networks):
|
||||
encoded_social_networks = {
|
||||
'twitter': social_networks.twitter,
|
||||
'facebook': social_networks.facebook,
|
||||
@@ -56,26 +75,22 @@ def _get_social_networks(request, user_id):
|
||||
'youtube': social_networks.youtube,
|
||||
'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)
|
||||
@protected_resource()
|
||||
def _update_social_networks(request, social_networks):
|
||||
if request.user.id != social_networks.user_id and not request.user.is_admin:
|
||||
return JsonResponse({'status': 403,
|
||||
'error': 'El usuario no tiene permiso para hacer esta acción'},
|
||||
status=403)
|
||||
|
||||
social_networks = social_networks[0]
|
||||
request_data = json.loads(request.body.decode('utf8'))
|
||||
form = SocialNetworksForm(request_data, instance=social_networks)
|
||||
|
||||
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': 400, 'error': form.errors.as_json()}, status=400)
|
||||
|
||||
form.save()
|
||||
return JsonResponse({'status': 200}, status=200)
|
||||
|
||||
Reference in New Issue
Block a user