new_count = new_url_qs.count()
        if new_count:
            new_url_qs.update(status=True, message='Working document link')
    if new_count:
        msg = "Please note. Renaming %s has corrected %s broken link%s. See the Link Manager for more details" % (new_url, new_count, new_count>1 and 's' or '')
        sender.user.message_set.create(message=msg)


def handle_delete(sender, path=None, **kwargs):
    url = os.path.join(get_relative_media_url(), DIRECTORY, path, kwargs['filename'])
    url_qs = Url.objects.filter(url=url).filter(status=True)
    count = url_qs.count()
    if count:
        url_qs.update(status=False, message='Missing Document')
        msg = "Warning. Deleting %s has caused %s link%s to break. Please use the Link Manager to fix them" % (url, count, count>1 and 's' or '')
        sender.user.message_set.create(message=msg)


if FILEBROWSER_PRESENT:
    filebrowser_post_upload.connect(handle_upload)
    filebrowser_post_rename.connect(handle_rename)
    filebrowser_post_delete.connect(handle_delete)


def isdir(filename):
    '''!!!only used for filebrowser'''
    if filename.count('.'):
        return False
    else:
        return True
Beispiel #2
0
        new_count = 0
        new_url_qs = Url.objects.filter(url__startswith=new_url).filter(status=False)
        for url in new_url_qs:
            if url.check_url():
                new_count += 1
    else:
        new_url_qs = Url.objects.filter(url=new_url).filter(status=False)
        new_count = new_url_qs.count()
        if new_count:
            new_url_qs.update(status=True, message='Working document link')
    if new_count:
        msg = "Please note. Renaming %s has corrected %s broken link%s. See the Link Manager for more details" % (new_url, new_count, new_count>1 and 's' or '')
        messages.info(sender, msg)


def handle_delete(sender, path=None, **kwargs):

    url = os.path.join(get_relative_media_url(), DIRECTORY, path, kwargs['filename'])
    url_qs = Url.objects.filter(url=url).filter(status=True)
    count = url_qs.count()
    if count:
        url_qs.update(status=False, message='Missing Document')
        msg = "Warning. Deleting %s has caused %s link%s to break. Please use the Link Manager to fix them" % (url, count, count>1 and 's' or '')
        messages.info(sender, msg)


if FILEBROWSER_PRESENT:
    filebrowser_post_upload.connect(handle_upload)
    filebrowser_post_rename.connect(handle_rename)
    filebrowser_post_delete.connect(handle_delete)
#make sure sorl.thumbnail kvstore is updated after a file is changed in FileBrowser

try:
    import os.path
    from filebrowser.views import filebrowser_post_upload, filebrowser_post_rename, filebrowser_post_delete
    from sorl.thumbnail import delete
    from filebrowser.settings import DIRECTORY

    def delete_thumbnail_cache(sender, path, file, **kwargs):
        delete(file.path, delete_file=False)

    filebrowser_post_upload.connect(delete_thumbnail_cache, sender=None)

    def delete_thumbnail_cache_after_deletion(sender, path, filename, **kwargs):
        file_path = os.path.join(path, filename)
        delete(file_path, delete_file=False)
    filebrowser_post_delete.connect(delete_thumbnail_cache_after_deletion, sender=None)

    def regenerate_thumbnail_cache_after_rename(sender, path, filename, new_filename, **kwargs):
        kv_store_path = os.path.join(DIRECTORY, path, new_filename) #relative to MEDIA_ROOT
        kv_store_path_old_file = os.path.join(DIRECTORY, path, filename) #relative to MEDIA_ROOT
        delete(kv_store_path, delete_file=False)
        delete(kv_store_path_old_file, delete_file=False)
    filebrowser_post_rename.connect(regenerate_thumbnail_cache_after_rename, sender=None)

except ImportError:
    pass

def register_listeners():
    if FILEBROWSER_PRESENT:
        filebrowser_post_upload.connect(handle_upload)
        filebrowser_post_rename.connect(handle_rename)
        filebrowser_post_delete.connect(handle_delete)