mirror of https://gitlab.com/bashrc2/epicyon
				
				
				
			Less indentation
							parent
							
								
									db95bcb2af
								
							
						
					
					
						commit
						9d06389788
					
				
							
								
								
									
										166
									
								
								bookmarks.py
								
								
								
								
							
							
						
						
									
										166
									
								
								bookmarks.py
								
								
								
								
							| 
						 | 
				
			
			@ -164,95 +164,97 @@ def update_bookmarks_collection(recent_posts_cache: {},
 | 
			
		|||
    """Updates the bookmarks collection within a post
 | 
			
		||||
    """
 | 
			
		||||
    post_json_object = load_json(post_filename)
 | 
			
		||||
    if post_json_object:
 | 
			
		||||
        # remove any cached version of this post so that the
 | 
			
		||||
        # bookmark icon is changed
 | 
			
		||||
        nickname = get_nickname_from_actor(actor)
 | 
			
		||||
        if not nickname:
 | 
			
		||||
            return
 | 
			
		||||
        cached_post_filename = \
 | 
			
		||||
            get_cached_post_filename(base_dir, nickname,
 | 
			
		||||
                                     domain, post_json_object)
 | 
			
		||||
        if cached_post_filename:
 | 
			
		||||
            if os.path.isfile(cached_post_filename):
 | 
			
		||||
                try:
 | 
			
		||||
                    os.remove(cached_post_filename)
 | 
			
		||||
                except OSError:
 | 
			
		||||
                    if debug:
 | 
			
		||||
                        print('EX: update_bookmarks_collection ' +
 | 
			
		||||
                              'unable to delete cached post ' +
 | 
			
		||||
                              str(cached_post_filename))
 | 
			
		||||
        remove_post_from_cache(post_json_object, recent_posts_cache)
 | 
			
		||||
    if not post_json_object:
 | 
			
		||||
        return
 | 
			
		||||
 | 
			
		||||
        if not post_json_object.get('object'):
 | 
			
		||||
            if debug:
 | 
			
		||||
                print('DEBUG: no object in bookmarked post ' +
 | 
			
		||||
                      str(post_json_object))
 | 
			
		||||
            return
 | 
			
		||||
        if not object_url.endswith('/bookmarks'):
 | 
			
		||||
            object_url = object_url + '/bookmarks'
 | 
			
		||||
        # does this post have bookmarks on it from differenent actors?
 | 
			
		||||
        if not post_json_object['object'].get('bookmarks'):
 | 
			
		||||
            if debug:
 | 
			
		||||
                print('DEBUG: Adding initial bookmarks to ' + object_url)
 | 
			
		||||
            bookmarks_json = {
 | 
			
		||||
                "@context": "https://www.w3.org/ns/activitystreams",
 | 
			
		||||
                'id': object_url,
 | 
			
		||||
                'type': 'Collection',
 | 
			
		||||
                "totalItems": 1,
 | 
			
		||||
                'items': [{
 | 
			
		||||
                    'type': 'Bookmark',
 | 
			
		||||
                    'actor': actor
 | 
			
		||||
                }]
 | 
			
		||||
            }
 | 
			
		||||
            post_json_object['object']['bookmarks'] = bookmarks_json
 | 
			
		||||
        else:
 | 
			
		||||
            if not post_json_object['object']['bookmarks'].get('items'):
 | 
			
		||||
                post_json_object['object']['bookmarks']['items'] = []
 | 
			
		||||
            bm_items = post_json_object['object']['bookmarks']['items']
 | 
			
		||||
            for bookmark_item in bm_items:
 | 
			
		||||
                if bookmark_item.get('actor'):
 | 
			
		||||
                    if bookmark_item['actor'] == actor:
 | 
			
		||||
                        return
 | 
			
		||||
            new_bookmark = {
 | 
			
		||||
    # remove any cached version of this post so that the
 | 
			
		||||
    # bookmark icon is changed
 | 
			
		||||
    nickname = get_nickname_from_actor(actor)
 | 
			
		||||
    if not nickname:
 | 
			
		||||
        return
 | 
			
		||||
    cached_post_filename = \
 | 
			
		||||
        get_cached_post_filename(base_dir, nickname,
 | 
			
		||||
                                 domain, post_json_object)
 | 
			
		||||
    if cached_post_filename:
 | 
			
		||||
        if os.path.isfile(cached_post_filename):
 | 
			
		||||
            try:
 | 
			
		||||
                os.remove(cached_post_filename)
 | 
			
		||||
            except OSError:
 | 
			
		||||
                if debug:
 | 
			
		||||
                    print('EX: update_bookmarks_collection ' +
 | 
			
		||||
                          'unable to delete cached post ' +
 | 
			
		||||
                          str(cached_post_filename))
 | 
			
		||||
    remove_post_from_cache(post_json_object, recent_posts_cache)
 | 
			
		||||
 | 
			
		||||
    if not post_json_object.get('object'):
 | 
			
		||||
        if debug:
 | 
			
		||||
            print('DEBUG: no object in bookmarked post ' +
 | 
			
		||||
                  str(post_json_object))
 | 
			
		||||
        return
 | 
			
		||||
    if not object_url.endswith('/bookmarks'):
 | 
			
		||||
        object_url = object_url + '/bookmarks'
 | 
			
		||||
    # does this post have bookmarks on it from differenent actors?
 | 
			
		||||
    if not post_json_object['object'].get('bookmarks'):
 | 
			
		||||
        if debug:
 | 
			
		||||
            print('DEBUG: Adding initial bookmarks to ' + object_url)
 | 
			
		||||
        bookmarks_json = {
 | 
			
		||||
            "@context": "https://www.w3.org/ns/activitystreams",
 | 
			
		||||
            'id': object_url,
 | 
			
		||||
            'type': 'Collection',
 | 
			
		||||
            "totalItems": 1,
 | 
			
		||||
            'items': [{
 | 
			
		||||
                'type': 'Bookmark',
 | 
			
		||||
                'actor': actor
 | 
			
		||||
            }
 | 
			
		||||
            nbook = new_bookmark
 | 
			
		||||
            bm_it = len(post_json_object['object']['bookmarks']['items'])
 | 
			
		||||
            post_json_object['object']['bookmarks']['items'].append(nbook)
 | 
			
		||||
            post_json_object['object']['bookmarks']['totalItems'] = bm_it
 | 
			
		||||
            }]
 | 
			
		||||
        }
 | 
			
		||||
        post_json_object['object']['bookmarks'] = bookmarks_json
 | 
			
		||||
    else:
 | 
			
		||||
        if not post_json_object['object']['bookmarks'].get('items'):
 | 
			
		||||
            post_json_object['object']['bookmarks']['items'] = []
 | 
			
		||||
        bm_items = post_json_object['object']['bookmarks']['items']
 | 
			
		||||
        for bookmark_item in bm_items:
 | 
			
		||||
            if bookmark_item.get('actor'):
 | 
			
		||||
                if bookmark_item['actor'] == actor:
 | 
			
		||||
                    return
 | 
			
		||||
        new_bookmark = {
 | 
			
		||||
            'type': 'Bookmark',
 | 
			
		||||
            'actor': actor
 | 
			
		||||
        }
 | 
			
		||||
        nbook = new_bookmark
 | 
			
		||||
        bm_it = len(post_json_object['object']['bookmarks']['items'])
 | 
			
		||||
        post_json_object['object']['bookmarks']['items'].append(nbook)
 | 
			
		||||
        post_json_object['object']['bookmarks']['totalItems'] = bm_it
 | 
			
		||||
 | 
			
		||||
        if debug:
 | 
			
		||||
            print('DEBUG: saving post with bookmarks added')
 | 
			
		||||
            pprint(post_json_object)
 | 
			
		||||
    if debug:
 | 
			
		||||
        print('DEBUG: saving post with bookmarks added')
 | 
			
		||||
        pprint(post_json_object)
 | 
			
		||||
 | 
			
		||||
        save_json(post_json_object, post_filename)
 | 
			
		||||
    save_json(post_json_object, post_filename)
 | 
			
		||||
 | 
			
		||||
        # prepend to the index
 | 
			
		||||
        bookmarks_index_filename = \
 | 
			
		||||
            acct_dir(base_dir, nickname, domain) + '/bookmarks.index'
 | 
			
		||||
        bookmark_index = post_filename.split('/')[-1]
 | 
			
		||||
        if os.path.isfile(bookmarks_index_filename):
 | 
			
		||||
            if bookmark_index not in open(bookmarks_index_filename).read():
 | 
			
		||||
                try:
 | 
			
		||||
                    with open(bookmarks_index_filename, 'r+') as bmi_file:
 | 
			
		||||
                        content = bmi_file.read()
 | 
			
		||||
                        if bookmark_index + '\n' not in content:
 | 
			
		||||
                            bmi_file.seek(0, 0)
 | 
			
		||||
                            bmi_file.write(bookmark_index + '\n' + content)
 | 
			
		||||
                            if debug:
 | 
			
		||||
                                print('DEBUG: bookmark added to index')
 | 
			
		||||
                except OSError as ex:
 | 
			
		||||
                    print('WARN: Failed to write entry to bookmarks index ' +
 | 
			
		||||
                          bookmarks_index_filename + ' ' + str(ex))
 | 
			
		||||
        else:
 | 
			
		||||
    # prepend to the index
 | 
			
		||||
    bookmarks_index_filename = \
 | 
			
		||||
        acct_dir(base_dir, nickname, domain) + '/bookmarks.index'
 | 
			
		||||
    bookmark_index = post_filename.split('/')[-1]
 | 
			
		||||
    if os.path.isfile(bookmarks_index_filename):
 | 
			
		||||
        if bookmark_index not in open(bookmarks_index_filename).read():
 | 
			
		||||
            try:
 | 
			
		||||
                with open(bookmarks_index_filename, 'w+') as bm_file:
 | 
			
		||||
                    bm_file.write(bookmark_index + '\n')
 | 
			
		||||
            except OSError:
 | 
			
		||||
                print('EX: unable to write bookmarks index ' +
 | 
			
		||||
                      bookmarks_index_filename)
 | 
			
		||||
                with open(bookmarks_index_filename, 'r+') as bmi_file:
 | 
			
		||||
                    content = bmi_file.read()
 | 
			
		||||
                    if bookmark_index + '\n' not in content:
 | 
			
		||||
                        bmi_file.seek(0, 0)
 | 
			
		||||
                        bmi_file.write(bookmark_index + '\n' + content)
 | 
			
		||||
                        if debug:
 | 
			
		||||
                            print('DEBUG: bookmark added to index')
 | 
			
		||||
            except OSError as ex:
 | 
			
		||||
                print('WARN: Failed to write entry to bookmarks index ' +
 | 
			
		||||
                      bookmarks_index_filename + ' ' + str(ex))
 | 
			
		||||
    else:
 | 
			
		||||
        try:
 | 
			
		||||
            with open(bookmarks_index_filename, 'w+') as bm_file:
 | 
			
		||||
                bm_file.write(bookmark_index + '\n')
 | 
			
		||||
        except OSError:
 | 
			
		||||
            print('EX: unable to write bookmarks index ' +
 | 
			
		||||
                  bookmarks_index_filename)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def bookmark_post(recent_posts_cache: {},
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue