def __init__(self, data: sqlite3.Row): self._logger = logging.getLogger('ProjectAlice') self._name = data['name'] self._parent = data['parent'] self._state = data['state'] if 'state' in data.keys() else 0 self._x = data['posx'] if 'posx' in data.keys() else 0 self._y = data['posy'] if 'posy' in data.keys() else 0 self._size = data['size'] if 'size' in data.keys() else self.SIZE options = data['options'] if 'options' in data.keys() else self.OPTIONS if options: self._options = json.loads(options) else: self._options = self.OPTIONS self._zindex = data['zindex'] if 'zindex' in data.keys() else 9999
class PokeapiResource: _namecol = None _suffix = None def __init__(self, cursor: Cursor, row: tuple): self._row = Row(cursor, row) self._connection: PokeApiConnection = cursor.connection self.id = self._row['id'] self._name: Optional[str] if 'name' in self._row: self._name = self._row['name'] else: self._name = None @property def name(self) -> Optional[str]: return self._name @name.setter def name(self, value: Optional[str]): self._name = value def __eq__(self, other): return isinstance(other, self.__class__) and other.id == self.id def __hash__(self): return hash((self.__class__, self.id)) def __repr__(self): attrs = ', '.join(map('{0}={1!r}'.format, self._row.keys(), self._row)) return '<{0.__class__.__name__} {1}>'.format(self, attrs) def get_submodel(self, model: 'ModelType', field: str) -> Optional['Model']: return self._connection.get_model(model, self._row[field])
def dict_from_row(row: sqlite3.Row) -> dict: """Convert the sqlite.Row result to a dictionary :type row: sqlite3.Row :return: """ if not row: return {} return dict(zip(row.keys(), row))
def __init__(self, data: sqlite3.Row): super().__init__() self._name = data['name'] self._parent = data['parent'] # sqlite3.Row does not support .get like dicts self._state = data['state'] if 'state' in data.keys() else 0 self._x = data['posx'] if 'posx' in data.keys() else 0 self._y = data['posy'] if 'posy' in data.keys() else 0 self._size = data['size'] if 'size' in data.keys() else self.SIZE options = json.loads( data['options']) if 'options' in data.keys() else self.OPTIONS if options: self._options = {**self.OPTIONS, **options} else: self._options = self.OPTIONS self._zindex = data['zindex'] if 'zindex' in data.keys() else 9999 self._language = self.loadLanguage()
def row_to_dataclass(row: Row, dc: Type[T], overwrite_fields: Optional[Dict[str, Any]] = None) -> T: overwrite_fields = overwrite_fields or {} row_args = {} for dc_field in fields(dc): if dc_field.name in overwrite_fields: row_args[dc_field.name] = overwrite_fields[dc_field.name] else: row_args[dc_field.name] = (row[dc_field.name] if dc_field.name in row.keys() else None) return dc(**row_args)
def key_from_row(row: sqlite3.Row, secret_phrase: Optional[str] = None, get_priv: bool = False) -> KeyEntry: ''' Does what it says on the tin ''' res = cast(KeyEntry, dict((k, row[k]) for k in row.keys())) if get_priv and secret_phrase: privkey = crypto.decode_aes(row['privkey'], secret_phrase) res['privkey'] = privkey else: res['privkey'] = b'' return res
def update_by_record(self, rec: sqlite3.Row): for k in rec.keys(): try: x = getattr(self, k) if isinstance(x, QtWidgets.QComboBox): if x.isEditable(): x.setEditText(rec[k]) else: x.setCurrentText(rec[k]) elif isinstance(x, QtWidgets.QLineEdit): x.setText(str(rec[k])) elif isinstance(x, QtWidgets.QDateEdit): year, month, day = map(int, rec[k].split('-')) date = QtCore.QDate(year, month, day) x.setDate(date) except Exception as e: if k not in ('ID', 'old_ID', 'page', 'add_list_ID'): print(e)
def dictFromRow(row: sqlite3.Row) -> dict: return dict(zip(row.keys(), row))
def __init__(self, data: sqlite3.Row): super().__init__() self._name = data['name'] self._parent = data['parent'] self._skillInstance = None # sqlite3.Row does not support .get like dicts # Many checks here because of NOT NULL DB constraints updateWidget = False if 'state' in data.keys() and data['state']: self._state = int(data['state']) else: self._state = 0 updateWidget = True if 'posx' in data.keys() and data['posx']: self._x = data['posx'] else: self._x = 10 updateWidget = True if 'posy' in data.keys() and data['posy']: self._y = data['posy'] else: self._y = 10 updateWidget = True if 'height' in data.keys() and data['height']: self._height = data['height'] else: self._height = 0 updateWidget = True if 'width' in data.keys() and data['width']: self._width = data['width'] else: self._width = 0 updateWidget = True self._size = self.DEFAULT_SIZE.value self._options = self.DEFAULT_OPTIONS if 'options' in data.keys(): self._options.update(json.loads(data['options'])) self._custStyle = self.CUSTOM_STYLE.copy() if 'custStyle' in data.keys() and data['custStyle']: self._custStyle.update(json.loads(data['custStyle'])) else: updateWidget = True if 'zindex' in data.keys() and data['zindex'] is not None: self._zindex = data['zindex'] else: self._zindex = 999 updateWidget = True if updateWidget: self.saveToDB() self._language = self.loadLanguage()
def header_from_row(row: sqlite3.Row) -> Header: ''' Does what it says on the tin ''' return cast(Header, dict((k, row[k]) for k in row.keys()))
def zipper(row: sqlite3.Row): return dict(zip(row.keys(), row))
def from_sqlite(self, row: sqlite3.Row, sqlite_field_mapping=None) -> None: for sql_key in row.keys(): key = sqlite_field_mapping[sql_key]\ if sqlite_field_mapping is not None and sql_key in sqlite_field_mapping\ else sql_key self[key] = row[sql_key]
def dict_from_row(row: sqlite3.Row) -> dict: """Unpacks an sqlite3.Row object into a dictionary.""" if row is None: return None else: return dict(zip(row.keys(), row))