1
+ import os
1
2
from datetime import datetime
2
3
3
4
import bookmarks_parser
8
9
from SQL .sqlalchemy .postgresql_ltree .model import Folder , Bookmark , Base
9
10
from slugify import slugify
10
11
11
- engine = create_engine ('postgresql://postgres:password@localhost/db' )
12
+ engine = create_engine (os . environ . get ( 'PG_DATABASE_URL' ) )
12
13
Base .metadata .bind = engine
13
14
14
15
Session = sessionmaker (bind = engine )
@@ -30,6 +31,9 @@ def save2db(child, prev_dict_folder=None, prev_db_folder=None):
30
31
else :
31
32
bookmark ['path' ] = slugify (bookmark ['title' ], separator = "_" )
32
33
folder = Folder (title = title , add_date = add_date , last_modified = last_modified , path = Ltree (bookmark ['path' ]))
34
+ if prev_db_folder :
35
+ prev_db_folder .folders .append (folder )
36
+
33
37
session .add (folder )
34
38
session .commit ()
35
39
if bookmark ['children' ]:
@@ -49,19 +53,32 @@ def save2db(child, prev_dict_folder=None, prev_db_folder=None):
49
53
bookmarks = bookmarks_parser .parse ("/home/andriy/PycharmProjects/bookmarks2db/chrome_bookmarks.html" )
50
54
save2db (bookmarks )
51
55
52
- # move folder with all nested bookmarks and folders
53
- first_level_folder = session .query (Folder ).filter (Folder .title == 'First level bookmark bar folder ' ).one ()
54
- index = first_level_folder .path .index (first_level_folder .path [- 1 ])
55
- move_to_folder_on_other = session .query (Folder ).filter (Folder .title == 'folder on other ' ).one ()
56
+ # move folder with all nested bookmarks and folders to other folder aster certain position
57
+ folder_on_other = session .query (Folder ).filter (Folder .title == 'folder on other ' ).one ()
58
+ index = folder_on_other .path .index (folder_on_other .path [- 1 ])
59
+ move_to_first_level_folder = session .query (Folder ).filter (Folder .title == 'First level bookmark bar folder ' ).one ()
56
60
57
- first_level_folders = session .query (Folder ).filter (Folder .path .descendant_of (first_level_folder .path )).all ()
61
+ first_level_folders = session .query (Folder ).filter (Folder .path .descendant_of (folder_on_other .path )).all ()
58
62
for folder in first_level_folders :
59
63
path = folder .path [index :]
60
- folder .path = move_to_folder_on_other .path + path
64
+ folder .path = move_to_first_level_folder .path + path
61
65
session .add (folder )
66
+
67
+ first_level_parent = session .query (Folder ).filter (Folder .id == move_to_first_level_folder .parent_id ).one ()
68
+ first_level_parent .folders .insert (move_to_first_level_folder .position + 1 , folder_on_other )
62
69
session .commit ()
63
70
64
- # # remove folder with all nested bookmarks and folders
71
+ # move bookmark to other folder and certain position
72
+ def move_bookmark_before (bookmark_title , folder_title , after_bookmark_title ):
73
+ bookmark = session .query (Bookmark ).filter (Bookmark .title == bookmark_title ).one ()
74
+ folder = session .query (Folder ).filter (Folder .title == folder_title ).one ()
75
+ after_bookmark = session .query (Bookmark ).filter (Bookmark .title == after_bookmark_title ).one ()
76
+ folder .bookmarks .insert (after_bookmark .position , bookmark )
77
+ session .commit ()
78
+
79
+ move_bookmark_before ('reddit: the front page of the internet' , 'Second level bookmark bar folder' , 'Google Перекладач' )
80
+
81
+ # remove folder with all nested bookmarks and folders
65
82
first_level_folder = session .query (Folder ).filter (Folder .title == 'First level bookmark bar folder' ).one ()
66
83
first_level_folders = session .query (Folder ).filter (Folder .path .descendant_of (first_level_folder .path )).all ()
67
84
for folder in first_level_folders :
0 commit comments