diff --git a/docs/changelog.rst b/docs/changelog.rst index 01ebe81..3935cb1 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,6 +1,10 @@ Changelog ========= +* :release:`0.2.0 <2014-12-29>` +* :feature:`-` add task :py:func:`osusers.tasks.delete_ldap_group` +* :support:`-` use celery routers from gvacommon + * :release:`0.1.3 <2014-12-26>` * :support:`-` add celery routing for file server tasks diff --git a/docs/conf.py b/docs/conf.py index 0e168f4..a02f850 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -14,6 +14,7 @@ import sys import os +import django # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the @@ -23,6 +24,8 @@ sys.path.insert(0, os.path.abspath(os.path.join('..', 'gvaldap'))) os.environ['GVALDAP_ALLOWED_HOSTS'] = 'localhost' os.environ['GVALDAP_SERVER_EMAIL'] = 'root@localhost' +django.setup() + # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. @@ -57,9 +60,9 @@ copyright = u'2014, Jan Dittberner' # built documents. # # The short X.Y version. -version = '0.1.3' +version = '0.2' # The full version, including alpha/beta/rc tags. -release = '0.1.3' +release = '0.2.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/gvaldap/gvacommon/.gitignore b/gvaldap/gvacommon/.gitignore new file mode 100644 index 0000000..3bb2efd --- /dev/null +++ b/gvaldap/gvacommon/.gitignore @@ -0,0 +1,2 @@ +.*.swp +*.pyc diff --git a/gvaldap/gvacommon/__init__.py b/gvaldap/gvacommon/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/gvaldap/gvacommon/celeryrouters.py b/gvaldap/gvacommon/celeryrouters.py new file mode 100644 index 0000000..e468813 --- /dev/null +++ b/gvaldap/gvacommon/celeryrouters.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + + +class LdapRouter(object): + + def route_for_task(self, task, args=None, kwargs=None): + if 'ldap' in task: + return {'exchange': 'ldap', + 'exchange_type': 'direct', + 'queue': 'ldap'} + return None + + +class FileRouter(object): + + def route_for_task(self, task, args=None, kwargs=None): + if 'file' in task: + return {'exchange': 'file', + 'exchange_type': 'direct', + 'queue': 'file'} + return None + + diff --git a/gvaldap/gvaldap/settings/base.py b/gvaldap/gvaldap/settings/base.py index d115c34..de70798 100644 --- a/gvaldap/gvaldap/settings/base.py +++ b/gvaldap/gvaldap/settings/base.py @@ -291,10 +291,12 @@ CELERY_RESULT_BACKEND = 'amqp' CELERY_RESULT_PERSISTENT = True CELERY_TASK_RESULT_EXPIRES = None CELERY_ROUTES = ( - 'osusers.tasks.LdapRouter', - 'osusers.tasks.FileRouter', + 'gvacommon.celeryrouters.LdapRouter', + 'gvacommon.celeryrouters.FileRouter', ) -CELERY_ACCEPT_CONTENT = ['pickle', 'yaml', 'json'] +CELERY_TIMEZONE = 'Europe/Berlin' +CELERY_ENABLE_UTC = True +CELERY_ACCEPT_CONTENT = ['json'] CELERY_TASK_SERAILIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' ########## END CELERY CONFIGURATION diff --git a/gvaldap/osusers/tasks.py b/gvaldap/osusers/tasks.py index 29e07e3..1bd5c75 100644 --- a/gvaldap/osusers/tasks.py +++ b/gvaldap/osusers/tasks.py @@ -21,26 +21,6 @@ from ldapentities.models import ( _logger = get_task_logger(__name__) -class LdapRouter(object): - - def route_for_task(self, task, args=None, kwargs=None): - if 'ldap' in task: - return {'exchange': 'ldap', - 'exchange_type': 'direct', - 'queue': 'ldap'} - return None - - -class FileRouter(object): - - def route_for_task(self, task, args=None, kwargs=None): - if 'file' in task: - return {'exchange': 'file', - 'exchange_type': 'direct', - 'queue': 'file'} - return None - - @shared_task def create_ldap_group(groupname, gid, descr): """ @@ -237,3 +217,25 @@ def delete_ldap_group_if_empty(groupname): ldapgroup.dn, len(ldapgroup.members)) ) return False + + +@shared_task +def delete_ldap_group(groupname): + """ + This taks deletes the given group. + + :param str groupname: the group name + :return: True if the user has been deleted, False otherwise + :rtype: boolean + + """ + try: + ldapgroup = LdapGroup.objects.get(name=groupname) + except LdapGroup.DoesNotExist: + _logger.info('ldap group with name {0} does not exist'.format( + groupname) + ) + else: + ldapgroup.delete() + return True + return False