Skip to content

Conversation

@flyingeek
Copy link
Contributor

Reading Pro Django I saw that a self.column exists so it's better to use it instead of recalculating it

iamahuman added a commit to iamahuman/django-bitfield that referenced this pull request Jan 16, 2021
iamahuman added a commit to iamahuman/django-bitfield that referenced this pull request Jan 16, 2021
Supercedes disqus#11.

Fixes: eea01c6 (use the db_column attribute of a model field if set https://docs.djangoproject.com/en/dev/ref/models/fields/#db-column, 2012-01-05)
iamahuman added a commit to iamahuman/django-bitfield that referenced this pull request Jan 16, 2021
Supersedes disqus#11.

In order to prevent (-1) from being masked by BitField.get_prep_value
and converted to 15 (0xf), the test code uses a direct SQL statement.
Its implementation has a few peculiarities that may be undesirable:

- It uses an Django internal API, the Field.column attribute.  Granted,
  this package already uses a lot of internal APIs, and Field.column
  is highly unlikely to change.  However, in general using less internal
  APIs is better for future compatibility.

- Using low-level API bypasses a lot of code paths that could have been
  tested.

- Neither db_table nor db_column is escaped.  In case we later
  incorporate tests involving pathological SQL object identifiers, we
  have to further use quote_name, which is not exactly public API
  either.

Instead, we use models.Value() with an explicit output_field, which
still avoids BitField.get_prep_value and inserts the value directly.

Further, directly assign to __dict__ so that the BitFieldCreator
descriptor's __set__ method is bypassed and the value is assigned
unchanged.
iamahuman added a commit to iamahuman/django-bitfield that referenced this pull request Jan 16, 2021
Supersedes disqus#11.

In order to prevent (-1) from being masked by BitField.get_prep_value
and converted to 15 (0xf), the test code uses a direct SQL statement.
Its implementation has a few peculiarities that may be undesirable:

- It uses an Django internal API, the Field.column attribute.  Granted,
  this package already uses a lot of internal APIs, and Field.column
  is highly unlikely to change.  However, in general using less internal
  APIs is better for future compatibility.

- Using low-level API misses a lot of code paths that could have been
  tested.

- Neither db_table nor db_column is escaped.  In case we later
  incorporate tests involving pathological SQL object identifiers, we
  have to further use quote_name, which is not exactly public API
  either.

Instead, we use models.Value() with an explicit output_field, which
still avoids BitField.get_prep_value and inserts the value directly.

Further, directly assign to __dict__ so that the BitFieldCreator
descriptor's __set__ method is bypassed and the value is assigned
unchanged.
iamahuman added a commit to iamahuman/django-bitfield that referenced this pull request Jan 16, 2021
Supersedes disqus#11.

In order to prevent (-1) from being masked by BitField.get_prep_value
and converted to 15 (0xf), the test code uses a direct SQL statement.
Its implementation has a few peculiarities that may be undesirable:

- It uses an Django internal API, the Field.column attribute.  Granted,
  this package already uses a lot of internal APIs, and Field.column
  is highly unlikely to change.  However, in general using less internal
  APIs is better for future compatibility.

- Using low-level API misses a lot of code paths that could have been
  tested.

- Neither db_table nor db_column is escaped.  In case we later
  incorporate tests involving pathological SQL object identifiers, we
  have to further use quote_name, which is not exactly public API
  either.

Instead, we use models.Value() with an explicit output_field, which
still avoids BitField.get_prep_value and inserts the value directly.

Further, directly assign to __dict__ so that the BitFieldCreator
descriptor's __set__ method is bypassed and the value is assigned
unchanged.
iamahuman added a commit to iamahuman/django-bitfield that referenced this pull request Jan 16, 2021
Supersedes disqus#11.

In order to prevent (-1) from being masked by BitField.get_prep_value
and converted to 15 (0xf), the test code uses a direct SQL statement.
Its implementation has a few peculiarities that may be undesirable:

- It uses an Django internal API, the Field.column attribute.  Granted,
  this package already uses a lot of internal APIs, and Field.column
  is highly unlikely to change.  However, in general using less internal
  APIs is better for future compatibility.

- Using low-level API misses a lot of code paths that could have been
  tested.

- Neither db_table nor db_column is escaped.  In case we later
  incorporate tests involving pathological SQL object identifiers, we
  have to further use quote_name, which is not exactly public API
  either.

Instead, we use models.Value() with an explicit output_field, which
still avoids BitField.get_prep_value and inserts the value directly.

Further, directly assign to __dict__ so that the BitFieldCreator
descriptor's __set__ method is bypassed and the value is assigned
unchanged.
iamahuman added a commit to iamahuman/django-bitfield that referenced this pull request Jan 16, 2021
Supersedes disqus#11.

In order to prevent (-1) from being masked by BitField.get_prep_value
and converted to 15 (0xf), the test code uses a direct SQL statement.
Its implementation has a few peculiarities that may be undesirable:

- It uses an Django internal API, the Field.column attribute.  Granted,
  this package already uses a lot of internal APIs, and Field.column
  is highly unlikely to change.  However, in general using less internal
  APIs is better for future compatibility.

- Using low-level API misses a lot of code paths that could have been
  tested.

- Neither db_table nor db_column is escaped.  In case we later
  incorporate tests involving pathological SQL object identifiers, we
  have to further use quote_name, which is not exactly public API
  either.

Instead, we use models.Value() with an explicit output_field, which
still avoids BitField.get_prep_value and inserts the value directly.

Further, directly assign to __dict__ so that the BitFieldCreator
descriptor's __set__ method is bypassed and the value is assigned
unchanged.
iamahuman added a commit to iamahuman/django-bitfield that referenced this pull request Jan 18, 2021
Supersedes disqus#11.

In order to prevent (-1) from being masked by BitField.get_prep_value
and converted to 15 (0xf), the test code uses a direct SQL statement.
Its implementation has a few peculiarities that may be undesirable:

- It uses an Django internal API, the Field.column attribute.  Granted,
  this package already uses a lot of internal APIs, and Field.column
  is highly unlikely to change.  However, in general using less internal
  APIs is better for future compatibility.

- Using low-level API misses a lot of code paths that could have been
  tested.

- Neither db_table nor db_column is escaped.  In case we later
  incorporate tests involving pathological SQL object identifiers, we
  have to further use quote_name, which is not exactly public API
  either.

Instead, we use models.Value() with an explicit output_field, which
still avoids BitField.get_prep_value and inserts the value directly.

Further, directly assign to __dict__ so that the BitFieldCreator
descriptor's __set__ method is bypassed and the value is assigned
unchanged.
iamahuman added a commit to iamahuman/django-bitfield that referenced this pull request Jan 18, 2021
Supersedes disqus#11.

In order to prevent (-1) from being masked by BitField.get_prep_value
and converted to 15 (0xf), the test code uses a direct SQL statement.
Its implementation has a few peculiarities that may be undesirable:

- It uses an Django internal API, the Field.column attribute.  Granted,
  this package already uses a lot of internal APIs, and Field.column
  is highly unlikely to change.  However, in general using less internal
  APIs is better for future compatibility.

- Using low-level API misses a lot of code paths that could have been
  tested.

- Neither db_table nor db_column is escaped.  In case we later
  incorporate tests involving pathological SQL object identifiers, we
  have to further use quote_name, which is not exactly public API
  either.

Instead, we use models.Value() with an explicit output_field, which
still avoids BitField.get_prep_value and inserts the value directly.

Further, directly assign to __dict__ so that the BitFieldCreator
descriptor's __set__ method is bypassed and the value is assigned
unchanged.
iamahuman added a commit to iamahuman/django-bitfield that referenced this pull request Jan 18, 2021
Supersedes disqus#11.

In order to prevent (-1) from being masked by BitField.get_prep_value
and converted to 15 (0xf), the test code uses a direct SQL statement.
Its implementation has a few peculiarities that may be undesirable:

- It uses an Django internal API, the Field.column attribute.  Granted,
  this package already uses a lot of internal APIs, and Field.column
  is highly unlikely to change.  However, in general using less internal
  APIs is better for future compatibility.

- Using low-level API misses a lot of code paths that could have been
  tested.

- Neither db_table nor db_column is escaped.  In case we later
  incorporate tests involving pathological SQL object identifiers, we
  have to further use quote_name, which is not exactly public API
  either.

Instead, we use models.Value() with an explicit output_field, which
still avoids BitField.get_prep_value and inserts the value directly.

Further, directly assign to __dict__ so that the BitFieldCreator
descriptor's __set__ method is bypassed and the value is assigned
unchanged.
iamahuman added a commit to iamahuman/django-bitfield that referenced this pull request Jan 18, 2021
Supersedes disqus#11.

In order to prevent (-1) from being masked by BitField.get_prep_value
and converted to 15 (0xf), the test code uses a direct SQL statement.
Its implementation has a few peculiarities that may be undesirable:

- It uses an Django internal API, the Field.column attribute.  Granted,
  this package already uses a lot of internal APIs, and Field.column
  is highly unlikely to change.  However, in general using less internal
  APIs is better for future compatibility.

- Using low-level API misses a lot of code paths that could have been
  tested.

- Neither db_table nor db_column is escaped.  In case we later
  incorporate tests involving pathological SQL object identifiers, we
  have to further use quote_name, which is not exactly public API
  either.

Instead, we use models.Value() with an explicit output_field, which
still avoids BitField.get_prep_value and inserts the value directly.

Further, directly assign to __dict__ so that the BitFieldCreator
descriptor's __set__ method is bypassed and the value is assigned
unchanged.
patelpritesh pushed a commit to Trendlyne-technologies/django-bitfield that referenced this pull request Oct 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant