bluenevus commited on
Commit
dca4179
·
verified ·
1 Parent(s): 8f18b64

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -30
app.py CHANGED
@@ -14,26 +14,36 @@ def get_db_connection():
14
  return conn
15
 
16
  def init_db():
17
- conn = get_db_connection()
18
- c = conn.cursor()
19
- c.execute('''CREATE TABLE IF NOT EXISTS links
20
- (id TEXT PRIMARY KEY, name TEXT, url TEXT)''')
21
- conn.commit()
22
- conn.close()
 
 
 
 
 
23
 
24
  init_db()
25
 
26
  def get_links():
27
- conn = get_db_connection()
28
- c = conn.cursor()
29
- c.execute("SELECT * FROM links")
30
- links = [dict(row) for row in c.fetchall()]
31
- conn.close()
32
- print(f"Retrieved links: {links}") # Debug print
33
- return links
 
 
 
 
 
34
 
35
  def generate_url_list(links):
36
- return [
37
  dbc.ListGroupItem([
38
  dbc.Button(
39
  link['name'],
@@ -50,6 +60,8 @@ def generate_url_list(links):
50
  ], className="d-flex justify-content-between align-items-center")
51
  for link in links
52
  ]
 
 
53
 
54
  app.layout = dbc.Container([
55
  dcc.Store(id='add-url-status', data=''),
@@ -68,7 +80,7 @@ app.layout = dbc.Container([
68
  dbc.Col([
69
  html.H2("My URL App", className="mt-3 mb-4"),
70
  dbc.Button("Add URL", id="open-modal-button", color="primary", className="mb-3"),
71
- html.Div(id='url-list'), # We'll populate this with a callback
72
  ], width=3, className="bg-light p-3"),
73
  dbc.Col([
74
  html.Iframe(
@@ -97,6 +109,7 @@ def toggle_modal(n1, n2, is_open):
97
  Input('url-list', 'id')
98
  )
99
  def initialize_url_list(id):
 
100
  links = get_links()
101
  return generate_url_list(links)
102
 
@@ -117,6 +130,7 @@ def update_url_list(add_clicks, status, delete_clicks, new_name, new_link):
117
  raise dash.exceptions.PreventUpdate
118
 
119
  triggered_id = ctx.triggered[0]['prop_id'].split('.')[0]
 
120
 
121
  if triggered_id == 'add-url-button' and new_name and new_link:
122
  try:
@@ -125,22 +139,31 @@ def update_url_list(add_clicks, status, delete_clicks, new_name, new_link):
125
  new_id = str(uuid.uuid4())
126
  c.execute("INSERT INTO links VALUES (?, ?, ?)", (new_id, new_name, new_link))
127
  conn.commit()
128
- conn.close()
129
  feedback = html.Div("URL added successfully!", style={'color': 'green'})
130
  status = 'added'
131
  except Exception as e:
132
  print(f"Error adding URL: {e}")
133
  feedback = html.Div("Error adding URL. Please try again.", style={'color': 'red'})
134
  status = 'error'
 
 
135
  elif 'delete-button' in triggered_id:
136
  delete_id = eval(triggered_id)['index']
137
- conn = get_db_connection()
138
- c = conn.cursor()
139
- c.execute("DELETE FROM links WHERE id = ?", (delete_id,))
140
- conn.commit()
141
- conn.close()
142
- feedback = html.Div("URL deleted successfully!", style={'color': 'green'})
143
- status = 'deleted'
 
 
 
 
 
 
 
144
  else:
145
  feedback = None
146
  status = ''
@@ -170,13 +193,18 @@ def update_iframe(n_clicks):
170
  return dash.no_update
171
  button_id = ctx.triggered[0]['prop_id'].split('.')[0]
172
  clicked_id = eval(button_id)['index']
173
- conn = get_db_connection()
174
- c = conn.cursor()
175
- c.execute("SELECT url FROM links WHERE id = ?", (clicked_id,))
176
- result = c.fetchone()
177
- conn.close()
178
- if result:
179
- return result['url']
 
 
 
 
 
180
  return dash.no_update
181
 
182
  if __name__ == '__main__':
 
14
  return conn
15
 
16
  def init_db():
17
+ try:
18
+ conn = get_db_connection()
19
+ c = conn.cursor()
20
+ c.execute('''CREATE TABLE IF NOT EXISTS links
21
+ (id TEXT PRIMARY KEY, name TEXT, url TEXT)''')
22
+ conn.commit()
23
+ print("Database initialized successfully")
24
+ except Exception as e:
25
+ print(f"Error initializing database: {e}")
26
+ finally:
27
+ conn.close()
28
 
29
  init_db()
30
 
31
  def get_links():
32
+ try:
33
+ conn = get_db_connection()
34
+ c = conn.cursor()
35
+ c.execute("SELECT * FROM links")
36
+ links = [dict(row) for row in c.fetchall()]
37
+ print(f"Retrieved links: {links}") # Debug print
38
+ return links
39
+ except Exception as e:
40
+ print(f"Error retrieving links: {e}")
41
+ return []
42
+ finally:
43
+ conn.close()
44
 
45
  def generate_url_list(links):
46
+ url_list = [
47
  dbc.ListGroupItem([
48
  dbc.Button(
49
  link['name'],
 
60
  ], className="d-flex justify-content-between align-items-center")
61
  for link in links
62
  ]
63
+ print(f"Generated URL list: {url_list}") # Debug print
64
+ return url_list
65
 
66
  app.layout = dbc.Container([
67
  dcc.Store(id='add-url-status', data=''),
 
80
  dbc.Col([
81
  html.H2("My URL App", className="mt-3 mb-4"),
82
  dbc.Button("Add URL", id="open-modal-button", color="primary", className="mb-3"),
83
+ html.Div(id='url-list'),
84
  ], width=3, className="bg-light p-3"),
85
  dbc.Col([
86
  html.Iframe(
 
109
  Input('url-list', 'id')
110
  )
111
  def initialize_url_list(id):
112
+ print("Initializing URL list") # Debug print
113
  links = get_links()
114
  return generate_url_list(links)
115
 
 
130
  raise dash.exceptions.PreventUpdate
131
 
132
  triggered_id = ctx.triggered[0]['prop_id'].split('.')[0]
133
+ print(f"Triggered by: {triggered_id}") # Debug print
134
 
135
  if triggered_id == 'add-url-button' and new_name and new_link:
136
  try:
 
139
  new_id = str(uuid.uuid4())
140
  c.execute("INSERT INTO links VALUES (?, ?, ?)", (new_id, new_name, new_link))
141
  conn.commit()
142
+ print(f"Added new URL: {new_name}, {new_link}") # Debug print
143
  feedback = html.Div("URL added successfully!", style={'color': 'green'})
144
  status = 'added'
145
  except Exception as e:
146
  print(f"Error adding URL: {e}")
147
  feedback = html.Div("Error adding URL. Please try again.", style={'color': 'red'})
148
  status = 'error'
149
+ finally:
150
+ conn.close()
151
  elif 'delete-button' in triggered_id:
152
  delete_id = eval(triggered_id)['index']
153
+ try:
154
+ conn = get_db_connection()
155
+ c = conn.cursor()
156
+ c.execute("DELETE FROM links WHERE id = ?", (delete_id,))
157
+ conn.commit()
158
+ print(f"Deleted URL with id: {delete_id}") # Debug print
159
+ feedback = html.Div("URL deleted successfully!", style={'color': 'green'})
160
+ status = 'deleted'
161
+ except Exception as e:
162
+ print(f"Error deleting URL: {e}")
163
+ feedback = html.Div("Error deleting URL. Please try again.", style={'color': 'red'})
164
+ status = 'error'
165
+ finally:
166
+ conn.close()
167
  else:
168
  feedback = None
169
  status = ''
 
193
  return dash.no_update
194
  button_id = ctx.triggered[0]['prop_id'].split('.')[0]
195
  clicked_id = eval(button_id)['index']
196
+ try:
197
+ conn = get_db_connection()
198
+ c = conn.cursor()
199
+ c.execute("SELECT url FROM links WHERE id = ?", (clicked_id,))
200
+ result = c.fetchone()
201
+ if result:
202
+ print(f"Loading URL: {result['url']}") # Debug print
203
+ return result['url']
204
+ except Exception as e:
205
+ print(f"Error loading URL: {e}")
206
+ finally:
207
+ conn.close()
208
  return dash.no_update
209
 
210
  if __name__ == '__main__':