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

33
utils/middleware.py Normal file
View File

@@ -0,0 +1,33 @@
class PUTParsingMiddleware:
""" Fuerza a django a parsear el body de una request con método PUT
Django no parsea este tipo de request, dejando todo en el body, esto es por varias razones
aparentemente validas explicadas aquí
"https://groups.google.com/forum/#!msg/django-developers/dxI4qVzrBY4/m_9IiNk_p7UJ"
asi que no hay nada que hacerle, sin embargo, para el caso de uso de esta
aplicación, se puede asumir que sera seguro y funcionara correctamente.
Este código lo saque el blog post "https://thihara.github.io/Django-Req-Parsing/"
"""
def __init__(self, func):
self.func = func
def __call__(self, request, *args, **kwargs):
if request.method == 'PUT' and request.content_type == 'application/x-www-form-urlencoded':
if hasattr(request, '_post'):
del request._post
del request._files
try:
request.method = "POST"
request._load_post_and_files()
request.method = "PUT"
except AttributeError:
request.META['REQUEST_METHOD'] = 'POST'
request._load_post_and_files()
request.META['REQUEST_METHOD'] = 'PUT'
request.PUT = request.POST
return self.func(request, *args, **kwargs)