[Python-modules-commits] [django-bitfield] 01/06: Import django-bitfield_1.9.3.orig.tar.gz
Michael Fladischer
fladi at moszumanska.debian.org
Tue Jun 20 08:47:23 UTC 2017
This is an automated email from the git hooks/post-receive script.
fladi pushed a commit to branch master
in repository django-bitfield.
commit 23d746952896c61c87c63c44ee99b42951b905ef
Author: Michael Fladischer <FladischerMichael at fladi.at>
Date: Tue Jun 20 10:40:12 2017 +0200
Import django-bitfield_1.9.3.orig.tar.gz
---
PKG-INFO | 8 +++-----
bitfield/__init__.py | 1 +
bitfield/apps.py | 6 ++++++
bitfield/forms.py | 4 ++--
bitfield/models.py | 37 ++++++++++++-----------------------
bitfield/query.py | 10 ++++++++++
bitfield/tests/__init__.py | 4 ----
bitfield/tests/tests.py | 33 ++++++++++++-------------------
django_bitfield.egg-info/PKG-INFO | 8 +++-----
django_bitfield.egg-info/SOURCES.txt | 1 +
django_bitfield.egg-info/requires.txt | 2 +-
setup.cfg | 4 ++--
setup.py | 10 ++++------
13 files changed, 57 insertions(+), 71 deletions(-)
diff --git a/PKG-INFO b/PKG-INFO
index 4acc34f..bb822a9 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,9 +1,9 @@
Metadata-Version: 1.1
Name: django-bitfield
-Version: 1.8.0
+Version: 1.9.3
Summary: BitField in Django
Home-page: https://github.com/disqus/django-bitfield
-Author: DISQUS
+Author: Disqus
Author-email: opensource at disqus.com
License: UNKNOWN
Description: UNKNOWN
@@ -15,9 +15,7 @@ Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
diff --git a/bitfield/__init__.py b/bitfield/__init__.py
index 9088139..5425137 100644
--- a/bitfield/__init__.py
+++ b/bitfield/__init__.py
@@ -6,6 +6,7 @@ from __future__ import absolute_import
from bitfield.models import Bit, BitHandler, CompositeBitField, BitField # NOQA
+default_app_config = 'bitfield.apps.BitFieldAppConfig'
try:
VERSION = __import__('pkg_resources') \
diff --git a/bitfield/apps.py b/bitfield/apps.py
new file mode 100644
index 0000000..dabe0ce
--- /dev/null
+++ b/bitfield/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class BitFieldAppConfig(AppConfig):
+ name = 'bitfield'
+ verbose_name = "Bit Field"
diff --git a/bitfield/forms.py b/bitfield/forms.py
index d8bfd19..834960f 100644
--- a/bitfield/forms.py
+++ b/bitfield/forms.py
@@ -24,7 +24,7 @@ class BitFieldCheckboxSelectMultiple(CheckboxSelectMultiple):
div *= 2
value = real_value
return super(BitFieldCheckboxSelectMultiple, self).render(
- name, value, attrs=attrs, choices=enumerate(choices))
+ name, value, attrs=attrs)
def _has_changed(self, initial, data):
if initial is None:
@@ -44,7 +44,7 @@ class BitFormField(IntegerField):
if isinstance(kwargs['initial'], int):
iv = kwargs['initial']
l = []
- for i in range(0, 63):
+ for i in range(0, min(len(choices), 63)):
if (1 << i) & iv > 0:
l += [choices[i][0]]
kwargs['initial'] = l
diff --git a/bitfield/models.py b/bitfield/models.py
index d42a83d..b83ffae 100644
--- a/bitfield/models.py
+++ b/bitfield/models.py
@@ -4,12 +4,6 @@ import six
from django.db.models import signals
from django.db.models.fields import Field, BigIntegerField
-from django.db.models.fields.subclassing import Creator
-try:
- from django.db.models.fields.subclassing import SubfieldBase
-except ImportError:
- # django 1.2
- from django.db.models.fields.subclassing import LegacyConnection as SubfieldBase # NOQA
from bitfield.forms import BitFormField
from bitfield.query import BitQueryLookupWrapper
@@ -60,13 +54,20 @@ class BitFieldFlags(object):
return list(self.itervalues())
-class BitFieldCreator(Creator):
+class BitFieldCreator(object):
"""
+ A placeholder class that provides a way to set the attribute on the model.
Descriptor for BitFields. Checks to make sure that all flags of the
instance match the class. This is to handle the case when caching
an older version of the instance and a newer version of the class is
available (usually during deploys).
"""
+ def __init__(self, field):
+ self.field = field
+
+ def __set__(self, obj, value):
+ obj.__dict__[self.field.name] = self.field.to_python(value)
+
def __get__(self, obj, type=None):
if obj is None:
return BitFieldFlags(self.field.flags)
@@ -77,26 +78,12 @@ class BitFieldCreator(Creator):
return retval
-class BitFieldMeta(SubfieldBase):
- """
- Modified SubFieldBase to use our contribute_to_class method (instead of
- monkey-patching make_contrib). This uses our BitFieldCreator descriptor
- in place of the default.
-
- NOTE: If we find ourselves needing custom descriptors for fields, we could
- make this generic.
- """
- def __new__(cls, name, bases, attrs):
- def contribute_to_class(self, cls, name):
- BigIntegerField.contribute_to_class(self, cls, name)
- setattr(cls, self.name, BitFieldCreator(self))
-
- new_class = super(BitFieldMeta, cls).__new__(cls, name, bases, attrs)
- new_class.contribute_to_class = contribute_to_class
- return new_class
+class BitField(BigIntegerField):
+ def contribute_to_class(self, cls, name, **kwargs):
+ super(BitField, self).contribute_to_class(cls, name, **kwargs)
+ setattr(cls, self.name, BitFieldCreator(self))
-class BitField(six.with_metaclass(BitFieldMeta, BigIntegerField)):
def __init__(self, flags, default=None, *args, **kwargs):
if isinstance(flags, dict):
# Get only integer keys in correct range
diff --git a/bitfield/query.py b/bitfield/query.py
index ee1ddef..7721f08 100644
--- a/bitfield/query.py
+++ b/bitfield/query.py
@@ -1,5 +1,7 @@
from __future__ import absolute_import
+from bitfield.types import Bit, BitHandler
+
class BitQueryLookupWrapper(object):
def __init__(self, alias, column, bit):
@@ -20,6 +22,7 @@ class BitQueryLookupWrapper(object):
return ("(%s.%s & %d)" % (qn(self.table_alias), qn(self.column), self.bit.mask),
[])
+
try:
# Django 1.7+
from django.db.models.lookups import Exact
@@ -35,6 +38,13 @@ try:
params.extend(self.get_db_prep_lookup(self.rhs, connection)[1])
return lhs_sql, params
+ def get_db_prep_lookup(self, value, connection, prepared=False):
+ v = value.mask if isinstance(value, (BitHandler, Bit)) else value
+ return super(BitQueryLookupWrapper, self).get_db_prep_lookup(v, connection)
+
+ def get_prep_lookup(self):
+ return self.rhs
+
except ImportError:
pass
diff --git a/bitfield/tests/__init__.py b/bitfield/tests/__init__.py
index 15088bf..e69de29 100644
--- a/bitfield/tests/__init__.py
+++ b/bitfield/tests/__init__.py
@@ -1,4 +0,0 @@
-from __future__ import absolute_import
-
-from .forms import * # NOQA
-from .models import * # NOQA
diff --git a/bitfield/tests/tests.py b/bitfield/tests/tests.py
index 9748da9..62fff82 100644
--- a/bitfield/tests/tests.py
+++ b/bitfield/tests/tests.py
@@ -7,24 +7,10 @@ from django.db.models import F
from django.test import TestCase
from bitfield import BitHandler, Bit, BitField
-from bitfield.tests import BitFieldTestModel, CompositeBitFieldTestModel, BitFieldTestModelForm
from bitfield.compat import bitand, bitor
-try:
- from django.db.models.base import simple_class_factory # noqa
-except ImportError:
- # Django 1.5 muffed up the base class which breaks the pickle tests
- # Note, it's fixed again in 1.6.
- from django.db.models import base
- _model_unpickle = base.model_unpickle
-
- def simple_class_factory(model, attrs):
- return model
-
- def model_unpickle(model, attrs, factory):
- return _model_unpickle(model, attrs)
- setattr(base, 'simple_class_factory', simple_class_factory)
- setattr(base, 'model_unpickle', model_unpickle)
+from .forms import BitFieldTestModelForm
+from .models import BitFieldTestModel, CompositeBitFieldTestModel
class BitHandlerTest(TestCase):
@@ -171,7 +157,7 @@ class BitFieldTest(TestCase):
self.assertTrue(instance.flags.FLAG_3)
cursor = connection.cursor()
- flags_field = BitFieldTestModel._meta.get_field_by_name('flags')[0]
+ flags_field = BitFieldTestModel._meta.get_field('flags')
flags_db_column = flags_field.db_column or flags_field.name
cursor.execute("INSERT INTO %s (%s) VALUES (-1)" % (BitFieldTestModel._meta.db_table, flags_db_column))
# There should only be the one row we inserted through the cursor.
@@ -289,8 +275,10 @@ class BitFieldTest(TestCase):
class BitFieldSerializationTest(TestCase):
def test_can_unserialize_bithandler(self):
- data = b"cdjango.db.models.base\nmodel_unpickle\np0\n(cbitfield.tests.models\nBitFieldTestModel\np1\n(lp2\ncdjango.db.models.base\nsimple_class_factory\np3\ntp4\nRp5\n(dp6\nS'flags'\np7\nccopy_reg\n_reconstructor\np8\n(cbitfield.types\nBitHandler\np9\nc__builtin__\nobject\np10\nNtp11\nRp12\n(dp13\nS'_value'\np14\nI1\nsS'_keys'\np15\n(S'FLAG_0'\np16\nS'FLAG_1'\np17\nS'FLAG_2'\np18\nS'FLAG_3'\np19\ntp20\nsbsS'_state'\np21\ng8\n(cdjango.db.models.base\nModelState\np22\ng10\nNtp23\nR [...]
-
+ bf = BitFieldTestModel()
+ bf.flags.FLAG_0 = 1
+ bf.flags.FLAG_1 = 0
+ data = pickle.dumps(bf)
inst = pickle.loads(data)
self.assertTrue(inst.flags.FLAG_0)
self.assertFalse(inst.flags.FLAG_1)
@@ -303,8 +291,11 @@ class BitFieldSerializationTest(TestCase):
self.assertEquals(int(inst.flags), 1)
def test_added_field(self):
- data = b"cdjango.db.models.base\nmodel_unpickle\np0\n(cbitfield.tests.models\nBitFieldTestModel\np1\n(lp2\ncdjango.db.models.base\nsimple_class_factory\np3\ntp4\nRp5\n(dp6\nS'flags'\np7\nccopy_reg\n_reconstructor\np8\n(cbitfield.types\nBitHandler\np9\nc__builtin__\nobject\np10\nNtp11\nRp12\n(dp13\nS'_value'\np14\nI1\nsS'_keys'\np15\n(S'FLAG_0'\np16\nS'FLAG_1'\np17\nS'FLAG_2'\np18\ntp19\nsbsS'_state'\np20\ng8\n(cdjango.db.models.base\nModelState\np21\ng10\nNtp22\nRp23\n(dp24\nS'ad [...]
-
+ bf = BitFieldTestModel()
+ bf.flags.FLAG_0 = 1
+ bf.flags.FLAG_1 = 0
+ bf.flags.FLAG_3 = 0
+ data = pickle.dumps(bf)
inst = pickle.loads(data)
self.assertTrue('FLAG_3' in inst.flags.keys())
diff --git a/django_bitfield.egg-info/PKG-INFO b/django_bitfield.egg-info/PKG-INFO
index 4acc34f..bb822a9 100644
--- a/django_bitfield.egg-info/PKG-INFO
+++ b/django_bitfield.egg-info/PKG-INFO
@@ -1,9 +1,9 @@
Metadata-Version: 1.1
Name: django-bitfield
-Version: 1.8.0
+Version: 1.9.3
Summary: BitField in Django
Home-page: https://github.com/disqus/django-bitfield
-Author: DISQUS
+Author: Disqus
Author-email: opensource at disqus.com
License: UNKNOWN
Description: UNKNOWN
@@ -15,9 +15,7 @@ Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
diff --git a/django_bitfield.egg-info/SOURCES.txt b/django_bitfield.egg-info/SOURCES.txt
index befe7c4..d79db8e 100644
--- a/django_bitfield.egg-info/SOURCES.txt
+++ b/django_bitfield.egg-info/SOURCES.txt
@@ -5,6 +5,7 @@ setup.cfg
setup.py
bitfield/__init__.py
bitfield/admin.py
+bitfield/apps.py
bitfield/compat.py
bitfield/forms.py
bitfield/models.py
diff --git a/django_bitfield.egg-info/requires.txt b/django_bitfield.egg-info/requires.txt
index 504c6b6..211e2ce 100644
--- a/django_bitfield.egg-info/requires.txt
+++ b/django_bitfield.egg-info/requires.txt
@@ -1,4 +1,4 @@
-Django>=1.4
+Django>=1.4.22
six
[tests]
diff --git a/setup.cfg b/setup.cfg
index 68229b0..ea13330 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -12,7 +12,7 @@ exclude = .tox,.git,docs
universal = 1
[egg_info]
-tag_build =
-tag_date = 0
tag_svn_revision = 0
+tag_date = 0
+tag_build =
diff --git a/setup.py b/setup.py
index 1d09c30..eda5027 100644
--- a/setup.py
+++ b/setup.py
@@ -4,15 +4,15 @@ from setuptools import setup, find_packages
setup(
name='django-bitfield',
- version='1.8.0',
- author='DISQUS',
+ version='1.9.3',
+ author='Disqus',
author_email='opensource at disqus.com',
url='https://github.com/disqus/django-bitfield',
description='BitField in Django',
packages=find_packages(),
zip_safe=False,
install_requires=[
- 'Django>=1.4',
+ 'Django>=1.4.22',
'six',
],
extras_require={
@@ -32,11 +32,9 @@ setup(
'Topic :: Software Development',
"Programming Language :: Python",
"Programming Language :: Python :: 2",
- "Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.2",
- "Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
+ "Programming Language :: Python :: 3.5",
],
)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/django-bitfield.git
More information about the Python-modules-commits
mailing list