示例#1
0
def fixmedia_page(request):
    '''Página para gerenciar imagens órfãs e duplicadas.'''
    deleted, not_deleted, paths = [], [], []
    if request.method == 'POST':
        try:
            photo_id = request.POST['photo']
            media = Image.objects.get(id=photo_id)
        except:
            video_id = request.POST['video']
            media = Video.objects.get(id=video_id)
        try:
            paths = compile_paths(media)
            for path in paths:
                try:
                    os.remove(path)
                    deleted.append(path)
                except:
                    not_deleted.append(path)
            try:
                media.delete()
            except:
                print 'Não rolou apagar do banco de dados?'
        except:
            print 'Algo deu errado para ler os caminhos.'
        # Insere no log?
        for path in paths:
            logger.debug('Supostamente removido: %s', path)
    # Pega todas as fotos.
    photos = Image.objects.all()
    orphaned_photos, duplicated_photos = get_orphans(photos)
    # Pega todos os vídeos.
    videos = Video.objects.all()
    orphaned_videos, duplicated_videos = get_orphans(videos)

    # Cria lista de órfãs e dic de duplicadas.
    orphaned = orphaned_photos
    duplicates = duplicated_photos
    # Adiciona vídeos à lista.
    orphaned.extend(orphaned_videos)
    duplicates.extend(duplicated_videos)

    variables = RequestContext(
        request, {
            'orphaned': orphaned,
            'duplicates': duplicates,
            'paths': paths,
            'deleted': deleted,
            'not_deleted': not_deleted,
        })
    return render_to_response('fixmedia.html', variables)
示例#2
0
def fixmedia_page(request):
    '''Página para gerenciar imagens órfãs e duplicadas.'''
    deleted, not_deleted, paths = [], [], []
    if request.method == 'POST':
        try:
            photo_id = request.POST['photo']
            media = Image.objects.get(id=photo_id)
        except:
            video_id = request.POST['video']
            media = Video.objects.get(id=video_id)
        try:
            paths = compile_paths(media)
            for path in paths:
                try:
                    os.remove(path)
                    deleted.append(path)
                except:
                    not_deleted.append(path)
            try:
                media.delete()
            except:
                print 'Não rolou apagar do banco de dados?'
        except:
            print 'Algo deu errado para ler os caminhos.'
        # Insere no log?
        for path in paths:
            logger.debug('Supostamente removido: %s', path)
    # Pega todas as fotos.
    photos = Image.objects.all()
    orphaned_photos, duplicated_photos = get_orphans(photos)
    # Pega todos os vídeos.
    videos = Video.objects.all()
    orphaned_videos, duplicated_videos = get_orphans(videos)

    # Cria lista de órfãs e dic de duplicadas.
    orphaned = orphaned_photos
    duplicates = duplicated_photos
    # Adiciona vídeos à lista.
    orphaned.extend(orphaned_videos)
    duplicates.extend(duplicated_videos)

    variables = RequestContext(request, {
        'orphaned': orphaned,
        'duplicates': duplicates,
        'paths': paths,
        'deleted': deleted,
        'not_deleted': not_deleted,
        })
    return render_to_response('fixmedia.html', variables)
示例#3
0
 def handle_lost(self):
     '''Lida com arquivos perdidos.'''
     if self.lost:
         logger.info('%s arquivos perdidos', len(self.lost))
         for k, v in self.lost.iteritems():
             logger.debug('Perdidos: %s -> %s', k, v)
             name = os.path.basename(k)
             if name.endswith('txt'):
                 logger.debug('Apagando arquivo txt: %s', name)
                 os.remove(k)
             try:
                 media = Image.objects.get(web_filepath__icontains=name)
             except:
                 try:
                     media = Video.objects.get(
                         webm_filepath__icontains=name)
                 except:
                     logger.debug('Nenhuma imagem com nome %s', name)
                     continue
             if media:
                 try:
                     paths = compile_paths(media)
                     confirm = raw_input('Confirma? (s ou n): ')
                     if confirm == 's':
                         try:
                             media.delete()
                             logger.debug('Entrada de %s foi apagada!',
                                          media)
                         except:
                             logger.warning(
                                 'Não rolou apagar %s do banco de dados',
                                 media)
                         for path in paths:
                             try:
                                 os.remove(path)
                                 logger.debug('%s foi apagado!', path)
                             except:
                                 logger.warning('%s não foi apagado!', path)
                 except:
                     logger.debug('Algo errado na hora de ler a imagem.')
     else:
         logger.info('Nenhum arquivo para ser deletado.')
示例#4
0
 def handle_lost(self):
     '''Lida com arquivos perdidos.'''
     if self.lost:
         logger.info('%s arquivos perdidos', len(self.lost))
         for k, v in self.lost.iteritems():
             logger.debug('Perdidos: %s -> %s', k, v)
             name = os.path.basename(k)
             if name.endswith('txt'):
                 logger.debug('Apagando arquivo txt: %s', name)
                 os.remove(k)
             try:
                 media = Image.objects.get(web_filepath__icontains=name)
             except:
                 try:
                     media = Video.objects.get(webm_filepath__icontains=name)
                 except:
                     logger.debug('Nenhuma imagem com nome %s', name)
                     continue
             if media:
                 try:
                     paths = compile_paths(media)
                     confirm = raw_input('Confirma? (s ou n): ')
                     if confirm == 's':
                         try:
                             media.delete()
                             logger.debug('Entrada de %s foi apagada!', media)
                         except:
                             logger.warning(
                                     'Não rolou apagar %s do banco de dados', 
                                     media)
                         for path in paths:
                             try:
                                 os.remove(path)
                                 logger.debug('%s foi apagado!', path)
                             except:
                                 logger.warning('%s não foi apagado!', path)
                 except:
                     logger.debug('Algo errado na hora de ler a imagem.')
     else:
         logger.info('Nenhum arquivo para ser deletado.')