Esempio n. 1
0
    def save(self, commit=True):
        inst = self.instance

        if inst.visibilidade != Documento.STATUS_PUBLIC:
            inst.public_date = None
            inst.public_end_date = None
        else:
            if not inst.public_date:
                inst.public_date = timezone.now()

        inst = super().save(commit)

        if not inst.childs.exists():
            container = Documento()
            container.titulo = ''
            container.descricao = ''
            container.classe = inst.classe
            container.tipo = Documento.TPD_CONTAINER_SIMPLES
            container.owner = inst.owner
            container.parent = inst
            container.ordem = 1
            container.visibilidade = inst.visibilidade
            container.save()

        classe = inst.classe
        classe.capa = inst if self.cleaned_data['capa'] else None
        classe.save()

        return inst
Esempio n. 2
0
    def create(self, validated_data):
        vd = validated_data
        vd['owner'] = self.context['request'].user

        if 'ordem' in vd and vd['ordem']:
            Documento.objects.create_space(vd['parent'], vd['ordem'])

        if 'classe' in vd and vd['classe']:
            vd['template_doc'] = vd['classe'].template_doc_padrao
            vd['tipo'] = vd['classe'].tipo_doc_padrao

            if vd['classe'].visibilidade != CMSMixin.STATUS_PUBLIC:
                vd['visibilidade'] = vd['classe'].visibilidade

        instance = serializers.ModelSerializer.create(self, validated_data)

        if not instance.is_parte_de_documento():
            container = Documento()
            container.titulo = ''
            container.descricao = ''
            container.classe = instance.classe
            container.tipo = Documento.TPD_CONTAINER_SIMPLES
            container.owner = instance.owner
            container.parent = instance
            container.ordem = 1
            container.visibilidade = instance.visibilidade
            container.save()
        else:
            if not instance.ordem:
                prev = instance.parent.childs.view_childs().last()
                if prev:
                    instance.ordem = prev.ordem + 1
                    instance.save()

        return instance
Esempio n. 3
0
    def create(self, validated_data):
        vd = validated_data
        vd['owner'] = self.context['request'].user

        if 'ordem' in vd and vd['ordem']:
            Documento.objects.create_space(vd['parent'], vd['ordem'])

        if 'classe' in vd and vd['classe']:
            vd['template_doc'] = vd['classe'].template_doc_padrao
            vd['tipo'] = vd['classe'].tipo_doc_padrao

            if vd['classe'].visibilidade != CMSMixin.STATUS_PUBLIC:
                vd['visibilidade'] = vd['classe'].visibilidade

        instance = serializers.ModelSerializer.create(self, validated_data)

        if not instance.is_parte_de_documento():
            container = Documento()
            container.titulo = ''
            container.descricao = ''
            container.classe = instance.classe
            container.tipo = Documento.TPD_CONTAINER_SIMPLES
            container.owner = instance.owner
            container.parent = instance
            container.ordem = 1
            container.visibilidade = instance.visibilidade
            container.save()
        else:
            if not instance.ordem:
                prev = instance.parent.childs.view_childs().last()
                if prev:
                    instance.ordem = prev.ordem + 1
                    instance.save()

        return instance
Esempio n. 4
0
File: forms.py Progetto: cmjatai/cmj
    def save(self, commit=True):
        inst = self.instance

        if inst.visibilidade != Documento.STATUS_PUBLIC:
            inst.public_date = None
            inst.public_end_date = None
        else:
            if not inst.public_date:
                inst.public_date = timezone.now()

        inst = super().save(commit)

        if not inst.childs.exists():
            container = Documento()
            container.titulo = ''
            container.descricao = ''
            container.classe = inst.classe
            container.tipo = Documento.TPD_CONTAINER_SIMPLES
            container.owner = inst.owner
            container.parent = inst
            container.ordem = 1
            container.visibilidade = inst.visibilidade
            container.save()

        classe = inst.classe
        classe.capa = inst if self.cleaned_data['capa'] else None
        classe.save()

        return inst
Esempio n. 5
0
    def perform_update(self, serializer):
        len_files = len(self.request.FILES)
        instance = serializer.instance
        if not len(self.request.FILES):

            rotate = self.request.data.get('rotate', 0)
            if rotate:
                instance.midia.last.rotate(rotate)

            viewsets.ModelViewSet.perform_update(self, serializer)
            return

        files = self.request.FILES.getlist('files')

        if instance.tipo == Documento.TPD_IMAGE:
            # TPD_IMAGE deve receber apenas um arquivo
            # se por acaso receber mais de um, será ignorado

            if files:
                if not hasattr(instance, 'midia'):
                    midia = Midia()
                    midia.documento = instance
                    midia.save()
                else:
                    midia = instance.midia

                versao = VersaoDeMidia()
                versao.midia = midia
                versao.owner = self.request.user
                versao.alinhamento = instance.alinhamento
                versao.save(with_file=files[0])

        elif instance.tipo == Documento.TPD_FILE:

            if files:
                if not hasattr(instance, 'midia'):
                    midia = Midia()
                    midia.documento = instance
                    midia.save()
                else:
                    midia = instance.midia

                versao = VersaoDeMidia()
                versao.midia = midia
                versao.owner = self.request.user
                versao.alinhamento = instance.alinhamento
                versao.save(with_file=files[0])

        elif instance.tipo in Documento.TDc:
            ordem = 0
            last_image = instance.childs.view_childs().last()
            if last_image:
                ordem = last_image.ordem

            for file in files:
                try:
                    with transaction.atomic():
                        ordem += 1

                        image = Documento()
                        image.raiz = instance.raiz
                        image.parent = instance
                        image.visibilidade = Documento.STATUS_RESTRICT
                        image.ordem = ordem
                        image.titulo = ''
                        image.owner = self.request.user
                        image.tipo = Documento.TPD_IMAGE if instance.tipo != \
                            Documento.TPD_CONTAINER_FILE else Documento.TPD_FILE
                        image.classe = instance.classe
                        image.save()

                        midia = Midia()
                        midia.documento = image
                        midia.save()

                        versao = VersaoDeMidia()
                        versao.midia = midia
                        versao.owner = self.request.user
                        versao.alinhamento = Documento.ALINHAMENTO_JUSTIFY
                        versao.save(with_file=file)

                except:
                    ordem -= 1
Esempio n. 6
0
File: views.py Progetto: cmjatai/cmj
    def perform_update(self, serializer):
        len_files = len(self.request.FILES)
        instance = serializer.instance
        if not len(self.request.FILES):

            rotate = self.request.data.get('rotate', 0)
            if rotate:
                instance.midia.last.rotate(rotate)

            viewsets.ModelViewSet.perform_update(self, serializer)
            return

        files = self.request.FILES.getlist('files')

        if instance.tipo == Documento.TPD_IMAGE:
            # TPD_IMAGE deve receber apenas um arquivo
            # se por acaso receber mais de um, será ignorado

            if files:
                if not hasattr(instance, 'midia'):
                    midia = Midia()
                    midia.documento = instance
                    midia.save()
                else:
                    midia = instance.midia

                versao = VersaoDeMidia()
                versao.midia = midia
                versao.owner = self.request.user
                versao.alinhamento = instance.alinhamento
                versao.save(with_file=files[0])

        elif instance.tipo == Documento.TPD_FILE:

            if files:
                if not hasattr(instance, 'midia'):
                    midia = Midia()
                    midia.documento = instance
                    midia.save()
                else:
                    midia = instance.midia

                versao = VersaoDeMidia()
                versao.midia = midia
                versao.owner = self.request.user
                versao.alinhamento = instance.alinhamento
                versao.save(with_file=files[0])

        elif instance.tipo in Documento.TDc:
            ordem = 0
            last_image = instance.childs.view_childs().last()
            if last_image:
                ordem = last_image.ordem

            for file in files:
                try:
                    with transaction.atomic():
                        ordem += 1

                        image = Documento()
                        image.raiz = instance.raiz
                        image.parent = instance
                        image.visibilidade = Documento.STATUS_RESTRICT
                        image.ordem = ordem
                        image.titulo = ''
                        image.owner = self.request.user
                        image.tipo = Documento.TPD_IMAGE if instance.tipo != \
                            Documento.TPD_CONTAINER_FILE else Documento.TPD_FILE
                        image.classe = instance.classe
                        image.save()

                        midia = Midia()
                        midia.documento = image
                        midia.save()

                        versao = VersaoDeMidia()
                        versao.midia = midia
                        versao.owner = self.request.user
                        versao.alinhamento = Documento.ALINHAMENTO_JUSTIFY
                        versao.save(with_file=file)

                except:
                    ordem -= 1
Esempio n. 7
0
    def get_youtube(self, request, *args, **kwargs):

        import urllib3
        import json

        if not request.user.is_superuser:
            raise Http404()

        http = urllib3.PoolManager()

        playlists = [
            (198, 'PLgLO7BeNLo8MHrbBi75K7JVF7aGntEBoA'),  # Plenárias 2018
            (199, 'PLgLO7BeNLo8PsNewCX7mjzlbS91M5LILv'),  # Plenárias 2017
            (200, 'PLgLO7BeNLo8PPos7B59cOq1mDCHXuRkc3'),  # Plenárias 2016
            (201, 'PLgLO7BeNLo8NQfWXfKwj1ZbyA2lM-INNJ'),  # Plenárias 2015
            #(204, ''),  # Plenárias 2014
            (205, 'PLgLO7BeNLo8MP54ONb0p6RkadZqXensg-'),  # Plenárias 2013
            (197, 'PLgLO7BeNLo8MD8LzEb8obLTua4spbL_ui'),  # Sessões Solenes
            (206, 'PLgLO7BeNLo8PxBA-GjNUFG7dCWUPYwQFl'),  # Audiências Públicas
            (207, 'PLgLO7BeNLo8OluYcp2_5R61nNJXabb5vB'),  # Entrevistas
            (208, 'PLgLO7BeNLo8NIOg9IC-Fax8KmXT91eylS'),  # Memórias de Jataí
        ]

        url = ('https://www.googleapis.com/youtube/v3/playlistItems?'
               'part=snippet&maxResults=50'
               '&key=%s'
               '&playlistId=%s'
               '&pageToken=%s')

        for p in playlists:
            classe_id, pl = p

            pageToken = ''

            classe = Classe.objects.get(pk=classe_id)

            while pageToken is not None:
                r = http.request(
                    'GET', url %
                    (settings.GOOGLE_URL_API_KEY, pl, pageToken))

                data = r.data.decode('utf-8')
                data = json.loads(data)

                pageToken = data['nextPageToken']\
                    if 'nextPageToken' in data else None

                for item in data['items']:
                    snippet = item['snippet']

                    video_id = snippet['resourceId']['videoId']

                    if Documento.objects.filter(
                            texto__contains=video_id).exists():
                        documento = Documento.objects.filter(
                            texto__contains=video_id).first().raiz
                    else:
                        documento = Documento()

                    url_vid = ('https://www.googleapis.com/youtube/v3/videos?'
                               'part=snippet'
                               '&key=%s'
                               '&id=%s')

                    r = http.request('GET', url_vid %
                                     (settings.GOOGLE_URL_API_KEY, video_id))

                    vdata = r.data.decode('utf-8')
                    vdata = json.loads(vdata)
                    video_dict = {}
                    try:
                        video_dict = vdata['items'][0]['snippet']
                    except:
                        continue

                    documento.titulo = video_dict['title']
                    documento.descricao = video_dict['description']
                    documento.public_date = dateutil.parser.parse(
                        video_dict['publishedAt'])
                    documento.classe = classe
                    documento.tipo = Documento.TD_VIDEO_NEWS
                    documento.template_doc = 1
                    documento.owner = request.user
                    documento.visibilidade = Documento.STATUS_PUBLIC

                    documento.extra_data = video_dict
                    documento.save()
                    documento.childs.all().delete()

                    container = Documento()
                    container.raiz = documento
                    container.titulo = ''
                    container.descricao = ''
                    container.classe = classe
                    container.tipo = Documento.TPD_CONTAINER_SIMPLES
                    container.owner = request.user
                    container.parent = documento
                    container.ordem = 1
                    container.visibilidade = documento.visibilidade
                    container.save()

                    video = Documento()
                    video.raiz = documento
                    video.titulo = ''
                    video.descricao = ''
                    video.classe = classe
                    video.tipo = Documento.TPD_VIDEO
                    video.owner = request.user
                    video.parent = container
                    video.ordem = 1
                    video.extra_data = video_dict
                    video.visibilidade = documento.visibilidade

                    video.texto = (
                        '<iframe width="560" height="315"'
                        'src="https://www.youtube.com/embed/%s" '
                        'frameborder="0" '
                        'allow="autoplay; encrypted-media" allowfullscreen>'
                        '</iframe>' % video_id)

                    video.save()
Esempio n. 8
0
    def get_pm1(self, request, *args, **kwargs):

        import urllib3
        import json

        if not request.user.is_superuser:
            raise Http404()

        # Fotografia - captura todos os eventos no sistema de fotografia
        http = urllib3.PoolManager()

        r = http.request('GET', ('%s/fotografia/'
                                 'evento.do?action=evento_lista_json' %
                                 self.end_local_fotog))

        fotografia = self.get_or_create_classe(
            'Banco de Imagens', perfil=models.CLASSE_ESTRUTURAL)[0]

        data = r.data.decode('utf-8')
        # print('data: ', data)
        # return TemplateView.get(self, request, *args, **kwargs)
        jdata = json.loads(data)
        jdata = jdata[0:5]

        anos = {}
        print(len(jdata))
        for evento in jdata:
            data = datetime.strptime(
                evento['data'], '%Y-%m-%d %H:%M:%S.%f')
            anos[str(data.year)] = True
        anos = list(anos.keys())
        anos.sort()

        pasta_ano = {}
        for ano in anos:
            pasta_ano[ano] = self.get_or_create_classe(
                ano, parent=fotografia, perfil=models.CLASSE_DOCUMENTAL)[0]

        for evento in jdata:

            # if 'Sessão ordinária' in evento['epigrafe']:
            #    print('Pulando...', evento['epigrafe'])
            #    continue

            old_path = ('/fotografia/evento.do?action=evento_view&id=%s' %
                        evento['id'])

            documento = Documento.objects.filter(old_path=old_path).first()

            if documento:
                print('...', evento['epigrafe'])
                continue

            print('Cadastrando...', evento['epigrafe'])

            data = datetime.strptime(
                evento['data'], '%Y-%m-%d %H:%M:%S.%f')
            ano = str(data.year)

            documento = Documento()
            documento.old_path = old_path
            documento.old_json = json.dumps(evento)
            documento.titulo = evento['epigrafe']
            documento.descricao = evento['ementa']
            documento.public_date = data
            documento.classe = pasta_ano[ano]
            documento.tipo = Documento.TD_BI
            documento.template_doc = 2
            documento.owner = request.user
            documento.visibilidade = Documento.STATUS_RESTRICT
            documento.save()
            Revisao.gerar_revisao(documento, request.user)

            container = Documento()
            container.raiz = documento
            container.titulo = ''
            container.descricao = ''
            container.classe = pasta_ano[ano]
            container.tipo = Documento.TPD_CONTAINER_EXTENDIDO
            container.owner = request.user
            container.parent = documento
            container.visibilidade = \
                Documento.STATUS_RESTRICT
            container.save()
            Revisao.gerar_revisao(container, request.user)

            ordem = 0
            for midia_id_import in evento['midias']:
                ordem += 1
                old_path_midia = ('/fotografia/'
                                  'midia.do?action=midia_view'
                                  '&escala=cmj_import&idImage=%s'
                                  % midia_id_import)

                image = Documento()
                image.raiz = documento
                image.autor = 'Hélio Domingos'
                image.visibilidade = Documento.STATUS_RESTRICT
                image.ordem = ordem
                image.old_path = old_path_midia
                image.titulo = ''
                image.owner = request.user
                image.parent = container
                image.tipo = Documento.TPD_IMAGE
                image.classe = pasta_ano[ano]
                image.save()
                Revisao.gerar_revisao(image, request.user)

                midia = Midia()
                midia.documento = image
                midia.save()

                versao = VersaoDeMidia()
                versao.midia = midia
                versao.owner = request.user
                versao.content_type = 'image/jpeg'
                versao.alinhamento = Documento.ALINHAMENTO_JUSTIFY
                versao.save()

                file = http.request(
                    'GET', '%s%s' % (self.endereco_fotografia,
                                     old_path_midia,))

                img_temp = NamedTemporaryFile(delete=True)
                img_temp.write(file.data)
                img_temp.flush()
                versao.file.save("image.jpg", File(img_temp), save=True)

                print(midia_id_import)

        # PORTAL MODELO - captura todas as notícias do portal modelo 1.0
        p = 1
        s = 100
        news = []
        while True:
            print('Noticias do portal modelo:', p)
            r = http.request('GET', ('http://187.6.249.157'
                                     '/portal/json/jsonclient/json'
                                     '?page=%s&step=%s') % (
                p, s))

            jdata = json.loads(r.data.decode('utf-8'))

            stop = False
            for n in jdata:
                if Documento.objects.filter(old_path=n['path']).exists():
                    stop = True
                    break

                news.append(n)
                # print(n['date'])

            if stop or len(jdata) < s:
                break
            p += 1

            break  # comentar para importar tudo

        news.reverse()

        for n in news:

            n_date = ' '.join(n['date'].lower().split()[:2])
            if len(n_date) == 10:
                n_date += ' 00:00:00'

            n_effective = ' '.join(n['effective'].lower().split()[:2])
            if len(n_effective) == 10:
                n_effective += ' 00:00:00'

            gmt = n['date'].rsplit(' ', 1)[-1]

            gmt = 2 if gmt == 'gmt-2' else 3 if gmt == 'gmt-3' else 0

            d = Documento()
            try:
                d.created = datetime.strptime(
                    n_date, '%Y/%m/%d %H:%M:%S.%f') - timedelta(hours=gmt)
            except:
                try:
                    d.created = datetime.strptime(
                        n_date, '%Y/%m/%d %H:%M:%S') - timedelta(hours=gmt)
                except:
                    d.created = datetime.now()

            try:
                d.public_date = datetime.strptime(
                    n_effective, '%Y/%m/%d %H:%M:%S.%f') - timedelta(hours=gmt)
            except:
                try:
                    d.public_date = datetime.strptime(
                        n_effective, '%Y/%m/%d %H:%M:%S') - timedelta(hours=gmt)
                except:
                    d.public_date = datetime.now()

            d.owner = request.user
            d.descricao = n['description']
            d.titulo = n['title']
            d.visibilidade = 0 if n['review_state'] == 'published' else 99
            d.old_path = n['path']
            d.old_json = json.dumps(n)
            d.classe_id = 1
            d.save()
            Revisao.gerar_revisao(d, request.user)

            container = Documento()
            container.raiz = d
            container.titulo = ''
            container.descricao = ''
            container.classe_id = 1
            container.tipo = Documento.TPD_CONTAINER_SIMPLES
            container.owner = request.user
            container.parent = d
            container.ordem = 1
            container.visibilidade = d.visibilidade
            container.save()
            Revisao.gerar_revisao(container, request.user)

            ordem = 0
            if n['image']:
                ordem += 1
                image = Documento()
                image.raiz = d
                image.autor = n['image_caption']
                image.visibilidade = 0
                image.ordem = ordem
                image.titulo = ''
                image.owner = request.user
                image.parent = container
                image.tipo = Documento.TPD_IMAGE
                image.classe_id = 1
                image.visibilidade = d.visibilidade
                image.save()
                Revisao.gerar_revisao(image, request.user)

                midia = Midia()
                midia.documento = image
                midia.save()

                versao = VersaoDeMidia()
                versao.midia = midia
                versao.owner = request.user
                versao.content_type = 'image/jpeg'
                versao.save()

                file = http.request('GET', ('http://187.6.249.157%s'
                                            ) % (n['image']))

                img_temp = NamedTemporaryFile(delete=True)
                img_temp.write(file.data)
                img_temp.flush()
                versao.file.save("image.jpg", File(img_temp), save=True)

            if n['text']:
                ordem += 1
                texto = Documento()
                texto.raiz = d
                texto.texto = n['text']
                texto.visibilidade = d.visibilidade
                texto.ordem = ordem
                texto.owner = request.user
                texto.parent = container
                texto.classe_id = 1
                texto.tipo = Documento.TPD_TEXTO

                texto.save()
                Revisao.gerar_revisao(texto, request.user)

            if n['url_source_album']:

                print('%s%s' % (self.end_local_fotog,
                                n['url_source_album']))

                jdata = []
                try:
                    r = http.request('GET', '%s%s' % (
                        self.end_local_fotog,
                        n['url_source_album']))
                    jdata = json.loads(r.data.decode('utf-8'))
                except:
                    pass

                if not jdata:
                    continue

                if len(jdata) == 1 and jdata[0]['id'] == "0":
                    continue

                ordem += 1

                cont_gallery = Documento()
                cont_gallery.raiz = d
                cont_gallery.titulo = ''
                cont_gallery.descricao = ''
                cont_gallery.classe_id = 1
                cont_gallery.tipo = Documento.TPD_CONTAINER_EXTENDIDO
                cont_gallery.owner = request.user
                cont_gallery.parent = d
                cont_gallery.ordem = 2
                cont_gallery.visibilidade = d.visibilidade
                cont_gallery.save()
                Revisao.gerar_revisao(cont_gallery, request.user)

                galeria = Documento()
                galeria.raiz = d
                galeria.autor = n['image_caption']
                galeria.visibilidade = d.visibilidade
                galeria.ordem = ordem
                galeria.titulo = ''
                galeria.owner = request.user
                galeria.parent = cont_gallery
                galeria.tipo = Documento.TPD_GALLERY
                galeria.classe_id = 1
                galeria.save()
                Revisao.gerar_revisao(galeria, request.user)

                ord_ref = 1
                for item in jdata:
                    old_path_midia = ('/fotografia/'
                                      'midia.do?action=midia_view'
                                      '&escala=cmj_import&idImage=%s'
                                      % item['id'])

                    referenciado = Documento.objects.filter(
                        old_path=old_path_midia).first()

                    if referenciado:
                        ref = ReferenciaEntreDocumentos()
                        ref.referenciado = referenciado
                        ref.referente = galeria
                        ref.ordem = ord_ref
                        ref.titulo = ''

                        ref.save()
                        ord_ref += 1

        # liga as notícias aos parlamentares
        pm = Parlamentar.objects
        url_parts = (
            (pm.get(pk=7), 1, 1, 'Adilson-Carvalho'),
            (pm.get(pk=14), 1, 1, '/Vereadores/thiago-maggioni/'),
            (pm.get(pk=168), 1, 1, '/Vereadores/david-pires/'),
            (pm.get(pk=166), 1, 1, '/Vereadores/jose-prado-carapo/'),
            (pm.get(pk=165), 1, 1, 'carvalhinho/noticias/'),
            (pm.get(pk=12), 1, 1, 'Vereadores/gildenicio-santos/'),
            (pm.get(pk=8), 1, 1, '/Vereadores/Joao-Rosa/'),
            (pm.get(pk=167), 1, 1, '/Vereadores/katia-carvalho/'),
            (pm.get(pk=9), 1, 1, '/Vereadores/Marcos-Antonio/'),
            (pm.get(pk=2), 1, 1, '/Vereadores/mauro-bento-filho/'),
            (pm.get(pk=13), 1, 1, 'vereadores-2013-2016/vinicius-luz/'),
            (pm.get(pk=11), 1, 1, 'vereadores-2013-2016/Nilton-Cesar-Soro/'),
            (pm.get(pk=1), 1, 1, 'vereadores-2013-2016/Geovaci-Peres/'),
            (pm.get(pk=16), 1, 1, 'vereadores-2013-2016/carlos-miranda/'),
            (pm.get(pk=6), 1, 1, 'vereadores-2013-2016/Genio-Euripedes/'),

            (pm.get(pk=152), 1, 1, 'Vereadores_2009-2012/Ediglan-Maia'),
            (pm.get(pk=6), 1, 1, 'Vereadores_2009-2012/Genio-Euripedes/'),
            (pm.get(pk=4), 1, 1, 'Vereadores_2009-2012/Vilma-Feitosa/'),
            (pm.get(pk=3), 1, 1, 'Vereadores_2009-2012/Nelson-Antonio/'),
            (pm.get(pk=5), 1, 1, 'Vereadores_2009-2012/Pr-Luiz-Carlos/'),


            (pm.get(pk=6), 1, 1, 'Vereadores_2005-2008/genio-euripedes'),
            (pm.get(pk=128), 1, 1, 'Vereadores_2005-2008/alcides-fazolino'),
            (pm.get(pk=157), 1, 1, 'Vereadores_2005-2008/abimael-silva'),
            (pm.get(pk=152), 1, 1, 'Vereadores_2005-2008/ediglan-maia'),
            (pm.get(pk=155), 1, 1, 'Vereadores_2005-2008/maria-jose'),
            (pm.get(pk=156), 1, 1, 'Vereadores_2005-2008/soraia-rodrigues'),
            (pm.get(pk=154), 1, 1, 'Vereadores_2005-2008/joao-wesley'),
            (pm.get(pk=158), 1, 1, 'Vereadores_2005-2008/andre-pires'),


            (0, 1, 3, '/portal/tv/cmj-noticias/'),
            (0, 1, 4, '/portal/tv/sessoes/'),
            (0, 1, 5, '/portal/tv/fala-vereador/'),
            (0, 1, 6, '/portal/tv/a-voz-da-comunidade/'),

            (0, 1, 9, '/portal/radio/momento-camara'),
        )

        for u in url_parts:
            print(u)
            docs = Documento.objects.filter(
                classe=u[1],
                # parlamentares__isnull=True,
                old_path__contains=u[3])

            for doc in docs:
                if u[0] and not doc.parlamentares.exists():
                    doc.parlamentares.add(u[0])

                if u[1] != u[2]:
                    for item in doc.tree2list():
                        item.classe_id = u[2]
                        item.save()

        Documento.objects.filter(
            old_path__startswith='/portal/radio/programacao/').delete()

        Documento.objects.filter(
            old_path__startswith='/portal/videosdiversos/').delete()

        parlamentar, created_parlamentar = self.get_or_create_classe(
            'Parlamentar',
            visibilidade=CMSMixin.STATUS_PUBLIC,
            perfil=models.CLASSE_ESTRUTURAL)

        if created_parlamentar:
            parlamentar.template_classe = \
                CLASSE_TEMPLATES_CHOICE.parlamentares
            parlamentar.save()

        pms = pm.all()

        for p in pms:
            classe_parlamentar, created = self.get_or_create_classe(
                p.nome_parlamentar,
                parent=parlamentar,
                visibilidade=CMSMixin.STATUS_PUBLIC,
                perfil=models.CLASSE_ESTRUTURAL)

            if created or not classe_parlamentar.parlamentar:
                classe_parlamentar.template_classe = \
                    CLASSE_TEMPLATES_CHOICE.parlamentar
                classe_parlamentar.parlamentar = p
                classe_parlamentar.save()

        # FOTOGRAFIA - captura de albuns independentes sem notícias associadas
        r = http.request('GET', ('%s/fotografia/'
                                 'album.do?action=album_lista_json' %
                                 self.end_local_fotog))

        data = r.data.decode('utf-8')
        # print('data: ', data)
        # return TemplateView.get(self, request, *args, **kwargs)
        jdata = json.loads(data)
        jdata = jdata[0:21]

        print('Albuns independentes:', len(jdata))

        classe_albuns = Classe.objects.get(slug='galerias/imagens')

        for album in jdata:

            evento_path = ('/fotografia/evento.do?action=evento_view&id=%s' %
                           album['evento_id'])

            if not Documento.objects.filter(old_path=evento_path).exists():
                print ('não existe evento associado:', album['id'])
                continue

            capa = ('/fotografia/'
                    'midia.do?action=midia_view'
                    '&escala=cmj_import&idImage=%s'
                    % album['idMCp'])

            noticia = Documento.objects.filter(old_path=capa,
                                               citado_em__isnull=False)
            if noticia.exists():
                print ('Já existe album associado a notícia:', album['tit'])

                img = noticia.first()

                """if img:
                    d = img.citado_em.all().first().referente
                    d.titulo = album['tit']
                    d.descricao = album['dscr']
                    d.save()
                    Revisao.gerar_revisao(d, request.user)"""
                continue

            album_path = ("/fotografia/album.do?action=album_json&id=%s"
                          % album['id'])

            if Documento.objects.filter(old_path=album_path).exists():
                print ('Já existe album:', album['tit'])
                continue

            print ('Criando album:', album['tit'])

            jmidias = []
            try:
                r = http.request('GET', '%s%s%s' % (
                    self.end_local_fotog,
                    '/fotografia/album.do?action=album_json&id=', album['id']))
                jmidias = json.loads(r.data.decode('utf-8'))
            except:
                pass

            if not jmidias:
                continue

            if len(jmidias) == 1 and jmidias[0]['id'] == "0":
                continue

            evento = Documento.objects.filter(old_path=evento_path).first()

            with transaction.atomic():
                documento = Documento()
                documento.old_path = album_path
                documento.old_json = json.dumps(album)
                documento.titulo = album['tit']
                documento.descricao = album['dscr']
                documento.public_date = evento.public_date
                documento.classe = classe_albuns
                documento.tipo = Documento.TD_GALERIA_PUBLICA
                documento.template_doc = DOC_TEMPLATES_CHOICE.noticia
                documento.owner = request.user
                documento.visibilidade = Documento.STATUS_PUBLIC
                documento.save()
                Revisao.gerar_revisao(documento, request.user)

                cont_gallery = Documento()
                cont_gallery.raiz = documento
                cont_gallery.titulo = ''
                cont_gallery.descricao = ''
                cont_gallery.classe = classe_albuns
                cont_gallery.tipo = Documento.TPD_CONTAINER_EXTENDIDO
                cont_gallery.owner = request.user
                cont_gallery.parent = documento
                cont_gallery.ordem = 1
                cont_gallery.visibilidade = documento.visibilidade
                cont_gallery.save()
                Revisao.gerar_revisao(cont_gallery, request.user)

                galeria = Documento()
                galeria.raiz = documento
                galeria.autor = 'Hélio Domingos'
                galeria.visibilidade = documento.visibilidade
                galeria.ordem = 1
                galeria.titulo = ''
                galeria.owner = request.user
                galeria.parent = cont_gallery
                galeria.tipo = Documento.TPD_GALLERY
                galeria.classe = classe_albuns
                galeria.save()
                Revisao.gerar_revisao(galeria, request.user)

                ord_ref = 2
                for midia in jmidias:
                    old_path_midia = ('/fotografia/'
                                      'midia.do?action=midia_view'
                                      '&escala=cmj_import&idImage=%s'
                                      % midia['id'])

                    referenciado = Documento.objects.filter(
                        old_path=old_path_midia).first()

                    if referenciado:

                        ref = ReferenciaEntreDocumentos()
                        ref.referenciado = referenciado
                        ref.referente = galeria
                        ref.titulo = ''

                        ref.ordem = ord_ref if midia[
                            'id'] != album['idMCp'] else 1

                        ref.ordem = ord_ref
                        ref.save()
                        if midia['id'] != album['idMCp']:
                            ord_ref += 1

        http = urllib3.PoolManager()

        for p in Parlamentar.objects.all():
            p.fotografia.delete()

            mypath = '%s/sapl/public/parlamentar/%s' % (
                settings.MEDIA_ROOT, p.pk)

            print(p.nome_parlamentar)

            if os.path.exists(mypath):
                onlyfiles = [
                    f for f in os.listdir(mypath)
                    if os.path.isfile(os.path.join(mypath, f))]

                for f in onlyfiles:
                    os.remove(mypath + '/' + f)

            file = http.request(
                'GET', ('http://187.6.249.156:8480/sapl/'
                        'sapl_documentos/parlamentar/fotos/'
                        '%s_foto_parlamentar') % (p.pk, ))

            try:
                data = file.data.decode('utf-8')
            except:
                img_temp = NamedTemporaryFile(delete=True)
                img_temp.write(file.data)
                img_temp.flush()
                p.fotografia.save("image.jpg", File(img_temp), save=True)

        return TemplateView.get(self, request, *args, **kwargs)
Esempio n. 9
0
    def get_youtube(self, request, *args, **kwargs):

        import urllib3
        import json

        if not request.user.is_superuser:
            raise Http404()

        http = urllib3.PoolManager()

        playlists = [
            (198, 'PLgLO7BeNLo8MHrbBi75K7JVF7aGntEBoA'),  # Plenárias 2018
            (199, 'PLgLO7BeNLo8PsNewCX7mjzlbS91M5LILv'),  # Plenárias 2017
            (200, 'PLgLO7BeNLo8PPos7B59cOq1mDCHXuRkc3'),  # Plenárias 2016
            (201, 'PLgLO7BeNLo8NQfWXfKwj1ZbyA2lM-INNJ'),  # Plenárias 2015
            #(204, ''),  # Plenárias 2014
            (205, 'PLgLO7BeNLo8MP54ONb0p6RkadZqXensg-'),  # Plenárias 2013
            (197, 'PLgLO7BeNLo8MD8LzEb8obLTua4spbL_ui'),  # Sessões Solenes
            (206, 'PLgLO7BeNLo8PxBA-GjNUFG7dCWUPYwQFl'),  # Audiências Públicas
            (207, 'PLgLO7BeNLo8OluYcp2_5R61nNJXabb5vB'),  # Entrevistas
            (208, 'PLgLO7BeNLo8NIOg9IC-Fax8KmXT91eylS'),  # Memórias de Jataí
        ]

        url = ('https://www.googleapis.com/youtube/v3/playlistItems?'
               'part=snippet&maxResults=50'
               '&key=%s'
               '&playlistId=%s'
               '&pageToken=%s')

        for p in playlists:
            classe_id, pl = p

            pageToken = ''

            classe = Classe.objects.get(pk=classe_id)

            while pageToken is not None:
                r = http.request(
                    'GET', url % (settings.GOOGLE_URL_API_KEY, pl, pageToken))

                data = r.data.decode('utf-8')
                data = json.loads(data)

                pageToken = data['nextPageToken']\
                    if 'nextPageToken' in data else None

                for item in data['items']:
                    snippet = item['snippet']

                    video_id = snippet['resourceId']['videoId']

                    if Documento.objects.filter(
                            texto__contains=video_id).exists():
                        documento = Documento.objects.filter(
                            texto__contains=video_id).first().raiz
                    else:
                        documento = Documento()

                    url_vid = ('https://www.googleapis.com/youtube/v3/videos?'
                               'part=snippet'
                               '&key=%s'
                               '&id=%s')

                    r = http.request(
                        'GET',
                        url_vid % (settings.GOOGLE_URL_API_KEY, video_id))

                    vdata = r.data.decode('utf-8')
                    vdata = json.loads(vdata)
                    video_dict = {}
                    try:
                        video_dict = vdata['items'][0]['snippet']
                    except:
                        continue

                    documento.titulo = video_dict['title']
                    documento.descricao = video_dict['description']
                    documento.public_date = dateutil.parser.parse(
                        video_dict['publishedAt'])
                    documento.classe = classe
                    documento.tipo = Documento.TD_VIDEO_NEWS
                    documento.template_doc = 1
                    documento.owner = request.user
                    documento.visibilidade = Documento.STATUS_PUBLIC

                    documento.extra_data = video_dict
                    documento.save()
                    documento.childs.all().delete()

                    container = Documento()
                    container.raiz = documento
                    container.titulo = ''
                    container.descricao = ''
                    container.classe = classe
                    container.tipo = Documento.TPD_CONTAINER_SIMPLES
                    container.owner = request.user
                    container.parent = documento
                    container.ordem = 1
                    container.visibilidade = documento.visibilidade
                    container.save()

                    video = Documento()
                    video.raiz = documento
                    video.titulo = ''
                    video.descricao = ''
                    video.classe = classe
                    video.tipo = Documento.TPD_VIDEO
                    video.owner = request.user
                    video.parent = container
                    video.ordem = 1
                    video.extra_data = video_dict
                    video.visibilidade = documento.visibilidade

                    video.texto = (
                        '<iframe width="560" height="315"'
                        'src="https://www.youtube.com/embed/%s" '
                        'frameborder="0" '
                        'allow="autoplay; encrypted-media" allowfullscreen>'
                        '</iframe>' % video_id)

                    video.save()
Esempio n. 10
0
    def get_pm1(self, request, *args, **kwargs):

        import urllib3
        import json

        if not request.user.is_superuser:
            raise Http404()

        # Fotografia - captura todos os eventos no sistema de fotografia
        http = urllib3.PoolManager()

        r = http.request(
            'GET',
            ('%s/fotografia/'
             'evento.do?action=evento_lista_json' % self.end_local_fotog))

        fotografia = self.get_or_create_classe(
            'Banco de Imagens', perfil=models.CLASSE_ESTRUTURAL)[0]

        data = r.data.decode('utf-8')
        # print('data: ', data)
        # return TemplateView.get(self, request, *args, **kwargs)
        jdata = json.loads(data)
        jdata = jdata[0:5]

        anos = {}
        print(len(jdata))
        for evento in jdata:
            data = datetime.strptime(evento['data'], '%Y-%m-%d %H:%M:%S.%f')
            anos[str(data.year)] = True
        anos = list(anos.keys())
        anos.sort()

        pasta_ano = {}
        for ano in anos:
            pasta_ano[ano] = self.get_or_create_classe(
                ano, parent=fotografia, perfil=models.CLASSE_DOCUMENTAL)[0]

        for evento in jdata:

            # if 'Sessão ordinária' in evento['epigrafe']:
            #    print('Pulando...', evento['epigrafe'])
            #    continue

            old_path = ('/fotografia/evento.do?action=evento_view&id=%s' %
                        evento['id'])

            documento = Documento.objects.filter(old_path=old_path).first()

            if documento:
                print('...', evento['epigrafe'])
                continue

            print('Cadastrando...', evento['epigrafe'])

            data = datetime.strptime(evento['data'], '%Y-%m-%d %H:%M:%S.%f')
            ano = str(data.year)

            documento = Documento()
            documento.old_path = old_path
            documento.old_json = json.dumps(evento)
            documento.titulo = evento['epigrafe']
            documento.descricao = evento['ementa']
            documento.public_date = data
            documento.classe = pasta_ano[ano]
            documento.tipo = Documento.TD_BI
            documento.template_doc = 2
            documento.owner = request.user
            documento.visibilidade = Documento.STATUS_RESTRICT
            documento.save()
            Revisao.gerar_revisao(documento, request.user)

            container = Documento()
            container.raiz = documento
            container.titulo = ''
            container.descricao = ''
            container.classe = pasta_ano[ano]
            container.tipo = Documento.TPD_CONTAINER_EXTENDIDO
            container.owner = request.user
            container.parent = documento
            container.visibilidade = \
                Documento.STATUS_RESTRICT
            container.save()
            Revisao.gerar_revisao(container, request.user)

            ordem = 0
            for midia_id_import in evento['midias']:
                ordem += 1
                old_path_midia = ('/fotografia/'
                                  'midia.do?action=midia_view'
                                  '&escala=cmj_import&idImage=%s' %
                                  midia_id_import)

                image = Documento()
                image.raiz = documento
                image.autor = 'Hélio Domingos'
                image.visibilidade = Documento.STATUS_RESTRICT
                image.ordem = ordem
                image.old_path = old_path_midia
                image.titulo = ''
                image.owner = request.user
                image.parent = container
                image.tipo = Documento.TPD_IMAGE
                image.classe = pasta_ano[ano]
                image.save()
                Revisao.gerar_revisao(image, request.user)

                midia = Midia()
                midia.documento = image
                midia.save()

                versao = VersaoDeMidia()
                versao.midia = midia
                versao.owner = request.user
                versao.content_type = 'image/jpeg'
                versao.alinhamento = Documento.ALINHAMENTO_JUSTIFY
                versao.save()

                file = http.request(
                    'GET', '%s%s' % (
                        self.endereco_fotografia,
                        old_path_midia,
                    ))

                img_temp = NamedTemporaryFile(delete=True)
                img_temp.write(file.data)
                img_temp.flush()
                versao.file.save("image.jpg", File(img_temp), save=True)

                print(midia_id_import)

        # PORTAL MODELO - captura todas as notícias do portal modelo 1.0
        p = 1
        s = 100
        news = []
        while True:
            print('Noticias do portal modelo:', p)
            r = http.request('GET', ('http://187.6.249.157'
                                     '/portal/json/jsonclient/json'
                                     '?page=%s&step=%s') % (p, s))

            jdata = json.loads(r.data.decode('utf-8'))

            stop = False
            for n in jdata:
                if Documento.objects.filter(old_path=n['path']).exists():
                    stop = True
                    break

                news.append(n)
                # print(n['date'])

            if stop or len(jdata) < s:
                break
            p += 1

            break  # comentar para importar tudo

        news.reverse()

        for n in news:

            n_date = ' '.join(n['date'].lower().split()[:2])
            if len(n_date) == 10:
                n_date += ' 00:00:00'

            n_effective = ' '.join(n['effective'].lower().split()[:2])
            if len(n_effective) == 10:
                n_effective += ' 00:00:00'

            gmt = n['date'].rsplit(' ', 1)[-1]

            gmt = 2 if gmt == 'gmt-2' else 3 if gmt == 'gmt-3' else 0

            d = Documento()
            try:
                d.created = datetime.strptime(
                    n_date, '%Y/%m/%d %H:%M:%S.%f') - timedelta(hours=gmt)
            except:
                try:
                    d.created = datetime.strptime(
                        n_date, '%Y/%m/%d %H:%M:%S') - timedelta(hours=gmt)
                except:
                    d.created = datetime.now()

            try:
                d.public_date = datetime.strptime(
                    n_effective, '%Y/%m/%d %H:%M:%S.%f') - timedelta(hours=gmt)
            except:
                try:
                    d.public_date = datetime.strptime(
                        n_effective,
                        '%Y/%m/%d %H:%M:%S') - timedelta(hours=gmt)
                except:
                    d.public_date = datetime.now()

            d.owner = request.user
            d.descricao = n['description']
            d.titulo = n['title']
            d.visibilidade = 0 if n['review_state'] == 'published' else 99
            d.old_path = n['path']
            d.old_json = json.dumps(n)
            d.classe_id = 1
            d.save()
            Revisao.gerar_revisao(d, request.user)

            container = Documento()
            container.raiz = d
            container.titulo = ''
            container.descricao = ''
            container.classe_id = 1
            container.tipo = Documento.TPD_CONTAINER_SIMPLES
            container.owner = request.user
            container.parent = d
            container.ordem = 1
            container.visibilidade = d.visibilidade
            container.save()
            Revisao.gerar_revisao(container, request.user)

            ordem = 0
            if n['image']:
                ordem += 1
                image = Documento()
                image.raiz = d
                image.autor = n['image_caption']
                image.visibilidade = 0
                image.ordem = ordem
                image.titulo = ''
                image.owner = request.user
                image.parent = container
                image.tipo = Documento.TPD_IMAGE
                image.classe_id = 1
                image.visibilidade = d.visibilidade
                image.save()
                Revisao.gerar_revisao(image, request.user)

                midia = Midia()
                midia.documento = image
                midia.save()

                versao = VersaoDeMidia()
                versao.midia = midia
                versao.owner = request.user
                versao.content_type = 'image/jpeg'
                versao.save()

                file = http.request('GET',
                                    ('http://187.6.249.157%s') % (n['image']))

                img_temp = NamedTemporaryFile(delete=True)
                img_temp.write(file.data)
                img_temp.flush()
                versao.file.save("image.jpg", File(img_temp), save=True)

            if n['text']:
                ordem += 1
                texto = Documento()
                texto.raiz = d
                texto.texto = n['text']
                texto.visibilidade = d.visibilidade
                texto.ordem = ordem
                texto.owner = request.user
                texto.parent = container
                texto.classe_id = 1
                texto.tipo = Documento.TPD_TEXTO

                texto.save()
                Revisao.gerar_revisao(texto, request.user)

            if n['url_source_album']:

                print('%s%s' % (self.end_local_fotog, n['url_source_album']))

                jdata = []
                try:
                    r = http.request(
                        'GET',
                        '%s%s' % (self.end_local_fotog, n['url_source_album']))
                    jdata = json.loads(r.data.decode('utf-8'))
                except:
                    pass

                if not jdata:
                    continue

                if len(jdata) == 1 and jdata[0]['id'] == "0":
                    continue

                ordem += 1

                cont_gallery = Documento()
                cont_gallery.raiz = d
                cont_gallery.titulo = ''
                cont_gallery.descricao = ''
                cont_gallery.classe_id = 1
                cont_gallery.tipo = Documento.TPD_CONTAINER_EXTENDIDO
                cont_gallery.owner = request.user
                cont_gallery.parent = d
                cont_gallery.ordem = 2
                cont_gallery.visibilidade = d.visibilidade
                cont_gallery.save()
                Revisao.gerar_revisao(cont_gallery, request.user)

                galeria = Documento()
                galeria.raiz = d
                galeria.autor = n['image_caption']
                galeria.visibilidade = d.visibilidade
                galeria.ordem = ordem
                galeria.titulo = ''
                galeria.owner = request.user
                galeria.parent = cont_gallery
                galeria.tipo = Documento.TPD_GALLERY
                galeria.classe_id = 1
                galeria.save()
                Revisao.gerar_revisao(galeria, request.user)

                ord_ref = 1
                for item in jdata:
                    old_path_midia = ('/fotografia/'
                                      'midia.do?action=midia_view'
                                      '&escala=cmj_import&idImage=%s' %
                                      item['id'])

                    referenciado = Documento.objects.filter(
                        old_path=old_path_midia).first()

                    if referenciado:
                        ref = ReferenciaEntreDocumentos()
                        ref.referenciado = referenciado
                        ref.referente = galeria
                        ref.ordem = ord_ref
                        ref.titulo = ''

                        ref.save()
                        ord_ref += 1

        # liga as notícias aos parlamentares
        pm = Parlamentar.objects
        url_parts = (
            (pm.get(pk=7), 1, 1, 'Adilson-Carvalho'),
            (pm.get(pk=14), 1, 1, '/Vereadores/thiago-maggioni/'),
            (pm.get(pk=168), 1, 1, '/Vereadores/david-pires/'),
            (pm.get(pk=166), 1, 1, '/Vereadores/jose-prado-carapo/'),
            (pm.get(pk=165), 1, 1, 'carvalhinho/noticias/'),
            (pm.get(pk=12), 1, 1, 'Vereadores/gildenicio-santos/'),
            (pm.get(pk=8), 1, 1, '/Vereadores/Joao-Rosa/'),
            (pm.get(pk=167), 1, 1, '/Vereadores/katia-carvalho/'),
            (pm.get(pk=9), 1, 1, '/Vereadores/Marcos-Antonio/'),
            (pm.get(pk=2), 1, 1, '/Vereadores/mauro-bento-filho/'),
            (pm.get(pk=13), 1, 1, 'vereadores-2013-2016/vinicius-luz/'),
            (pm.get(pk=11), 1, 1, 'vereadores-2013-2016/Nilton-Cesar-Soro/'),
            (pm.get(pk=1), 1, 1, 'vereadores-2013-2016/Geovaci-Peres/'),
            (pm.get(pk=16), 1, 1, 'vereadores-2013-2016/carlos-miranda/'),
            (pm.get(pk=6), 1, 1, 'vereadores-2013-2016/Genio-Euripedes/'),
            (pm.get(pk=152), 1, 1, 'Vereadores_2009-2012/Ediglan-Maia'),
            (pm.get(pk=6), 1, 1, 'Vereadores_2009-2012/Genio-Euripedes/'),
            (pm.get(pk=4), 1, 1, 'Vereadores_2009-2012/Vilma-Feitosa/'),
            (pm.get(pk=3), 1, 1, 'Vereadores_2009-2012/Nelson-Antonio/'),
            (pm.get(pk=5), 1, 1, 'Vereadores_2009-2012/Pr-Luiz-Carlos/'),
            (pm.get(pk=6), 1, 1, 'Vereadores_2005-2008/genio-euripedes'),
            (pm.get(pk=128), 1, 1, 'Vereadores_2005-2008/alcides-fazolino'),
            (pm.get(pk=157), 1, 1, 'Vereadores_2005-2008/abimael-silva'),
            (pm.get(pk=152), 1, 1, 'Vereadores_2005-2008/ediglan-maia'),
            (pm.get(pk=155), 1, 1, 'Vereadores_2005-2008/maria-jose'),
            (pm.get(pk=156), 1, 1, 'Vereadores_2005-2008/soraia-rodrigues'),
            (pm.get(pk=154), 1, 1, 'Vereadores_2005-2008/joao-wesley'),
            (pm.get(pk=158), 1, 1, 'Vereadores_2005-2008/andre-pires'),
            (0, 1, 3, '/portal/tv/cmj-noticias/'),
            (0, 1, 4, '/portal/tv/sessoes/'),
            (0, 1, 5, '/portal/tv/fala-vereador/'),
            (0, 1, 6, '/portal/tv/a-voz-da-comunidade/'),
            (0, 1, 9, '/portal/radio/momento-camara'),
        )

        for u in url_parts:
            print(u)
            docs = Documento.objects.filter(
                classe=u[1],
                # parlamentares__isnull=True,
                old_path__contains=u[3])

            for doc in docs:
                if u[0] and not doc.parlamentares.exists():
                    doc.parlamentares.add(u[0])

                if u[1] != u[2]:
                    for item in doc.tree2list():
                        item.classe_id = u[2]
                        item.save()

        Documento.objects.filter(
            old_path__startswith='/portal/radio/programacao/').delete()

        Documento.objects.filter(
            old_path__startswith='/portal/videosdiversos/').delete()

        parlamentar, created_parlamentar = self.get_or_create_classe(
            'Parlamentar',
            visibilidade=CMSMixin.STATUS_PUBLIC,
            perfil=models.CLASSE_ESTRUTURAL)

        if created_parlamentar:
            parlamentar.template_classe = \
                CLASSE_TEMPLATES_CHOICE.parlamentares
            parlamentar.save()

        pms = pm.all()

        for p in pms:
            classe_parlamentar, created = self.get_or_create_classe(
                p.nome_parlamentar,
                parent=parlamentar,
                visibilidade=CMSMixin.STATUS_PUBLIC,
                perfil=models.CLASSE_ESTRUTURAL)

            if created or not classe_parlamentar.parlamentar:
                classe_parlamentar.template_classe = \
                    CLASSE_TEMPLATES_CHOICE.parlamentar
                classe_parlamentar.parlamentar = p
                classe_parlamentar.save()

        # FOTOGRAFIA - captura de albuns independentes sem notícias associadas
        r = http.request(
            'GET', ('%s/fotografia/'
                    'album.do?action=album_lista_json' % self.end_local_fotog))

        data = r.data.decode('utf-8')
        # print('data: ', data)
        # return TemplateView.get(self, request, *args, **kwargs)
        jdata = json.loads(data)
        jdata = jdata[0:21]

        print('Albuns independentes:', len(jdata))

        classe_albuns = Classe.objects.get(slug='galerias/imagens')

        for album in jdata:

            evento_path = ('/fotografia/evento.do?action=evento_view&id=%s' %
                           album['evento_id'])

            if not Documento.objects.filter(old_path=evento_path).exists():
                print('não existe evento associado:', album['id'])
                continue

            capa = ('/fotografia/'
                    'midia.do?action=midia_view'
                    '&escala=cmj_import&idImage=%s' % album['idMCp'])

            noticia = Documento.objects.filter(old_path=capa,
                                               citado_em__isnull=False)
            if noticia.exists():
                print('Já existe album associado a notícia:', album['tit'])

                img = noticia.first()
                """if img:
                    d = img.citado_em.all().first().referente
                    d.titulo = album['tit']
                    d.descricao = album['dscr']
                    d.save()
                    Revisao.gerar_revisao(d, request.user)"""
                continue

            album_path = ("/fotografia/album.do?action=album_json&id=%s" %
                          album['id'])

            if Documento.objects.filter(old_path=album_path).exists():
                print('Já existe album:', album['tit'])
                continue

            print('Criando album:', album['tit'])

            jmidias = []
            try:
                r = http.request(
                    'GET',
                    '%s%s%s' % (self.end_local_fotog,
                                '/fotografia/album.do?action=album_json&id=',
                                album['id']))
                jmidias = json.loads(r.data.decode('utf-8'))
            except:
                pass

            if not jmidias:
                continue

            if len(jmidias) == 1 and jmidias[0]['id'] == "0":
                continue

            evento = Documento.objects.filter(old_path=evento_path).first()

            with transaction.atomic():
                documento = Documento()
                documento.old_path = album_path
                documento.old_json = json.dumps(album)
                documento.titulo = album['tit']
                documento.descricao = album['dscr']
                documento.public_date = evento.public_date
                documento.classe = classe_albuns
                documento.tipo = Documento.TD_GALERIA_PUBLICA
                documento.template_doc = DOC_TEMPLATES_CHOICE.noticia
                documento.owner = request.user
                documento.visibilidade = Documento.STATUS_PUBLIC
                documento.save()
                Revisao.gerar_revisao(documento, request.user)

                cont_gallery = Documento()
                cont_gallery.raiz = documento
                cont_gallery.titulo = ''
                cont_gallery.descricao = ''
                cont_gallery.classe = classe_albuns
                cont_gallery.tipo = Documento.TPD_CONTAINER_EXTENDIDO
                cont_gallery.owner = request.user
                cont_gallery.parent = documento
                cont_gallery.ordem = 1
                cont_gallery.visibilidade = documento.visibilidade
                cont_gallery.save()
                Revisao.gerar_revisao(cont_gallery, request.user)

                galeria = Documento()
                galeria.raiz = documento
                galeria.autor = 'Hélio Domingos'
                galeria.visibilidade = documento.visibilidade
                galeria.ordem = 1
                galeria.titulo = ''
                galeria.owner = request.user
                galeria.parent = cont_gallery
                galeria.tipo = Documento.TPD_GALLERY
                galeria.classe = classe_albuns
                galeria.save()
                Revisao.gerar_revisao(galeria, request.user)

                ord_ref = 2
                for midia in jmidias:
                    old_path_midia = ('/fotografia/'
                                      'midia.do?action=midia_view'
                                      '&escala=cmj_import&idImage=%s' %
                                      midia['id'])

                    referenciado = Documento.objects.filter(
                        old_path=old_path_midia).first()

                    if referenciado:

                        ref = ReferenciaEntreDocumentos()
                        ref.referenciado = referenciado
                        ref.referente = galeria
                        ref.titulo = ''

                        ref.ordem = ord_ref if midia['id'] != album[
                            'idMCp'] else 1

                        ref.ordem = ord_ref
                        ref.save()
                        if midia['id'] != album['idMCp']:
                            ord_ref += 1

        http = urllib3.PoolManager()

        for p in Parlamentar.objects.all():
            p.fotografia.delete()

            mypath = '%s/sapl/public/parlamentar/%s' % (settings.MEDIA_ROOT,
                                                        p.pk)

            print(p.nome_parlamentar)

            if os.path.exists(mypath):
                onlyfiles = [
                    f for f in os.listdir(mypath)
                    if os.path.isfile(os.path.join(mypath, f))
                ]

                for f in onlyfiles:
                    os.remove(mypath + '/' + f)

            file = http.request('GET', ('http://187.6.249.156:8480/sapl/'
                                        'sapl_documentos/parlamentar/fotos/'
                                        '%s_foto_parlamentar') % (p.pk, ))

            try:
                data = file.data.decode('utf-8')
            except:
                img_temp = NamedTemporaryFile(delete=True)
                img_temp.write(file.data)
                img_temp.flush()
                p.fotografia.save("image.jpg", File(img_temp), save=True)

        return TemplateView.get(self, request, *args, **kwargs)