Example #1
0
 def post(self, request):
     if 'image_profile' in request.POST:
         type_image_profile = 'image_profile'
     elif 'image_cover_profile' in request.POST:
         type_image_profile = 'image_cover_profile'
     else:
         type_image_profile = None
     if type_image_profile:
         try:
             raw_extension = request.POST[type_image_profile].partition('base64,')[0]  # Obtenemos solamente la extension inicial de los datos
             raw_extension = str(raw_extension).replace(";", "")  # Quitamos la copa del final
             clean_extension = raw_extension.split('/')[1:][0]  # Limpiamos para tener la extension real
             photo = request.POST[type_image_profile].partition('base64,')[2]
             image_data = base64.b64decode(photo)
             if type_image_profile == "image_profile":
                 request.user.userprofile.image.save('%s.%s' % (get_cleaned_uuid(), clean_extension), ContentFile(image_data), save=True)
                 cache_key = 'easy_thumb_alias_cache_%s.%s_%s' % ("user", "avatar", request.user.id)
                 cache.delete(cache_key)  # Eliminamos cache
             else:
                 request.user.userprofile.cover_image.save('%s.%s' % (get_cleaned_uuid(), clean_extension), ContentFile(image_data), save=True)
                 cache_key = 'easy_thumb_alias_cache_%s.%s_%s' % ("user", "cover_image", request.user.id)
                 cache.delete(cache_key)  # Eliminamos cache
             msg_level = MSG_SUCCESS
             mensaje = "Actualizado correctamente"
         except:
             msg_level = MSG_ERROR
             mensaje = format_sys_errors(sys, with_traceback=True)
     else:
         msg_level = MSG_ERROR
         mensaje = "No se recibió ningún tipo de imagen"
     data = create_json_response(message=mensaje, message_level=msg_level)
     return JsonResponse(data, safe=True)
Example #2
0
 def post(self, request):
     form = self.form(request.POST, request.FILES)
     if form.is_valid():
         try:
             tags = TagPost.objects.filter(id__in=request.POST.getlist('post_tags'))
         except:
             tags = None
         try:
             new_post = form.save(commit=False)
             new_post.author = request.user
             new_post.slug = slugify(new_post.title)
             new_post.save()
             if tags:
                 for tag in tags:
                     new_post.tags.add(tag)
             new_post.save()
             messages.success(request, "Gracias por generar una excelente publicación para la comunidad!")
         except:
             mensaje = format_sys_errors(sys, with_traceback=True)
             logger.error(mensaje)
             messages.error(request, "Ups! algo salió mal, por favor intenta de nuevo")
     else:
         messages.error(request, "Error en los datos recibidos")
     ctx = {'categories': Category.objects.all(),
            'tags': TagPost.objects.all(), 'form': form}
     return render(request, self.template_name, ctx)
Example #3
0
 def post(request):
     form = FavoriteForm(request.POST)
     is_favorite = False
     if form.is_valid():
         try:
             new_fav = form.save(commit=False)
             new_fav.created_by = request.user
             new_fav.save()
             mensaje = "Favorito generado correctamente"
             msg_level = MSG_SUCCESS
             is_favorite = True
         except IntegrityError:
             try:
                 new_fav = FavoritePost.objects.get(
                     post=form.cleaned_data['post'],
                     created_by=request.user)
                 new_fav.delete()
                 mensaje = "Se ha eliminado de tus favoritos"
                 msg_level = MSG_SUCCESS
             except LikePost.DoesNotExist:
                 msg_level = MSG_ERROR
                 mensaje = "Error al intentar eliminar de tus favoritos"
         except:
             msg_level = MSG_ERROR
             mensaje = format_sys_errors(sys, with_traceback=True)
     else:
         mensaje = "Error en los datos recibidos"
         msg_level = MSG_ERROR
     data = create_json_response(message=mensaje,
                                 message_level=msg_level,
                                 is_favorite=is_favorite)
     return JsonResponse(data, safe=True)
Example #4
0
 def post(self, request, token, username):
     form = self.form(request.POST)
     if form.is_valid():
         try:
             the_user = User.objects.get(username=username)
         except:
             the_user = None
         try:
             my_token = UserTokens.objects.get(user=the_user, token=token)
         except:
             raise Http404()
         if the_user and my_token:
             try:
                 the_user.set_password(form.cleaned_data['password_one'])
                 the_user.save()
                 my_token.delete()  # Eliminamos el token.
                 ctx = {'is_error': False, 'form': form, 'changed': True}
             except:
                 mensaje = format_sys_errors(sys, with_traceback=True)
                 logger.error(mensaje)
                 ctx = {'is_error': True, 'form': form, 'changed': False}
             return render(request, self.template_name, ctx)
         else:
             return Http404()
     else:
         ctx = {'is_error': True, 'form': form}
         return render(request, self.template_name, ctx)
Example #5
0
def send_email(subject, content, to, content_type="text/plain"):
    """
    Envía un email con el contenido que se le designe.
    :param subject: Título del email.
    :param content: contenido o body del mensaje.
    :param content_type: tipo de contenido Ej. "text/plain"
    :param to: lista de usuarios a los que llegará el email.
    :return: True o False para confirmar el envío.
    """
    try:
        msg = EmailMultiAlternatives(subject=subject, body=content, to=[to])
        if content_type == "text/html":
            msg.attach_alternative(content, "text/html")
        msg.send()
    except:
        message = format_sys_errors(sys, with_traceback=True)
Example #6
0
 def image_thumbnail(self):
     if self.image:
         try:
             cache_key = 'easy_thumb_alias_cache_%s.%s_%s' % (
                 "book", "image", self.id)
             thumbnail_cache = cache.get(cache_key)
             if thumbnail_cache:
                 return thumbnail_cache
             else:
                 thumb_url = get_thumbnailer(self.image)['book_image'].url
                 cache.set(cache_key, thumb_url, 60 * 60)
                 return thumb_url
         except:
             logger.error(format_sys_errors(sys, with_traceback=True))
             return self.image.url
     else:
         return "https://www.awm.gov.au/sites/default/files/book-cover-british-official-red-cover.jpg"
Example #7
0
 def post(self, request, user_id):
     if user_id == str(request.user.id):
         if 'powers_id' in request.POST:
             request.user.userprofile.powers.clear()
             arreglo = request.POST.getlist('powers_id')
             for my_id in arreglo:
                 power = Power.objects.get(id=my_id)
                 request.user.userprofile.powers.add(power)
         try:
             lazy_obj = LazyUserProfileData(request.POST)
             if 'first_name' in request.POST:
                 request.user.first_name = request.POST['first_name']
                 request.user.save()
             if 'about_me' in request.POST:
                 lazy_obj.about_me = request.POST['about_me']
             if 'website' in request.POST:
                 lazy_obj.website = request.POST['website']
             if 'about_me' in request.POST:
                 lazy_obj.about_me = request.POST['about_me']
             if 'country_code' in request.POST:
                 lazy_obj.country_code = request.POST['country_code']
             if 'twitter' in request.POST:
                 lazy_obj.twitter = request.POST['twitter']
             if 'facebook' in request.POST:
                 lazy_obj.facebook = request.POST['facebook']
             if 'github' in request.POST:
                 lazy_obj.github = request.POST['github']
             if 'gender' in request.POST:
                 lazy_obj.gender = request.POST['gender']
             if 'image' in request.FILES:
                 request.user.userprofile.image = request.FILES['image']
             request.user.userprofile.data = lazy_obj.to_json()
             request.user.userprofile.save()
             messages.success(request,
                              'Información actualizada correctamente')
             return HttpResponseRedirect(
                 reverse('account:profile', args=(request.user.id, )))
         except:
             mensaje = format_sys_errors(sys, with_traceback=True)
             messages.warning(request,
                              'Hubo un error, por favor intenta de nuevo.')
             ctx = {'edit': True}
     else:
         return HttpResponseRedirect(
             reverse('account:profile', args=(user_id, )))
     return render(request, self.template_name, ctx)
Example #8
0
    def post(self, request):
        from django.contrib.auth.models import User
        from pythonizame.apps.account.models import UserProfile
        from pythonizame.apps.account.lazymodels import LazyUserProfileData

        form = RegisterForm(request.POST)
        if form.is_valid():
            try:
                username = str(form.cleaned_data['username']).replace(" ", "")
                email = form.cleaned_data['email']
                password = form.cleaned_data['password_one']
                new_user = User.objects.create_user(username=username, email=email, password=password)
                new_user.is_active = False  # Inicialmente no está activado.
                new_user.save()
                # Ahora creamos su perfil
                lazy_data = LazyUserProfileData()
                lazy_data.country_code = form.cleaned_data['country_code']
                profile = UserProfile()
                profile.user = new_user
                profile.data = lazy_data.to_json()  # Guardamos los datos JSON
                # Generamos la imagen del gravatar
                url_gravatar = get_url_gravatar(email)
                image_stream = urlopen(url_gravatar)
                profile.image.save("img_{0}.jpg".format(profile.user.id), ContentFile(image_stream.read()))
                profile.save()
                # Ahora creamos un token para que active su cuenta
                token = UserTokens()
                token.user = new_user
                token.save()
                # Enviamos un correo de confirmacion
                to_email = new_user.email
                contenido = render_to_string("mail/activation_template.html", {'url_server': settings['URL_SERVER'],
                                                                               'token': token.token,
                                                                               'username': new_user.username,
                                                                               'password': password,
                                                                               })
                send_email("Bienvenido a Pythonízame", content=contenido, to=to_email, content_type="text/html")
                # Enviamos la vista para confirmar registro.
                ctx = {'is_registered': True, 'with_error': False}
                return render(request, self.template_name, ctx)
            except:
                mensaje = format_sys_errors(sys, with_traceback=True)
                ctx = {'with_error': True, 'form': form}
                return render(request, self.template_name, ctx)
        else:
            return render(request, self.template_name, {'form': form})
Example #9
0
 def paginate_queryset(self, queryset, page_size):
     paginator = self.get_paginator(
         queryset,
         page_size,
         orphans=self.get_paginate_orphans(),
         allow_empty_first_page=self.get_allow_empty())
     page_kwarg = self.page_kwarg
     page = self.kwargs.get(page_kwarg) or self.request.GET.get(
         page_kwarg) or 1
     try:
         page_number = int(page)
     except ValueError:
         page_number = 1  # Si hay un error entonces enviamos la pagina 1
     try:
         page = paginator.page(page_number)
         tupla = (paginator, page, page.object_list, page.has_other_pages())
         return tupla
     except:
         print(format_sys_errors(sys, with_traceback=True))
         raise Http404("No se encontró el sitio especificado")
Example #10
0
 def post(request):
     form = LikeForm(request.POST)
     is_like = False
     if form.is_valid():
         try:
             new_like = form.save(commit=False)
             new_like.created_by = request.user
             new_like.save()
             mensaje = "Like generado correctamente"
             msg_level = MSG_SUCCESS
             is_like = True
         except IntegrityError:
             try:
                 my_like = LikePost.objects.get(
                     post=form.cleaned_data['post'],
                     created_by=request.user)
                 my_like.delete()
                 mensaje = "Se ha eliminado tu like"
                 msg_level = MSG_SUCCESS
             except LikePost.DoesNotExist:
                 msg_level = MSG_ERROR
                 mensaje = "Error al intentar eliminar el like"
         except:
             msg_level = MSG_ERROR
             mensaje = format_sys_errors(sys, with_traceback=True)
     else:
         mensaje = "Error en los datos recibidos"
         msg_level = MSG_ERROR
     try:
         num_likes = LikePost.objects.filter(
             post__id=request.POST['post']).count()
     except:
         num_likes = 0
     data = create_json_response(message=mensaje,
                                 message_level=msg_level,
                                 is_like=is_like,
                                 num_likes=num_likes)
     return JsonResponse(data, safe=True)