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)
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)
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)
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)
def get_url_255x170(self): return get_backend().get_thumbnail_url( self.image, { 'size': (255, 170), 'box': self.cropping_255x170, 'crop': True, 'detail': True, })
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})
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
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})
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}
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})
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
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'
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" />'
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'
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, })
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))
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
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
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)
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)
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
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)
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)
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 ''
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)
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 ''
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) })
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, })