code: def flags(self, index):
          
          if not index.isValid():
              return Qt.NoItemFlags
  
          col = index.column()
  
          flags = Qt.ItemIsEnabled | Qt.ItemIsSelectable
  
          if col > 0 and self.editable():
              flags = Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable
  
          return flags
docs: Returns the item flags for the given index as ored value, e.x.: Qt.ItemIsUserCheckable | Qt.ItemIsEditable
  
          Args:
              index (QtCore.QModelIndex): Index to define column and row
  
          Returns:
              for column 'column': Qt.ItemIsSelectable | Qt.ItemIsEnabled
              for column 'data type': Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable