Exemplo n.º 1
0
 def get(self, request):
     ObjectNews = objectNews(
         main=News.objects.filter(main=True)[:5],
         important=News.objects.filter(important=True)[:5],
     )
     serializerNews = NewsFullSerializer(ObjectNews)
     newsData = serializerNews.data
     from image_cropping.utils import get_backend
     for news in newsData.get("main"):
         ID = news.get("id")
         obj = News.objects.get(id = ID)
         image = get_backend().get_thumbnail_url(
             obj.imageOld,
             {
                 'size': (900, 315),
                 'box': obj.imageBig,
                 'crop': True,
                 'detail': True,
             }
         )
         news['image'] = image
     for news in newsData.get("important"):
         ID = news.get("id")
         obj = News.objects.get(id = ID)
         image = get_backend().get_thumbnail_url(
             obj.imageOld,
             {
                 'size': (300, 300),
                 'box': obj.image,
                 'crop': True,
                 'detail': True,
             }
         )
         news['image'] = image
     return Response(newsData)
Exemplo n.º 2
0
    def get(self, request):
        ObjectMedia = objectMedia(
            photos=MediaPhotos.objects.all(),
            videos=MediaVideos.objects.all(),
            urlphotos=MediaFiles.objects.first().urlPhotos,
            urlvideos=MediaFiles.objects.first().urlVideos,
        )


        serializerMedia = MediaFullSerializer(ObjectMedia)
        mediaData = serializerMedia.data
        from image_cropping.utils import get_backend
        for media in mediaData.get("photos"):
            ID = media.get("id")
            obj = MediaPhotos.objects.get(id = ID)
            image = get_backend().get_thumbnail_url(
                obj.imageOld,
                {
                    'size': (280, 140),
                    'box': obj.image,
                    'crop': True,
                    'detail': True,
                }
            )
            media['image'] = image
        return Response(mediaData)
Exemplo n.º 3
0
    def get(self, request):
        ObjectMain = objectMain(
            main=Main.objects.first(),
            menu=HeaderMenu.objects.all(),
            organizers=HeaderOrganizers.objects.all(),
            social=SocialNet.objects.first(),
            partners=FooterPartners.objects.all(),
            contacts=FooterContacts.objects.first(),
            massMedia=FooterContacts.objects.last(),
        )
        serializerCommon = CommonSerializer(ObjectMain)
        serializerCommon.data.get("menu")[4].update({"path": "/direction/" + str(Trends.objects.first().id) +"/about"})
        commonData = serializerCommon.data
        from image_cropping.utils import get_backend
        for partner in commonData.get("partners"):
            ID = partner.get("id")
            obj = FooterPartners.objects.get(id=ID)
            image = get_backend().get_thumbnail_url(
                obj.imageOld,
                {
                    'size': (50, 50),
                    'box': obj.image,
                    'crop': True,
                    'detail': True,
                }
            )
            partner['image'] = image

        return Response(serializerCommon.data)
Exemplo n.º 4
0
 def get(self, request, page):
     direction = int(request.GET.get("direction", "-1"))
     dateStartStr = request.GET.get("from", "-")
     dateEndStr = request.GET.get("to", "-")
     offset = int(page)
     if direction == -1:
         if dateEndStr == "-" and dateStartStr == "-":
             serializerAllNews = AllNewsSerializer(
                 News.objects.all()[offset:offset + 12], many=True)
         else:
             dateEnd = datetime.strptime(dateEndStr, '%d.%m.%Y')
             dateStart = datetime.strptime(dateStartStr, '%d.%m.%Y')
             setNews = News.objects.filter(date__date__range=(dateStart,
                                                              dateEnd))
             serializerAllNews = AllNewsSerializer(setNews[offset:offset +
                                                           12],
                                                   many=True)
     else:
         serializerAllNews = AllNewsSerializer(
             News.objects.filter(trends__id=direction)[offset:offset + 12],
             many=True)
     newsData = serializerAllNews.data
     from image_cropping.utils import get_backend
     for news in newsData:
         ID = news.get("id")
         obj = News.objects.get(id=ID)
         image = get_backend().get_thumbnail_url(
             obj.imageOld, {
                 'size': (900, 315),
                 'box': obj.imageBig,
                 'crop': True,
                 'detail': True,
             })
         news['image'] = image
     return Response(newsData)
Exemplo n.º 5
0
 def get_url_255x170(self):
     return get_backend().get_thumbnail_url(
         self.image, {
             'size': (255, 170),
             'box': self.cropping_255x170,
             'crop': True,
             'detail': True,
         })
Exemplo n.º 6
0
def show_thumbnail(request, image_id):
    image = get_object_or_404(Image, pk=image_id)
    thumbnail_url = get_backend().get_thumbnail_url(image.image_field, {
        'size': (430, 360),
        'box': image.cropping,
        'crop': True,
        'detail': True,
    })
    return render(request, 'thumbnail.html', {'thumbnail_url': thumbnail_url})
Exemplo n.º 7
0
 def thumbnail_url(self):
     thumbnail_url = get_backend().get_thumbnail_url(
         self.image, {
             'size': (900, 750),
             'box': self.cropping,
             'crop': True,
             'detail': True,
         })
     return thumbnail_url
Exemplo n.º 8
0
 def thumbnail(self):
     thumbnail_url = get_backend().get_thumbnail_url(
         self.photo, {
             'size': (100, 100),
             'box': self.cropping,
             'crop': True,
             'detail': True,
         })
     return '<img src="%s"  />' % thumbnail_url
def show_thumbnail(request, image_id):
    image = get_object_or_404(Image, pk=image_id)
    thumbnail_url = get_backend().get_thumbnail_url(image.image_field, {
        'size': (430, 360),
        'box': image.cropping,
        'crop': True,
        'detail': True,
    })
    return render(request, 'thumbnail.html', {'thumbnail_url': thumbnail_url})
Exemplo n.º 10
0
 def get_images(self, obj):
     thumbnail_url = get_backend().get_thumbnail_url(
         obj.main_image, {
             'size': (600, 0),
             'box': obj.cropping,
             'crop': True,
             'quality': 95,
             'HIGH_RESOLUTION': True
         })
     original_url = get_backend().get_thumbnail_url(
         obj.main_image, {
             'size': (1900, 0),
             'box': obj.cropping,
             'crop': True,
             'quality': 95,
             'HIGH_RESOLUTION': True
         })
     return {'thumbnail': thumbnail_url, 'original': original_url}
Exemplo n.º 11
0
def show_thumbnail(request, image_id):
    image = get_object_or_404(Image, pk=image_id)
    thumbnail_url = get_backend().get_thumbnail_url(
        image.image_field,
        {
            "size": (430, 360),
            "box": image.cropping,
            "crop": True,
            "detail": True,
        },
    )
    return render(request, "thumbnail.html", {"thumbnail_url": thumbnail_url})
Exemplo n.º 12
0
 def favicon_url(self):
     if self.favicon_cropping:
         from image_cropping.utils import get_backend
         thumbnail_url = get_backend().get_thumbnail_url(
             self.favicon, {
                 'size': (128, 128),
                 'box': self.favicon_cropping,
                 'crop': True,
                 'detail': True,
             })
         return thumbnail_url
     return '%simg/favicon.png' % settings.STATIC_URL
Exemplo n.º 13
0
 def get_small_avatar_url(self):
     try:
         thumbnail_url = get_backend().get_thumbnail_url(
             self.avatar, {
                 'size': (50, 50),
                 'box': self.cropping,
                 'crop': True,
                 'detail': True,
             })
         return thumbnail_url
     except:
         return '/static/image/noavatar.png'
Exemplo n.º 14
0
 def thumbnail_big(self):
     try:
         thumbnail_url = get_backend().get_thumbnail_url(
             self.photo, {
                 'size': (250, 250),
                 'box': self.cropping,
                 'crop': True,
                 'detail': True,
             })
         return '<img class="img-responsive" src="%s"  />' % thumbnail_url
     except:
         return '<img class="img-responsive" src="/static/images/noimage.png" />'
Exemplo n.º 15
0
 def get_thumbnail_url(self):
     try:
         thumbnail_url = get_backend().get_thumbnail_url(
             self.photo, {
                 'size': (100, 100),
                 'box': self.cropping,
                 'crop': True,
                 'detail': True,
             })
         return thumbnail_url
     except:
         return '/static/images/noimage.png'
Exemplo n.º 16
0
    def get(self, request, pk):
        id = int(pk)
        news = get_object_or_404(News, id=id)
        try:
            next_news = news.get_next_by_date()
        except:
            next_news = id + 1
        try:
            previous_news = news.get_previous_by_date()
        except:
            previous_news = id - 1
        similar_news = list()
        counterSimilarNews = 0
        for trend in news.trends.all():
            for obj in trend.news_set.all():
                if obj.id != news.id:
                    similar_news.append(obj)
                    counterSimilarNews += 1
                if counterSimilarNews == 3:
                    break
            if counterSimilarNews == 3:
                break
        from image_cropping.utils import get_backend
        image = get_backend().get_thumbnail_url(
            news.imageOld, {
                'size': (900, 315),
                'box': news.imageBig,
                'crop': True,
                'detail': True,
            })
        serializerNews = NewsSerializer(news)
        serializerNewsBlocks = NewsBlockSerializer(NewsBlock.objects.filter(
            id_fk=news, include=True),
                                                   many=True)
        serializerNextNews = NewsNextPrevSimilarSerializer(next_news)
        serializerPreviousNews = NewsNextPrevSimilarSerializer(previous_news)
        serializerSimilarNews = NewsNextPrevSimilarSerializer(similar_news,
                                                              many=True)
        newsData = serializerNews.data
        newsData['blocks'] = serializerNewsBlocks.data
        newsData['image'] = image
        previousData = None if len(
            serializerPreviousNews.data) == 0 else serializerPreviousNews.data
        nextData = None if len(
            serializerNextNews.data) == 0 else serializerNextNews.data

        return Response({
            "news": newsData,
            "nextNews": nextData,
            "previousNews": previousData,
            "similarNews": serializerSimilarNews.data,
        })
Exemplo n.º 17
0
def thumb(image, size_field, site=False):
    """Admin thumb"""
    image_url = get_backend().get_thumbnail_url(image.src, {
        'size': (100, 100),
        'box':
        getattr(image, size_field),
        'crop':
        True,
        'detail':
        True
    })
    if site:
        return "%%s" % (settings.SITE_DOMAIN, image_url)
    return mark_safe(format_html('<img src="{0}" />', image_url))
Exemplo n.º 18
0
def dataOpportunities(serializerOpportunities):
    dataOpp = serializerOpportunities.data
    from image_cropping.utils import get_backend
    for opp in dataOpp:
        ID = opp.get("id")
        obj = Opportunities.objects.get(id=ID)
        image = get_backend().get_thumbnail_url(obj.imageOld, {
            'size': (390, 280),
            'box': obj.image,
            'crop': True,
            'detail': True,
        })
        if obj.checkTitle == False:
            opp['title'] = None
        opp['image'] = image
    return dataOpp
Exemplo n.º 19
0
def dataFlagmans(serializerFlagmans):
    dataFlagman = serializerFlagmans.data
    from image_cropping.utils import get_backend
    for flagman in dataFlagman:
        ID = flagman.get("id")
        obj = Flagmans.objects.get(id=ID)
        image = get_backend().get_thumbnail_url(
            obj.imageOld,
            {
                'size': (320, 300),
                'box': obj.image,
                'crop': True,
                'detail': True,
            }
        )
        flagman['image'] = image
    return dataFlagman
Exemplo n.º 20
0
 def get(self, request):
     serializerFlagmans = FlagmansSerializer(Flagmans.objects.filter(dateEnd__gte=date.today()), many=True)
     dataFlagmans = serializerFlagmans.data
     from image_cropping.utils import get_backend
     for flagman in dataFlagmans:
         ID = flagman.get("id")
         obj = Flagmans.objects.get(id=ID)
         image = get_backend().get_thumbnail_url(
             obj.imageOld,
             {
                 'size': (320, 300),
                 'box': obj.image,
                 'crop': True,
                 'detail': True,
             }
         )
         flagman['image'] = image
     return Response(dataFlagmans)
Exemplo n.º 21
0
 def get(self, request):
     serializerOpportunities = OpportunitiesSerializer(Opportunities.objects.filter(main = True), many=True)
     dataOpp = serializerOpportunities.data
     from image_cropping.utils import get_backend
     for opp in dataOpp:
         ID = opp.get("id")
         obj = Opportunities.objects.get(id=ID)
         image = get_backend().get_thumbnail_url(
             obj.imageOld,
             {
                 'size': (390, 280),
                 'box': obj.image,
                 'crop': True,
                 'detail': True,
             }
         )
         if obj.checkTitle == False:
             opp['title'] = None
         opp['image'] = image
     return Response(dataOpp)
Exemplo n.º 22
0
    def crop_fotografia(self, obj):
        thumbnail_url = ""
        try:
            import os
            #import pdb;pdb.set_trace()
            if not obj.fotografia or not os.path.exists(obj.fotografia.path):
                return thumbnail_url
            thumbnail_url = get_backend().get_thumbnail_url(
                obj.fotografia, {
                    'size': (128, 128),
                    'box': obj.cropping,
                    'crop': True,
                    'detail': True,
                })
        except Exception as e:
            self.logger.error(e)
            self.logger.error('erro processando arquivo: %s' %
                              obj.fotografia.path)

        return thumbnail_url
Exemplo n.º 23
0
 def get(self, request, pk, page):
     id = int(pk)
     offset = int(page)
     trend = get_object_or_404(Trends, id=id)
     news = News.objects.filter(trends=trend)[offset:offset + 6]
     serializerTrendNews = NewsPartSerializer(news, many=True)
     dataTrendNews = serializerTrendNews.data
     from image_cropping.utils import get_backend
     for news in dataTrendNews:
         ID = news.get("id")
         obj = News.objects.get(id=ID)
         image = get_backend().get_thumbnail_url(
             obj.imageOld, {
                 'size': (300, 300),
                 'box': obj.image,
                 'crop': True,
                 'detail': True,
             })
         news['image'] = image
     return Response(dataTrendNews)
Exemplo n.º 24
0
    def initial_cropping(self, sender, instance, *args, **kwargs):
        """
        Override original `ImageRatioField.initial_cropping` as it fails on staging CI.
        Due to non existing images `ImageRatioField.initial_cropping` was failed with `FileNotFoundError`.
        In this method we caught `FileNotFoundError` and set `width` and `height` to 0 for non existing images.
        """
        for ratiofieldname in getattr(instance, 'ratio_fields', []):
            # cropping already set?
            if getattr(instance, ratiofieldname):
                continue

            # get image
            ratiofield = instance._meta.get_field(ratiofieldname)
            image = getattr(instance, ratiofield.image_field)
            if ratiofield.image_fk_field and image:  # image is ForeignKey
                # get the imagefield
                image = getattr(image, ratiofield.image_fk_field)
            if not image:
                continue

            # calculate initial cropping
            try:
                width, height = (image.width, image.height)
            except AttributeError:
                width, height = get_backend().get_size(image)
            # Catch non existing images
            except FileNotFoundError:
                width, height = (0, 0)

            try:
                # handle corrupt or accidentally removed images
                box = max_cropping(ratiofield.width,
                                   ratiofield.height,
                                   width,
                                   height,
                                   free_crop=ratiofield.free_crop)
                box = ','.join(map(lambda i: str(i), box))
            except IOError:
                box = ''
            setattr(instance, ratiofieldname, box)
Exemplo n.º 25
0
def image_to_url(obj, field_name, size, raw_field_name=''):
    """Helper for converting an image object property to a url for a json response.

    :param obj: Model object with {image} and {image}_raw fields
    :param field_name: String identifier for the image field
    :returns: URL of the image, or an empty string if there is no image
    """
    if not raw_field_name:
        raw_field_name = field_name + '_raw'
    options = {
        'size': size,
        'crop': True,
        'detail': True
    }
    box = getattr(obj, field_name)
    if box:
        options['box'] = box

    try:
        return get_backend().get_thumbnail_url(getattr(obj, raw_field_name), options)
    except InvalidImageFormatError:
        return ''
Exemplo n.º 26
0
 def get(self, request, pk, page):
     id = int(pk)
     offset = int(page)
     trend = get_object_or_404(Trends, id=id)
     opportunities = Opportunities.objects.filter(
         trends=trend)[offset:offset + 6]
     serializerTrendOpportunities = OpportunitiesSerializer(opportunities,
                                                            many=True)
     dataTrendOpp = serializerTrendOpportunities.data
     from image_cropping.utils import get_backend
     for opp in dataTrendOpp:
         ID = opp.get("id")
         obj = Opportunities.objects.get(id=ID)
         image = get_backend().get_thumbnail_url(
             obj.imageOld, {
                 'size': (390, 280),
                 'box': obj.image,
                 'crop': True,
                 'detail': True,
             })
         opp['image'] = image
     return Response(serializerTrendOpportunities.data)
Exemplo n.º 27
0
def image_to_url(obj, field_name, size, raw_field_name=''):
    """Helper for converting an image object property to a url for a json response

    :param obj: Model object with {image} and {image}_raw fields
    :param field_name: String identifier for the image field
    :returns: URL of the image, or an empty string if there is no image
    """

    if not raw_field_name:
        raw_field_name = field_name + '_raw'
    options = {
        'size': size,
        'crop': True,
        'detail': True
    }
    box = getattr(obj, field_name)
    if box:
        options['box'] = box

    try:
        return get_backend().get_thumbnail_url(getattr(obj, raw_field_name), options)
    except InvalidImageFormatError:
        return ''
Exemplo n.º 28
0
def altera_field_mesa_public_view(request):
    """
        Essa função lida com qualquer alteração nos campos
        da Mesa Diretora para usuários anônimos,
        atualizando os campos após cada alteração
    """
    logger = logging.getLogger(__name__)
    username = request.user.username
    legislatura = request.GET['legislatura']
    sessoes = SessaoLegislativa.objects.filter(
        legislatura=legislatura).order_by('-data_inicio')

    if not sessoes:
        return JsonResponse({'msg': ('Nenhuma sessão encontrada!', 0)})

    # Verifica se já tem uma sessão selecionada. Ocorre quando
    # é alterado o campo de sessão
    if request.GET['sessao']:
        sessao_selecionada = request.GET['sessao']
    # Caso a mudança tenha sido no campo legislatura, a sessão
    # atual deve ser a primeira daquela legislatura
    else:
        try:
            year = timezone.now().year
            logger.info("user="******". Tentando obter sessões com data_inicio.ano = {}.".
                        format(year))
            sessao_selecionada = sessoes.get(data_inicio__year=year).id
        except ObjectDoesNotExist:
            logger.error(
                "user="******". Sessões não encontradas com com data_inicio.ano = {}. "
                "Selecionado o id da primeira sessão.".format(year))
            sessao_selecionada = sessoes.first().id

    # Atualiza os componentes da view após a mudança
    lista_sessoes = [(s.id, s.__str__()) for s in sessoes]

    composicao_mesa = ComposicaoMesa.objects.filter(
        sessao_legislativa=sessao_selecionada).order_by('cargo_id')

    cargos_ocupados = [(m.cargo.id, m.cargo.__str__())
                       for m in composicao_mesa]

    parlamentares_ocupados = [(m.parlamentar.id, m.parlamentar.__str__())
                              for m in composicao_mesa]

    lista_fotos = []
    lista_partidos = []

    sessao = SessaoLegislativa.objects.get(id=sessao_selecionada)
    for p in parlamentares_ocupados:
        parlamentar = Parlamentar.objects.get(id=p[0])
        lista_partidos.append(
            partido_parlamentar_sessao_legislativa(sessao, parlamentar))
        if parlamentar.fotografia:
            thumbnail_url = get_backend().get_thumbnail_url(
                parlamentar.fotografia, {
                    'size': (128, 128),
                    'box': parlamentar.cropping,
                    'crop': True,
                    'detail': True,
                })
            lista_fotos.append(thumbnail_url)
        else:
            lista_fotos.append(None)

    return JsonResponse({
        'lista_parlamentares': parlamentares_ocupados,
        'lista_partidos': lista_partidos,
        'lista_cargos': cargos_ocupados,
        'lista_sessoes': lista_sessoes,
        'lista_fotos': lista_fotos,
        'sessao_selecionada': sessao_selecionada,
        'msg': ('', 1)
    })
Exemplo n.º 29
0
    def get(self, request, pk):
        id = int(pk)
        opportunity = get_object_or_404(Opportunities, id=id)
        try:
            next_opportunity = opportunity.get_next_by_dateEnd()
        except:
            next_opportunity = id + 1
        try:
            previous_opportunity = opportunity.get_previous_by_dateEnd()
        except:
            previous_opportunity = id - 1
        similar_opportunity = list()
        counterSimilarOpportunity = 0
        for trend in opportunity.trends.all():
            for obj in trend.opportunities_set.all():
                if obj.id != opportunity.id:
                    similar_opportunity.append(obj)
                    counterSimilarOpportunity += 1
                if counterSimilarOpportunity == 3:
                    break
            if counterSimilarOpportunity == 3:
                break
        serializerOpportunity = OpportunitySerializer(opportunity)
        serializerOpportunityBlocks = OpportunityBlockSerializer(
            OpportunitiesBlock.objects.filter(id_fk=opportunity, include=True),
            many=True)
        serializerNextOpportunity = OpportunityNextPrevSimilarSerializer(
            next_opportunity)
        serializerPreviousOpportunity = OpportunityNextPrevSimilarSerializer(
            previous_opportunity)
        serializerSimilarOpportunity = OpportunityNextPrevSimilarSerializer(
            similar_opportunity, many=True)

        opportunityData = serializerOpportunity.data
        opportunityData['blocks'] = serializerOpportunityBlocks.data
        from image_cropping.utils import get_backend
        image = get_backend().get_thumbnail_url(
            opportunity.imageOld, {
                'size': (900, 315),
                'box': opportunity.imageBig,
                'crop': True,
                'detail': True,
            })
        opportunityData['image'] = image

        previousData = None if len(
            serializerPreviousOpportunity.data
        ) == 0 else serializerPreviousOpportunity.data
        nextData = None if len(serializerNextOpportunity.data
                               ) == 0 else serializerNextOpportunity.data

        return Response({
            "opportunity":
            opportunityData,
            "nextOpportunity":
            nextData,
            "previousOpportunity":
            previousData,
            "similarOpportunity":
            serializerSimilarOpportunity.data,
        })