Commit 9b0c9d46 by Daniel Hahler

flake8 fixes

parent 0591e1fa
...@@ -10,9 +10,11 @@ from taggit.utils import parse_tags, edit_string_for_tags ...@@ -10,9 +10,11 @@ from taggit.utils import parse_tags, edit_string_for_tags
class TagWidget(forms.TextInput): class TagWidget(forms.TextInput):
def render(self, name, value, attrs=None): def render(self, name, value, attrs=None):
if value is not None and not isinstance(value, six.string_types): if value is not None and not isinstance(value, six.string_types):
value = edit_string_for_tags([o.tag for o in value.select_related("tag")]) value = edit_string_for_tags([
o.tag for o in value.select_related("tag")])
return super(TagWidget, self).render(name, value, attrs) return super(TagWidget, self).render(name, value, attrs)
class TagField(forms.CharField): class TagField(forms.CharField):
widget = TagWidget widget = TagWidget
...@@ -21,4 +23,5 @@ class TagField(forms.CharField): ...@@ -21,4 +23,5 @@ class TagField(forms.CharField):
try: try:
return parse_tags(value) return parse_tags(value)
except ValueError: except ValueError:
raise forms.ValidationError(_("Please provide a comma-separated list of tags.")) raise forms.ValidationError(
_("Please provide a comma-separated list of tags."))
...@@ -102,7 +102,7 @@ class _TaggableManager(models.Manager): ...@@ -102,7 +102,7 @@ class _TaggableManager(models.Manager):
else 'content_object') else 'content_object')
fk = self.through._meta.get_field(fieldname) fk = self.through._meta.get_field(fieldname)
query = { query = {
'%s__%s__in' % (self.through.tag_relname(), fk.name) : '%s__%s__in' % (self.through.tag_relname(), fk.name):
set(obj._get_pk_val() for obj in instances) set(obj._get_pk_val() for obj in instances)
} }
join_table = self.through._meta.db_table join_table = self.through._meta.db_table
...@@ -110,8 +110,8 @@ class _TaggableManager(models.Manager): ...@@ -110,8 +110,8 @@ class _TaggableManager(models.Manager):
connection = connections[db] connection = connections[db]
qn = connection.ops.quote_name qn = connection.ops.quote_name
qs = self.get_queryset().using(db)._next_is_sticky().filter(**query).extra( qs = self.get_queryset().using(db)._next_is_sticky().filter(**query).extra(
select = { select={
'_prefetch_related_val' : '%s.%s' % (qn(join_table), qn(source_col)) '_prefetch_related_val': '%s.%s' % (qn(join_table), qn(source_col))
} }
) )
return (qs, return (qs,
...@@ -220,10 +220,12 @@ class _TaggableManager(models.Manager): ...@@ -220,10 +220,12 @@ class _TaggableManager(models.Manager):
class TaggableManager(RelatedField, Field): class TaggableManager(RelatedField, Field):
_related_name_counter = 0 _related_name_counter = 0
def __init__(self, verbose_name=_("Tags"), help_text=_("A comma-separated list of tags."), def __init__(self, verbose_name=_("Tags"),
through=None, blank=False, related_name=None, to=None, help_text=_("A comma-separated list of tags."),
manager=_TaggableManager): through=None, blank=False, related_name=None, to=None,
Field.__init__(self, verbose_name=verbose_name, help_text=help_text, blank=blank, null=True, serialize=False) manager=_TaggableManager):
Field.__init__(self, verbose_name=verbose_name, help_text=help_text,
blank=blank, null=True, serialize=False)
self.through = through or TaggedItem self.through = through or TaggedItem
self.rel = TaggableRel(self, related_name, self.through, to=to) self.rel = TaggableRel(self, related_name, self.through, to=to)
self.swappable = False self.swappable = False
...@@ -233,12 +235,12 @@ class TaggableManager(RelatedField, Field): ...@@ -233,12 +235,12 @@ class TaggableManager(RelatedField, Field):
def __get__(self, instance, model): def __get__(self, instance, model):
if instance is not None and instance.pk is None: if instance is not None and instance.pk is None:
raise ValueError("%s objects need to have a primary key value " raise ValueError("%s objects need to have a primary key value "
"before you can access their tags." % model.__name__) "before you can access their tags." % model.__name__)
manager = self.manager( manager = self.manager(
through=self.through, through=self.through,
model=model, model=model,
instance=instance, instance=instance,
prefetch_cache_name = self.name prefetch_cache_name=self.name
) )
return manager return manager
...@@ -287,7 +289,6 @@ class TaggableManager(RelatedField, Field): ...@@ -287,7 +289,6 @@ class TaggableManager(RelatedField, Field):
else: else:
self.post_through_setup(cls) self.post_through_setup(cls)
def __lt__(self, other): def __lt__(self, other):
""" """
Required contribute_to_class as Django uses bisect Required contribute_to_class as Django uses bisect
...@@ -364,7 +365,7 @@ class TaggableManager(RelatedField, Field): ...@@ -364,7 +365,7 @@ class TaggableManager(RelatedField, Field):
def extra_filters(self, pieces, pos, negate): def extra_filters(self, pieces, pos, negate):
if negate or not self.use_gfk: if negate or not self.use_gfk:
return [] return []
prefix = "__".join(["tagged_items"] + pieces[:pos-2]) prefix = "__".join(["tagged_items"] + pieces[:pos - 2])
get = ContentType.objects.get_for_model get = ContentType.objects.get_for_model
cts = [get(obj) for obj in _get_subclasses(self.model)] cts = [get(obj) for obj in _get_subclasses(self.model)]
if len(cts) == 1: if len(cts) == 1:
...@@ -378,13 +379,18 @@ class TaggableManager(RelatedField, Field): ...@@ -378,13 +379,18 @@ class TaggableManager(RelatedField, Field):
else: else:
alias_to_join = lhs_alias alias_to_join = lhs_alias
extra_col = self.through._meta.get_field_by_name('content_type')[0].column extra_col = self.through._meta.get_field_by_name('content_type')[0].column
content_type_ids = [ContentType.objects.get_for_model(subclass).pk for subclass in _get_subclasses(self.model)] content_type_ids = [ContentType.objects.get_for_model(subclass).pk for
subclass in _get_subclasses(self.model)]
if len(content_type_ids) == 1: if len(content_type_ids) == 1:
content_type_id = content_type_ids[0] content_type_id = content_type_ids[0]
extra_where = " AND %s.%s = %%s" % (qn(alias_to_join), qn(extra_col)) extra_where = " AND %s.%s = %%s" % (qn(alias_to_join),
qn(extra_col))
params = [content_type_id] params = [content_type_id]
else: else:
extra_where = " AND %s.%s IN (%s)" % (qn(alias_to_join), qn(extra_col), ','.join(['%s']*len(content_type_ids))) extra_where = " AND %s.%s IN (%s)" % (qn(alias_to_join),
qn(extra_col),
','.join(['%s'] *
len(content_type_ids)))
params = content_type_ids params = content_type_ids
return extra_where, params return extra_where, params
...@@ -461,7 +467,7 @@ def _get_subclasses(model): ...@@ -461,7 +467,7 @@ def _get_subclasses(model):
for f in model._meta.get_all_field_names(): for f in model._meta.get_all_field_names():
field = model._meta.get_field_by_name(f)[0] field = model._meta.get_field_by_name(f)[0]
if (isinstance(field, RelatedObject) and if (isinstance(field, RelatedObject) and
getattr(field.field.rel, "parent_link", None)): getattr(field.field.rel, "parent_link", None)):
subclasses.extend(_get_subclasses(field.model)) subclasses.extend(_get_subclasses(field.model))
return subclasses return subclasses
......
...@@ -59,7 +59,7 @@ class TagBase(models.Model): ...@@ -59,7 +59,7 @@ class TagBase(models.Model):
except IntegrityError: except IntegrityError:
pass pass
# Now try to find existing slugs with similar names # Now try to find existing slugs with similar names
slugs = set(Tag.objects.filter(slug__startswith=self.slug)\ slugs = set(Tag.objects.filter(slug__startswith=self.slug)
.values_list('slug', flat=True)) .values_list('slug', flat=True))
i = 1 i = 1
while True: while True:
...@@ -145,7 +145,7 @@ class GenericTaggedItemBase(ItemBase): ...@@ -145,7 +145,7 @@ class GenericTaggedItemBase(ItemBase):
content_object = GenericForeignKey() content_object = GenericForeignKey()
class Meta: class Meta:
abstract=True abstract = True
@classmethod @classmethod
def lookup_kwargs(cls, instance): def lookup_kwargs(cls, instance):
......
...@@ -18,4 +18,3 @@ def tagged_object_list(request, slug, queryset, **kwargs): ...@@ -18,4 +18,3 @@ def tagged_object_list(request, slug, queryset, **kwargs):
kwargs["extra_context"] = {} kwargs["extra_context"] = {}
kwargs["extra_context"]["tag"] = tag kwargs["extra_context"]["tag"] = tag
return ListView.as_view(request, qs, **kwargs) return ListView.as_view(request, qs, **kwargs)
...@@ -6,7 +6,7 @@ from .models import Food, DirectFood, CustomPKFood, OfficialFood ...@@ -6,7 +6,7 @@ from .models import Food, DirectFood, CustomPKFood, OfficialFood
fields = None fields = None
if VERSION >= (1,6): if VERSION >= (1, 6):
fields = '__all__' fields = '__all__'
......
...@@ -109,7 +109,7 @@ class TaggableManagerTestCase(BaseTaggingTestCase): ...@@ -109,7 +109,7 @@ class TaggableManagerTestCase(BaseTaggingTestCase):
def test_add_tag(self): def test_add_tag(self):
apple = self.food_model.objects.create(name="apple") apple = self.food_model.objects.create(name="apple")
self.assertEqual(list(apple.tags.all()), []) self.assertEqual(list(apple.tags.all()), [])
self.assertEqual(list(self.food_model.tags.all()), []) self.assertEqual(list(self.food_model.tags.all()), [])
apple.tags.add('green') apple.tags.add('green')
self.assert_tags_equal(apple.tags.all(), ['green']) self.assert_tags_equal(apple.tags.all(), ['green'])
...@@ -150,7 +150,7 @@ class TaggableManagerTestCase(BaseTaggingTestCase): ...@@ -150,7 +150,7 @@ class TaggableManagerTestCase(BaseTaggingTestCase):
# make sure we don't double create. # make sure we don't double create.
# + 12 on Django 1.6 for save points. # + 12 on Django 1.6 for save points.
queries = 22 queries = 22
if django.VERSION < (1,6): if django.VERSION < (1, 6):
queries -= 12 queries -= 12
self.assertNumQueries(queries, apple.tags.add, "red", "delicious", "green") self.assertNumQueries(queries, apple.tags.add, "red", "delicious", "green")
...@@ -160,7 +160,7 @@ class TaggableManagerTestCase(BaseTaggingTestCase): ...@@ -160,7 +160,7 @@ class TaggableManagerTestCase(BaseTaggingTestCase):
# make sure we dont't double create. # make sure we dont't double create.
# + 4 on Django 1.6 for save points. # + 4 on Django 1.6 for save points.
queries = 9 queries = 9
if django.VERSION < (1,6): if django.VERSION < (1, 6):
queries -= 4 queries -= 4
self.assertNumQueries(queries, pear.tags.add, "green", "delicious") self.assertNumQueries(queries, pear.tags.add, "green", "delicious")
...@@ -181,7 +181,7 @@ class TaggableManagerTestCase(BaseTaggingTestCase): ...@@ -181,7 +181,7 @@ class TaggableManagerTestCase(BaseTaggingTestCase):
def test_delete_bulk(self): def test_delete_bulk(self):
apple = self.food_model.objects.create(name="apple") apple = self.food_model.objects.create(name="apple")
kitty = self.pet_model.objects.create(pk=apple.pk, name="kitty") kitty = self.pet_model.objects.create(pk=apple.pk, name="kitty")
apple.tags.add("red", "delicious", "fruit") apple.tags.add("red", "delicious", "fruit")
kitty.tags.add("feline") kitty.tags.add("feline")
...@@ -222,9 +222,9 @@ class TaggableManagerTestCase(BaseTaggingTestCase): ...@@ -222,9 +222,9 @@ class TaggableManagerTestCase(BaseTaggingTestCase):
pks = self.pet_model.objects.filter(tags__name__in=["fuzzy"]) pks = self.pet_model.objects.filter(tags__name__in=["fuzzy"])
model_name = self.pet_model.__name__ model_name = self.pet_model.__name__
self.assertQuerysetEqual(pks, self.assertQuerysetEqual(pks,
['<{0}: kitty>'.format(model_name), ['<{0}: kitty>'.format(model_name),
'<{0}: cat>'.format(model_name)], '<{0}: cat>'.format(model_name)],
ordered=False) ordered=False)
def test_lookup_bulk(self): def test_lookup_bulk(self):
apple = self.food_model.objects.create(name="apple") apple = self.food_model.objects.create(name="apple")
...@@ -254,14 +254,14 @@ class TaggableManagerTestCase(BaseTaggingTestCase): ...@@ -254,14 +254,14 @@ class TaggableManagerTestCase(BaseTaggingTestCase):
pear = self.food_model.objects.create(name="pear") pear = self.food_model.objects.create(name="pear")
pear.tags.add("green", "delicious") pear.tags.add("green", "delicious")
guava = self.food_model.objects.create(name="guava") self.food_model.objects.create(name="guava")
pks = self.food_model.objects.exclude(tags__name__in=["red"]) pks = self.food_model.objects.exclude(tags__name__in=["red"])
model_name = self.food_model.__name__ model_name = self.food_model.__name__
self.assertQuerysetEqual(pks, self.assertQuerysetEqual(pks,
['<{0}: pear>'.format(model_name), ['<{0}: pear>'.format(model_name),
'<{0}: guava>'.format(model_name)], '<{0}: guava>'.format(model_name)],
ordered=False) ordered=False)
def test_similarity_by_tag(self): def test_similarity_by_tag(self):
"""Test that pears are more similar to apples than watermelons""" """Test that pears are more similar to apples than watermelons"""
...@@ -293,8 +293,8 @@ class TaggableManagerTestCase(BaseTaggingTestCase): ...@@ -293,8 +293,8 @@ class TaggableManagerTestCase(BaseTaggingTestCase):
'%s__name' % _model_name(self.pet_model): 'Spot' '%s__name' % _model_name(self.pet_model): 'Spot'
} }
self.assert_tags_equal( self.assert_tags_equal(
self.tag_model.objects.filter(**lookup_kwargs), self.tag_model.objects.filter(**lookup_kwargs),
['scary'] ['scary']
) )
def test_taggeditem_unicode(self): def test_taggeditem_unicode(self):
...@@ -492,7 +492,7 @@ class TagStringParseTestCase(UnitTestCase): ...@@ -492,7 +492,7 @@ class TagStringParseTestCase(UnitTestCase):
self.assertEqual(parse_tags(',one two'), ['one two']) self.assertEqual(parse_tags(',one two'), ['one two'])
self.assertEqual(parse_tags(',one two three'), ['one two three']) self.assertEqual(parse_tags(',one two three'), ['one two three'])
self.assertEqual(parse_tags('a-one, a-two and a-three'), self.assertEqual(parse_tags('a-one, a-two and a-three'),
['a-one', 'a-two and a-three']) ['a-one', 'a-two and a-three'])
def test_with_double_quoted_multiple_words(self): def test_with_double_quoted_multiple_words(self):
""" """
...@@ -504,7 +504,7 @@ class TagStringParseTestCase(UnitTestCase): ...@@ -504,7 +504,7 @@ class TagStringParseTestCase(UnitTestCase):
self.assertEqual(parse_tags('"one two three'), ['one', 'three', 'two']) self.assertEqual(parse_tags('"one two three'), ['one', 'three', 'two'])
self.assertEqual(parse_tags('"one two"'), ['one two']) self.assertEqual(parse_tags('"one two"'), ['one two'])
self.assertEqual(parse_tags('a-one "a-two and a-three"'), self.assertEqual(parse_tags('a-one "a-two and a-three"'),
['a-one', 'a-two and a-three']) ['a-one', 'a-two and a-three'])
def test_with_no_loose_commas(self): def test_with_no_loose_commas(self):
""" """
...@@ -523,9 +523,9 @@ class TagStringParseTestCase(UnitTestCase): ...@@ -523,9 +523,9 @@ class TagStringParseTestCase(UnitTestCase):
Double quotes can contain commas Double quotes can contain commas
""" """
self.assertEqual(parse_tags('a-one "a-two, and a-three"'), self.assertEqual(parse_tags('a-one "a-two, and a-three"'),
['a-one', 'a-two, and a-three']) ['a-one', 'a-two, and a-three'])
self.assertEqual(parse_tags('"two", one, one, two, "one"'), self.assertEqual(parse_tags('"two", one, one, two, "one"'),
['one', 'two']) ['one', 'two'])
def test_with_naughty_input(self): def test_with_naughty_input(self):
""" """
...@@ -540,7 +540,7 @@ class TagStringParseTestCase(UnitTestCase): ...@@ -540,7 +540,7 @@ class TagStringParseTestCase(UnitTestCase):
self.assertEqual(parse_tags(',,,,,,'), []) self.assertEqual(parse_tags(',,,,,,'), [])
self.assertEqual(parse_tags('",",",",",",","'), [',']) self.assertEqual(parse_tags('",",",",",",","'), [','])
self.assertEqual(parse_tags('a-one "a-two" and "a-three'), self.assertEqual(parse_tags('a-one "a-two" and "a-three'),
['a-one', 'a-three', 'a-two', 'and']) ['a-one', 'a-three', 'a-two', 'and'])
def test_recreation_of_tag_list_string_representations(self): def test_recreation_of_tag_list_string_representations(self):
plain = Tag.objects.create(name='plain') plain = Tag.objects.create(name='plain')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment