From 65f982ccf31b86157c39a8feb42081410b83abe2 Mon Sep 17 00:00:00 2001 From: Ask Solem Date: Mon, 27 Jun 2016 19:31:01 -0700 Subject: [PATCH] Removes Django ORM as a broker support --- README.rst | 2 - docs/conf.py | 5 - docs/includes/introduction.txt | 2 - docs/reference/index.rst | 4 - ...nagement.commands.clean_kombu_messages.rst | 14 --- .../kombu.transport.django.managers.rst | 11 --- .../kombu.transport.django.models.rst | 11 --- docs/reference/kombu.transport.django.rst | 24 ----- docs/userguide/connections.rst | 2 - funtests/setup.py | 2 - funtests/tests/test_django.py | 30 ------ kombu/tests/__init__.py | 21 ---- kombu/transport/__init__.py | 1 - kombu/transport/django/__init__.py | 83 ---------------- kombu/transport/django/management/__init__.py | 0 .../django/management/commands/__init__.py | 0 .../commands/clean_kombu_messages.py | 22 ----- kombu/transport/django/managers.py | 95 ------------------- .../django/migrations/0001_initial.py | 51 ---------- kombu/transport/django/migrations/__init__.py | 16 ---- kombu/transport/django/models.py | 38 -------- .../django/south_migrations/0001_initial.py | 57 ----------- .../django/south_migrations/__init__.py | 0 requirements/docs.txt | 1 - requirements/funtest.txt | 4 - 25 files changed, 496 deletions(-) delete mode 100644 docs/reference/kombu.transport.django.management.commands.clean_kombu_messages.rst delete mode 100644 docs/reference/kombu.transport.django.managers.rst delete mode 100644 docs/reference/kombu.transport.django.models.rst delete mode 100644 docs/reference/kombu.transport.django.rst delete mode 100644 funtests/tests/test_django.py delete mode 100644 kombu/transport/django/__init__.py delete mode 100644 kombu/transport/django/management/__init__.py delete mode 100644 kombu/transport/django/management/commands/__init__.py delete mode 100644 kombu/transport/django/management/commands/clean_kombu_messages.py delete mode 100644 kombu/transport/django/managers.py delete mode 100644 kombu/transport/django/migrations/0001_initial.py delete mode 100644 kombu/transport/django/migrations/__init__.py delete mode 100644 kombu/transport/django/models.py delete mode 100644 kombu/transport/django/south_migrations/0001_initial.py delete mode 100644 kombu/transport/django/south_migrations/__init__.py diff --git a/README.rst b/README.rst index 76c261ed3..569b0e168 100644 --- a/README.rst +++ b/README.rst @@ -107,8 +107,6 @@ Transport Comparison +---------------+----------+------------+------------+---------------+--------------+-----------------------+ | *in-memory* | Virtual | Yes | Yes [#f1]_ | No | No | No | +---------------+----------+------------+------------+---------------+--------------+-----------------------+ -| *django* | Virtual | Yes | Yes [#f1]_ | No | No | No | -+---------------+----------+------------+------------+---------------+--------------+-----------------------+ | *SLMQ* | Virtual | Yes | Yes [#f1]_ | No | No | No | +---------------+----------+------------+------------+---------------+--------------+-----------------------+ diff --git a/docs/conf.py b/docs/conf.py index cf4f28b78..208b4f09e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -19,14 +19,9 @@ html_favicon='images/favicon.ico', html_prepend_sidebars=['sidebardonations.html'], extra_extensions=[], - configure_django_settings={'DEBUG': False}, apicheck_ignore_modules=[ 'kombu.entity', 'kombu.messaging', - 'kombu.transport.django.management', - 'kombu.transport.django.management.commands', - r'kombu.transport.django.migrations.*', - r'kombu.transport.django.south_migrations.*', 'kombu.async.aws.ext', 'kombu.async.aws.sqs.ext', 'kombu.transport.qpid_patches', diff --git a/docs/includes/introduction.txt b/docs/includes/introduction.txt index 7ea9e2fde..f9ba82929 100644 --- a/docs/includes/introduction.txt +++ b/docs/includes/introduction.txt @@ -102,8 +102,6 @@ Transport Comparison +---------------+----------+------------+------------+---------------+--------------+-----------------------+ | *in-memory* | Virtual | Yes | Yes [#f1]_ | No | No | No | +---------------+----------+------------+------------+---------------+--------------+-----------------------+ -| *django* | Virtual | Yes | Yes [#f1]_ | No | No | No | -+---------------+----------+------------+------------+---------------+--------------+-----------------------+ | *SLMQ* | Virtual | Yes | Yes [#f1]_ | No | No | No | +---------------+----------+------------+------------+---------------+--------------+-----------------------+ diff --git a/docs/reference/index.rst b/docs/reference/index.rst index ef45cb82f..456d7d836 100644 --- a/docs/reference/index.rst +++ b/docs/reference/index.rst @@ -50,10 +50,6 @@ kombu.transport.couchdb kombu.transport.zookeeper kombu.transport.filesystem - kombu.transport.django - kombu.transport.django.models - kombu.transport.django.managers - kombu.transport.django.management.commands.clean_kombu_messages kombu.transport.SQS kombu.transport.SLMQ kombu.transport.pyro diff --git a/docs/reference/kombu.transport.django.management.commands.clean_kombu_messages.rst b/docs/reference/kombu.transport.django.management.commands.clean_kombu_messages.rst deleted file mode 100644 index 7949eea99..000000000 --- a/docs/reference/kombu.transport.django.management.commands.clean_kombu_messages.rst +++ /dev/null @@ -1,14 +0,0 @@ -========================================================== - Django Management - clean_kombu_messages -========================================================== - -.. contents:: - :local: -.. currentmodule:: - kombu.transport.django.management.commands.clean_kombu_messages - -.. automodule:: - kombu.transport.django.management.commands.clean_kombu_messages - - :members: - :undoc-members: diff --git a/docs/reference/kombu.transport.django.managers.rst b/docs/reference/kombu.transport.django.managers.rst deleted file mode 100644 index 9afe7a6c8..000000000 --- a/docs/reference/kombu.transport.django.managers.rst +++ /dev/null @@ -1,11 +0,0 @@ -========================================================== - Django Managers - kombu.transport.django.managers -========================================================== - -.. contents:: - :local: -.. currentmodule:: kombu.transport.django.managers - -.. automodule:: kombu.transport.django.managers - :members: - :undoc-members: diff --git a/docs/reference/kombu.transport.django.models.rst b/docs/reference/kombu.transport.django.models.rst deleted file mode 100644 index 4466c0faf..000000000 --- a/docs/reference/kombu.transport.django.models.rst +++ /dev/null @@ -1,11 +0,0 @@ -========================================================== - Django Models - kombu.transport.django.models -========================================================== - -.. contents:: - :local: -.. currentmodule:: kombu.transport.django.models - -.. automodule:: kombu.transport.django.models - :members: - :undoc-members: diff --git a/docs/reference/kombu.transport.django.rst b/docs/reference/kombu.transport.django.rst deleted file mode 100644 index 4203c7785..000000000 --- a/docs/reference/kombu.transport.django.rst +++ /dev/null @@ -1,24 +0,0 @@ -========================================= - kombu.transport.django -========================================= - -.. currentmodule:: kombu.transport.django - -.. automodule:: kombu.transport.django - - .. contents:: - :local: - - Transport - --------- - - .. autoclass:: Transport - :members: - :undoc-members: - - Channel - ------- - - .. autoclass:: Channel - :members: - :undoc-members: diff --git a/docs/userguide/connections.rst b/docs/userguide/connections.rst index fa32a2095..27419f551 100644 --- a/docs/userguide/connections.rst +++ b/docs/userguide/connections.rst @@ -192,8 +192,6 @@ Transport Comparison +---------------+----------+------------+------------+---------------+--------------+ | *in-memory* | Virtual | Yes | Yes [#f1]_ | No | No | +---------------+----------+------------+------------+---------------+--------------+ -| *django* | Virtual | Yes | Yes [#f1]_ | No | No | -+---------------+----------+------------+------------+---------------+--------------+ | *SLMQ* | Virtual | Yes | Yes [#f1]_ | No | No | +---------------+----------+------------+------------+---------------+--------------+ diff --git a/funtests/setup.py b/funtests/setup.py index 967c763d3..b3310e904 100644 --- a/funtests/setup.py +++ b/funtests/setup.py @@ -54,8 +54,6 @@ def run(self, *args, **kwargs): 'couchdb', 'kazoo', 'beanstalkc', - 'django', - 'django-kombu', ], classifiers=[ 'Operating System :: OS Independent', diff --git a/funtests/tests/test_django.py b/funtests/tests/test_django.py deleted file mode 100644 index 056e4f40f..000000000 --- a/funtests/tests/test_django.py +++ /dev/null @@ -1,30 +0,0 @@ -from __future__ import absolute_import, unicode_literals - -from funtests import transport - -from kombu.tests.case import mock, skip - - -@skip.unless_module('django') -class test_django(transport.TransportCase): - transport = 'django' - prefix = 'django' - event_loop_max = 10 - - @mock.stdouts - def before_connect(self, stdout, stderr): - from django.conf import settings - if not settings.configured: - settings.configure( - DATABASE_ENGINE='sqlite3', - DATABASE_NAME=':memory:', - DATABASES={ - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': ':memory:', - }, - }, - INSTALLED_APPS=('kombu.transport.django',), - ) - from django.core.management import call_command - call_command('syncdb') diff --git a/kombu/tests/__init__.py b/kombu/tests/__init__.py index aa120e1a1..17ac49e3a 100644 --- a/kombu/tests/__init__.py +++ b/kombu/tests/__init__.py @@ -56,28 +56,7 @@ def is_in_coverage(): '--with-coverage3' in sys.argv) -def setup_django_env(): - try: - from django.conf import settings - except ImportError: - return - - if not settings.configured: - settings.configure( - DATABASES={ - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': ':memory:', - }, - }, - DATABASE_ENGINE='sqlite3', - DATABASE_NAME=':memory:', - INSTALLED_APPS=('kombu.transport.django',), - ) - - def setup(): # so coverage sees all our modules. - setup_django_env() if is_in_coverage(): import_all_modules() diff --git a/kombu/transport/__init__.py b/kombu/transport/__init__.py index 23c02b327..5b0b71e7f 100644 --- a/kombu/transport/__init__.py +++ b/kombu/transport/__init__.py @@ -34,7 +34,6 @@ def supports_librabbitmq(): 'mongodb': 'kombu.transport.mongodb:Transport', 'couchdb': 'kombu.transport.couchdb:Transport', 'zookeeper': 'kombu.transport.zookeeper:Transport', - 'django': 'kombu.transport.django:Transport', 'SLMQ': 'kombu.transport.SLMQ.Transport', 'slmq': 'kombu.transport.SLMQ.Transport', 'filesystem': 'kombu.transport.filesystem:Transport', diff --git a/kombu/transport/django/__init__.py b/kombu/transport/django/__init__.py deleted file mode 100644 index 7bcf992a4..000000000 --- a/kombu/transport/django/__init__.py +++ /dev/null @@ -1,83 +0,0 @@ -"""Kombu transport using the Django database as a message store.""" -from __future__ import absolute_import, unicode_literals - -from django.conf import settings -from django.core import exceptions as errors - -from kombu.five import Empty -from kombu.transport import virtual -from kombu.utils import cached_property, symbol_by_name -from kombu.utils.encoding import bytes_to_str -from kombu.utils.json import loads, dumps - - -try: - from django.apps import AppConfig -except ImportError: # pragma: no cover - pass -else: - class KombuAppConfig(AppConfig): - name = 'kombu.transport.django' - label = name.replace('.', '_') - verbose_name = 'Message queue' - default_app_config = 'kombu.transport.django.KombuAppConfig' - -VERSION = (1, 0, 0) -__version__ = '.'.join(map(str, VERSION)) - -POLLING_INTERVAL = getattr(settings, 'KOMBU_POLLING_INTERVAL', - getattr(settings, 'DJKOMBU_POLLING_INTERVAL', 5.0)) - - -class Channel(virtual.Channel): - queue_model = 'kombu.transport.django.models:Queue' - - def _new_queue(self, queue, **kwargs): - self.Queue.objects.get_or_create(name=queue) - - def _put(self, queue, message, **kwargs): - self.Queue.objects.publish(queue, dumps(message)) - - def basic_consume(self, queue, *args, **kwargs): - qinfo = self.state.bindings[queue] - exchange = qinfo[0] - if self.typeof(exchange).type == 'fanout': - return - super(Channel, self).basic_consume(queue, *args, **kwargs) - - def _get(self, queue): - m = self.Queue.objects.fetch(queue) - if m: - return loads(bytes_to_str(m)) - raise Empty() - - def _size(self, queue): - return self.Queue.objects.size(queue) - - def _purge(self, queue): - return self.Queue.objects.purge(queue) - - def refresh_connection(self): - from django import db - db.close_connection() - - @cached_property - def Queue(self): - return symbol_by_name(self.queue_model) - - -class Transport(virtual.Transport): - Channel = Channel - - default_port = 0 - polling_interval = POLLING_INTERVAL - channel_errors = ( - virtual.Transport.channel_errors + ( - errors.ObjectDoesNotExist, errors.MultipleObjectsReturned) - ) - driver_type = 'sql' - driver_name = 'django' - - def driver_version(self): - import django - return '.'.join(map(str, django.VERSION)) diff --git a/kombu/transport/django/management/__init__.py b/kombu/transport/django/management/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/kombu/transport/django/management/commands/__init__.py b/kombu/transport/django/management/commands/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/kombu/transport/django/management/commands/clean_kombu_messages.py b/kombu/transport/django/management/commands/clean_kombu_messages.py deleted file mode 100644 index e4543f09e..000000000 --- a/kombu/transport/django/management/commands/clean_kombu_messages.py +++ /dev/null @@ -1,22 +0,0 @@ -from __future__ import absolute_import, unicode_literals - -from django.core.management.base import BaseCommand - - -def pluralize(desc, value): - if value > 1: - return desc + 's' - return desc - - -class Command(BaseCommand): - requires_model_validation = True - - def handle(self, *args, **options): - from kombu.transport.django.models import Message - - count = Message.objects.filter(visible=False).count() - - print('Removing {0} invisible {1} from database... '.format( - count, pluralize('message', count))) - Message.objects.cleanup() diff --git a/kombu/transport/django/managers.py b/kombu/transport/django/managers.py deleted file mode 100644 index 738f8b399..000000000 --- a/kombu/transport/django/managers.py +++ /dev/null @@ -1,95 +0,0 @@ -from __future__ import absolute_import, unicode_literals - -from vine.utils import wraps - -from django.db import transaction, connection, models -try: - from django.db import connections, router -except ImportError: # pre-Django 1.2 - connections = router = None # noqa - - -try: - transaction.atomic -except AttributeError: - commit_on_success = transaction.commit_on_success -else: - def commit_on_success(fun): - @wraps(fun) - def _commit(*args, **kwargs): - with transaction.atomic(): - return fun(*args, **kwargs) - return _commit - - -class QueueManager(models.Manager): - - def publish(self, queue_name, payload): - queue, created = self.get_or_create(name=queue_name) - queue.messages.create(payload=payload) - - def fetch(self, queue_name): - try: - queue = self.get(name=queue_name) - except self.model.DoesNotExist: - return - - return queue.messages.pop() - - def size(self, queue_name): - return self.get(name=queue_name).messages.count() - - def purge(self, queue_name): - try: - queue = self.get(name=queue_name) - except self.model.DoesNotExist: - return - - messages = queue.messages.all() - count = messages.count() - messages.delete() - return count - - -def select_for_update(qs): - if connection.vendor == 'oracle': - return qs - try: - return qs.select_for_update() - except AttributeError: - return qs - - -class MessageManager(models.Manager): - _messages_received = [0] - cleanup_every = 10 - - @commit_on_success - def pop(self): - try: - resultset = select_for_update( - self.filter(visible=True).order_by('sent_at', 'id') - ) - result = resultset[0:1].get() - result.visible = False - result.save() - recv = self.__class__._messages_received - recv[0] += 1 - if not recv[0] % self.cleanup_every: - self.cleanup() - return result.payload - except self.model.DoesNotExist: - pass - - def cleanup(self): - cursor = self.connection_for_write().cursor() - cursor.execute( - 'DELETE FROM %s WHERE visible=%%s' % ( - self.model._meta.db_table,), - (False,) - ) - - def connection_for_write(self): - if connections: - return connections[router.db_for_write(self.model)] - return connection diff --git a/kombu/transport/django/migrations/0001_initial.py b/kombu/transport/django/migrations/0001_initial.py deleted file mode 100644 index 0307c2822..000000000 --- a/kombu/transport/django/migrations/0001_initial.py +++ /dev/null @@ -1,51 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import absolute_import, unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Message', - fields=[ - ('id', models.AutoField( - verbose_name='ID', serialize=False, - auto_created=True, primary_key=True)), - ('visible', models.BooleanField(default=True, db_index=True)), - ('sent_at', models.DateTimeField( - db_index=True, auto_now_add=True, null=True)), - ('payload', models.TextField(verbose_name='payload')), - ], - options={ - 'db_table': 'djkombu_message', - 'verbose_name': 'message', - 'verbose_name_plural': 'messages', - }, - ), - migrations.CreateModel( - name='Queue', - fields=[ - ('id', models.AutoField( - verbose_name='ID', serialize=False, - auto_created=True, primary_key=True)), - ('name', models.CharField( - unique=True, max_length=200, verbose_name='name')), - ], - options={ - 'db_table': 'djkombu_queue', - 'verbose_name': 'queue', - 'verbose_name_plural': 'queues', - }, - ), - migrations.AddField( - model_name='message', - name='queue', - field=models.ForeignKey( - related_name='messages', to='kombu_transport_django.Queue'), - ), - ] diff --git a/kombu/transport/django/migrations/__init__.py b/kombu/transport/django/migrations/__init__.py deleted file mode 100644 index 8d13bbf6d..000000000 --- a/kombu/transport/django/migrations/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -from __future__ import absolute_import, unicode_literals - -SOUTH_ERROR_MESSAGE = """ -For South support, customize the SOUTH_MIGRATION_MODULES setting -to point to the correct migrations module: - - SOUTH_MIGRATION_MODULES = { - 'kombu_transport_django': 'kombu.transport.django.south_migrations', - } -""" - -try: - from django.db import migrations # noqa -except ImportError: - from django.core.exceptions import ImproperlyConfigured - raise ImproperlyConfigured(SOUTH_ERROR_MESSAGE) diff --git a/kombu/transport/django/models.py b/kombu/transport/django/models.py deleted file mode 100644 index d52d2d80b..000000000 --- a/kombu/transport/django/models.py +++ /dev/null @@ -1,38 +0,0 @@ -from __future__ import absolute_import, unicode_literals - -import django - -from django.db import models -from django.utils.translation import ugettext_lazy as _ - -from .managers import QueueManager, MessageManager - - -class Queue(models.Model): - name = models.CharField(_('name'), max_length=200, unique=True) - - objects = QueueManager() - - class Meta: - if django.VERSION >= (1, 7): - app_label = 'kombu_transport_django' - db_table = 'djkombu_queue' - verbose_name = _('queue') - verbose_name_plural = _('queues') - - -class Message(models.Model): - visible = models.BooleanField(default=True, db_index=True) - sent_at = models.DateTimeField(null=True, blank=True, db_index=True, - auto_now_add=True) - payload = models.TextField(_('payload'), null=False) - queue = models.ForeignKey(Queue, related_name='messages') - - objects = MessageManager() - - class Meta: - if django.VERSION >= (1, 7): - app_label = 'kombu_transport_django' - db_table = 'djkombu_message' - verbose_name = _('message') - verbose_name_plural = _('messages') diff --git a/kombu/transport/django/south_migrations/0001_initial.py b/kombu/transport/django/south_migrations/0001_initial.py deleted file mode 100644 index 074640d92..000000000 --- a/kombu/transport/django/south_migrations/0001_initial.py +++ /dev/null @@ -1,57 +0,0 @@ -# encoding: utf-8 -from __future__ import absolute_import, unicode_literals - -# flake8: noqa -import datetime -from south.db import db -from south.v2 import SchemaMigration -from django.db import models - -class Migration(SchemaMigration): - - def forwards(self, orm): - - # Adding model 'Queue' - db.create_table('djkombu_queue', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=200)), - )) - db.send_create_signal('django', ['Queue']) - - # Adding model 'Message' - db.create_table('djkombu_message', ( - ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), - ('visible', self.gf('django.db.models.fields.BooleanField')(default=True, db_index=True)), - ('sent_at', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, null=True, db_index=True, blank=True)), - ('payload', self.gf('django.db.models.fields.TextField')()), - ('queue', self.gf('django.db.models.fields.related.ForeignKey')(related_name='messages', to=orm['django.Queue'])), - )) - db.send_create_signal('django', ['Message']) - - - def backwards(self, orm): - - # Deleting model 'Queue' - db.delete_table('djkombu_queue') - - # Deleting model 'Message' - db.delete_table('djkombu_message') - - - models = { - 'django.message': { - 'Meta': {'object_name': 'Message', 'db_table': "'djkombu_message'"}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'payload': ('django.db.models.fields.TextField', [], {}), - 'queue': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'messages'", 'to': "orm['django.Queue']"}), - 'sent_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), - 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}) - }, - 'django.queue': { - 'Meta': {'object_name': 'Queue', 'db_table': "'djkombu_queue'"}, - 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), - 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '200'}) - } - } - - complete_apps = ['django'] diff --git a/kombu/transport/django/south_migrations/__init__.py b/kombu/transport/django/south_migrations/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/requirements/docs.txt b/requirements/docs.txt index 1984cc8b4..3bc702861 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -1,4 +1,3 @@ sphinx_celery>=1.1 -Django librabbitmq -r extras/mongodb.txt diff --git a/requirements/funtest.txt b/requirements/funtest.txt index 48a5ec13d..6d2427dfd 100644 --- a/requirements/funtest.txt +++ b/requirements/funtest.txt @@ -13,10 +13,6 @@ beanstalkc # Zookeeper transport kazoo -# Django ORM transport -Django -django-kombu - # SQS transport boto