Exception when adding track with note and it being moved #161

Closed
opened 2023-01-19 09:03:11 +00:00 by kae · 1 comment
Owner
File "/home/kae/mm/app/musicmuster.py", line 1601, in add_selected_and_close
    1598  def add_selected_and_close(self) -> None:
    1599      """Handle Add and Close button"""
    1600  
--> 1601      self.add_selected()
    1602      self.accept()
    ..................................................
     self = <__main__.DbDialog object at 0x7fa35435e940>
     self.add_selected = <method 'DbDialog.add_selected' of <__main__.DbDialog object
                           at 0x7fa35435e940> musicmuster.py:1585>
    ..................................................

File "/home/kae/mm/app/musicmuster.py", line 1596, in add_selected
    1585  def add_selected(self) -> None:
(...)
    1592      track = None
    1593      item = self.ui.matchList.currentItem()
    1594      if item:
    1595          track = item.data(Qt.UserRole)
--> 1596      self.add_track(track)
    ..................................................
     self = <__main__.DbDialog object at 0x7fa35435e940>
     track = <Track(id=6714, title=So Damn Dangerous, artist=Dea Matrona,
               path=/home/kae/music/Singles/So Damn Dangerous - Dea Matron
              a.mp3>
     item = <PyQt5.QtWidgets.QListWidgetItem object at 0x7fa354378c10>
     Qt.UserRole = 256
     self.add_track = <method 'DbDialog.add_track' of <__main__.DbDialog object at
                        0x7fa35435e940> musicmuster.py:1604>
    ..................................................

File "/home/kae/mm/app/musicmuster.py", line 1613, in add_track
    1604  def add_track(self, track: Tracks) -> None:
(...)
    1609          self.accept()
    1610          return
    1611  
    1612      if track:
--> 1613          self.parent().visible_playlist_tab().insert_track(
    1614              self.session, track, note=self.ui.txtNote.text())
    ..................................................
     self = <__main__.DbDialog object at 0x7fa35435e940>
     track = <Track(id=6714, title=So Damn Dangerous, artist=Dea Matrona,
               path=/home/kae/music/Singles/So Damn Dangerous - Dea Matron
              a.mp3>
    ..................................................

File "/home/kae/mm/app/playlists.py", line 699, in insert_track
    671  def insert_track(self, session: scoped_session, track: Tracks,
    672                   note: Optional[str] = None, repaint: bool = True) -> None:
(...)
    695      if existing_plr and ask_yes_no("Duplicate row",
    696                                     "Track already in playlist. "
    697                                     "Move to new location?"):
    698          # Yes it is and we shoudl reuse it
--> 699          return self._move_row(session, existing_plr, row_number)
    700  
    ..................................................
     self = <PlaylistTab(id=79>
     track = <Track(id=6714, title=So Damn Dangerous, artist=Dea Matrona,
               path=/home/kae/music/Singles/So Damn Dangerous - Dea Matron
              a.mp3>
     note = 'Story: Dea Matrona'
     repaint = True
     existing_plr = <PlaylistRow(id=562974, playlist_id=79, track_id=6714, note=
                     None, row_number=54>
     self._move_row = <method 'PlaylistTab._move_row' of <PlaylistTab(id=79> playl
                       ists.py:1529>
     row_number = 54
    ..................................................

File "/home/kae/mm/app/playlists.py", line 1540, in _move_row
    1529  def _move_row(self, session: scoped_session, plr: PlaylistRows,
    1530                new_row_number: int) -> None:
(...)
    1536      if plr.row_number < new_row_number:
    1537          plr.row_number = new_row_number - 1
    1538      else:
    1539          plr.row_number = new_row_number
--> 1540      self.insert_row(session, plr)
    1541      self.save_playlist(session)
    ..................................................
     self = <PlaylistTab(id=79>
     plr = <PlaylistRow(id=562974, playlist_id=79, track_id=6714, note=
            None, row_number=54>
     new_row_number = 54
     plr.row_number = 54
     self.insert_row = <method 'PlaylistTab.insert_row' of <PlaylistTab(id=79> play
                        lists.py:582>
     self.save_playlist = <method 'PlaylistTab.save_playlist' of <PlaylistTab(id=79> p
                           laylists.py:799>
    ..................................................

File "/home/kae/mm/app/playlists.py", line 669, in insert_row
    582  def insert_row(self, session: scoped_session, plr: PlaylistRows,
    583                 repaint: bool = True) -> None:
(...)
    665          # Save (no) track_id
    666          userdata_item.setData(self.ROW_TRACK_ID, 0)
    667  
    668      if repaint:
--> 669          self.update_display(session)
    ..................................................
     self = <PlaylistTab(id=79>
     plr = <PlaylistRow(id=562974, playlist_id=79, track_id=6714, note=
            None, row_number=54>
     repaint = True
     self.ROW_TRACK_ID = 257
     self.update_display = <method 'PlaylistTab.update_display' of <PlaylistTab(id=79> 
                            playlists.py:965>
    ..................................................

File "/home/kae/mm/app/playlists.py", line 999, in update_display
    965  def update_display(self, session: scoped_session) -> None:
(...)
    995  
    996          # Extract note text from database to ignore section timings
    997          playlist_row = session.get(PlaylistRows,
    998                                     self._get_playlistrow_id(row))
--> 999          note_text = playlist_row.note
    1000          # Get note colour
    ..................................................
     self = <PlaylistTab(id=79>
     playlist_row = None
     session.get = <method 'get' of <sqlalchemy.orm.scoping.scoped_session obje
                    ct at 0x7fa3546950a0> <string>:1>
     self._get_playlistrow_id = <method 'PlaylistTab._get_playlistrow_id' of <PlaylistTab(id
                                 =79> playlists.py:1351>
     row = 50
     note_text = ''
     playlist_row.note = # AttributeError
          playlist_row = None
    ..................................................

---- (full traceback above) ----
File "/home/kae/mm/app/musicmuster.py", line 1601, in add_selected_and_close
    self.add_selected()
File "/home/kae/mm/app/musicmuster.py", line 1596, in add_selected
    self.add_track(track)
File "/home/kae/mm/app/musicmuster.py", line 1613, in add_track
    self.parent().visible_playlist_tab().insert_track(
File "/home/kae/mm/app/playlists.py", line 699, in insert_track
    return self._move_row(session, existing_plr, row_number)
File "/home/kae/mm/app/playlists.py", line 1540, in _move_row
    self.insert_row(session, plr)
File "/home/kae/mm/app/playlists.py", line 669, in insert_row
    self.update_display(session)
File "/home/kae/mm/app/playlists.py", line 999, in update_display
    note_text = playlist_row.note

AttributeError: 'NoneType' object has no attribute 'note'
``` File "/home/kae/mm/app/musicmuster.py", line 1601, in add_selected_and_close 1598 def add_selected_and_close(self) -> None: 1599 """Handle Add and Close button""" 1600 --> 1601 self.add_selected() 1602 self.accept() .................................................. self = <__main__.DbDialog object at 0x7fa35435e940> self.add_selected = <method 'DbDialog.add_selected' of <__main__.DbDialog object at 0x7fa35435e940> musicmuster.py:1585> .................................................. File "/home/kae/mm/app/musicmuster.py", line 1596, in add_selected 1585 def add_selected(self) -> None: (...) 1592 track = None 1593 item = self.ui.matchList.currentItem() 1594 if item: 1595 track = item.data(Qt.UserRole) --> 1596 self.add_track(track) .................................................. self = <__main__.DbDialog object at 0x7fa35435e940> track = <Track(id=6714, title=So Damn Dangerous, artist=Dea Matrona, path=/home/kae/music/Singles/So Damn Dangerous - Dea Matron a.mp3> item = <PyQt5.QtWidgets.QListWidgetItem object at 0x7fa354378c10> Qt.UserRole = 256 self.add_track = <method 'DbDialog.add_track' of <__main__.DbDialog object at 0x7fa35435e940> musicmuster.py:1604> .................................................. File "/home/kae/mm/app/musicmuster.py", line 1613, in add_track 1604 def add_track(self, track: Tracks) -> None: (...) 1609 self.accept() 1610 return 1611 1612 if track: --> 1613 self.parent().visible_playlist_tab().insert_track( 1614 self.session, track, note=self.ui.txtNote.text()) .................................................. self = <__main__.DbDialog object at 0x7fa35435e940> track = <Track(id=6714, title=So Damn Dangerous, artist=Dea Matrona, path=/home/kae/music/Singles/So Damn Dangerous - Dea Matron a.mp3> .................................................. File "/home/kae/mm/app/playlists.py", line 699, in insert_track 671 def insert_track(self, session: scoped_session, track: Tracks, 672 note: Optional[str] = None, repaint: bool = True) -> None: (...) 695 if existing_plr and ask_yes_no("Duplicate row", 696 "Track already in playlist. " 697 "Move to new location?"): 698 # Yes it is and we shoudl reuse it --> 699 return self._move_row(session, existing_plr, row_number) 700 .................................................. self = <PlaylistTab(id=79> track = <Track(id=6714, title=So Damn Dangerous, artist=Dea Matrona, path=/home/kae/music/Singles/So Damn Dangerous - Dea Matron a.mp3> note = 'Story: Dea Matrona' repaint = True existing_plr = <PlaylistRow(id=562974, playlist_id=79, track_id=6714, note= None, row_number=54> self._move_row = <method 'PlaylistTab._move_row' of <PlaylistTab(id=79> playl ists.py:1529> row_number = 54 .................................................. File "/home/kae/mm/app/playlists.py", line 1540, in _move_row 1529 def _move_row(self, session: scoped_session, plr: PlaylistRows, 1530 new_row_number: int) -> None: (...) 1536 if plr.row_number < new_row_number: 1537 plr.row_number = new_row_number - 1 1538 else: 1539 plr.row_number = new_row_number --> 1540 self.insert_row(session, plr) 1541 self.save_playlist(session) .................................................. self = <PlaylistTab(id=79> plr = <PlaylistRow(id=562974, playlist_id=79, track_id=6714, note= None, row_number=54> new_row_number = 54 plr.row_number = 54 self.insert_row = <method 'PlaylistTab.insert_row' of <PlaylistTab(id=79> play lists.py:582> self.save_playlist = <method 'PlaylistTab.save_playlist' of <PlaylistTab(id=79> p laylists.py:799> .................................................. File "/home/kae/mm/app/playlists.py", line 669, in insert_row 582 def insert_row(self, session: scoped_session, plr: PlaylistRows, 583 repaint: bool = True) -> None: (...) 665 # Save (no) track_id 666 userdata_item.setData(self.ROW_TRACK_ID, 0) 667 668 if repaint: --> 669 self.update_display(session) .................................................. self = <PlaylistTab(id=79> plr = <PlaylistRow(id=562974, playlist_id=79, track_id=6714, note= None, row_number=54> repaint = True self.ROW_TRACK_ID = 257 self.update_display = <method 'PlaylistTab.update_display' of <PlaylistTab(id=79> playlists.py:965> .................................................. File "/home/kae/mm/app/playlists.py", line 999, in update_display 965 def update_display(self, session: scoped_session) -> None: (...) 995 996 # Extract note text from database to ignore section timings 997 playlist_row = session.get(PlaylistRows, 998 self._get_playlistrow_id(row)) --> 999 note_text = playlist_row.note 1000 # Get note colour .................................................. self = <PlaylistTab(id=79> playlist_row = None session.get = <method 'get' of <sqlalchemy.orm.scoping.scoped_session obje ct at 0x7fa3546950a0> <string>:1> self._get_playlistrow_id = <method 'PlaylistTab._get_playlistrow_id' of <PlaylistTab(id =79> playlists.py:1351> row = 50 note_text = '' playlist_row.note = # AttributeError playlist_row = None .................................................. ---- (full traceback above) ---- File "/home/kae/mm/app/musicmuster.py", line 1601, in add_selected_and_close self.add_selected() File "/home/kae/mm/app/musicmuster.py", line 1596, in add_selected self.add_track(track) File "/home/kae/mm/app/musicmuster.py", line 1613, in add_track self.parent().visible_playlist_tab().insert_track( File "/home/kae/mm/app/playlists.py", line 699, in insert_track return self._move_row(session, existing_plr, row_number) File "/home/kae/mm/app/playlists.py", line 1540, in _move_row self.insert_row(session, plr) File "/home/kae/mm/app/playlists.py", line 669, in insert_row self.update_display(session) File "/home/kae/mm/app/playlists.py", line 999, in update_display note_text = playlist_row.note AttributeError: 'NoneType' object has no attribute 'note' ```
kae added the
bug
label 2023-01-19 09:03:11 +00:00
Author
Owner

In playlists.py:insert_track(), this code doesn't take account of any note added:

        if existing_plr and ask_yes_no("Duplicate row",
                                       "Track already in playlist. "
                                       "Move to new location?"):
            # Yes it is and we shoudl reuse it
            return self._move_row(session, existing_plr, row_number)

In playlists.py:insert_track(), this code doesn't take account of any note added: ``` if existing_plr and ask_yes_no("Duplicate row", "Track already in playlist. " "Move to new location?"): # Yes it is and we shoudl reuse it return self._move_row(session, existing_plr, row_number) ```
kae closed this issue 2023-01-20 22:05:37 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: kae/musicmuster#161
No description provided.