def save(sibling_node_id, name_edit, url_edit, update_interval_edit, mark_as_read_checkbox, button): url = url_edit.get_edit_text() feed_type = sourceservice.detect_feed_type(url) link = sourceservice.get_link(url, feed_type) config_adapter = ConfigAdapter() db = DatabaseAdapter() sibling_node = next(db.get_node(sibling_node_id)) config_node = config_adapter.get_source(sibling_node_id) new_node_id = sourceservice.generate_node_id() parent_node_id = sibling_node['parent_id'] new_node = db.add_source(new_node_id, parent_node_id, name_edit.get_edit_text(), feed_type, url, update_interval_edit.get_edit_text()) db.close_connection() config_adapter.add_source(sibling_node_id, new_node_id, name_edit.get_edit_text(), feed_type, url, link, update_interval_edit.get_edit_text(), mark_as_read_checkbox.get_state()) state.sources = config_adapter.get_sources() main.set_focused_item() rows = db.get_source_items(state.selected_node_id, state.node_id_unreads, state.selected_filter) main.display(state.loop, rows)
def generate_node_id(): db = DatabaseAdapter() node = '' while node is not None: new_node_id = ''.join(random.choices(string.ascii_lowercase, k=7)) node = db.get_node(new_node_id).fetchone() db.close_connection() return new_node_id
def display(node_id): if node_id == state.node_id_unreads: return db = DatabaseAdapter() node = next(db.get_node(node_id)) db.close_connection() # body body_pile = urwid.Pile([ urwid.Divider(), urwid.Text('Are you sure you want to delete source "{}"?'.format( node['title']), align='center') ]) body_filler = urwid.Filler(body_pile, valign='top') body_padding = urwid.Padding(body_filler, left=1, right=1) state.body = urwid.LineBox(body_padding) # footer button_yes = urwid.Button('Yes') urwid.connect_signal(button_yes, 'click', delete, user_args=[node]) button_no = urwid.Button('No', close) footer = urwid.GridFlow([button_yes, button_no], 7, 1, 1, 'center') # layout layout = urwid.Frame(state.body, footer=footer, focus_part='footer') state.body = state.loop.widget pile = urwid.Pile([layout]) over = urwid.Overlay(pile, state.body, align='center', valign='middle', width=41, height=7) state.loop.widget = over