Refactor module structure
Move pgsqltasks to top level to keep the task names when using Python 3
This commit is contained in:
parent
acf2b171a9
commit
68f0834954
12 changed files with 67 additions and 84 deletions
|
@ -1,6 +1,8 @@
|
|||
Changelog
|
||||
=========
|
||||
|
||||
* :support:`-` move pgsqltasks to top level to keep the task names when
|
||||
using Python 3
|
||||
* :support:`-` use Pipenv for dependency management
|
||||
|
||||
* :release:`0.2.0 <2018-11-21>`
|
||||
|
|
|
@ -7,30 +7,24 @@ gvapgsql is implemented as `Celery`_ app.
|
|||
.. _Celery: http://www.celeryproject.org/
|
||||
|
||||
|
||||
The project module :py:mod:`gvapgsql`
|
||||
=====================================
|
||||
|
||||
.. automodule:: gvapgsql
|
||||
|
||||
|
||||
:py:mod:`gvapgsql.celery`
|
||||
-------------------------
|
||||
|
||||
.. automodule:: gvapgsql.celery
|
||||
:members:
|
||||
|
||||
|
||||
:py:mod:`gvapgsql.settings`
|
||||
---------------------------
|
||||
|
||||
.. automodule:: gvapgsql.settings
|
||||
|
||||
|
||||
:py:mod:`pgsqltasks` app
|
||||
========================
|
||||
|
||||
:py:mod:`pgsqltasks.celery`
|
||||
---------------------------
|
||||
|
||||
.. automodule:: pgsqltasks
|
||||
|
||||
.. automodule:: pgsqltasks.celery
|
||||
:members:
|
||||
|
||||
|
||||
:py:mod:`pgsqltasks.settings`
|
||||
-----------------------------
|
||||
|
||||
.. automodule:: pgsqltasks.settings
|
||||
|
||||
|
||||
:py:mod:`pgsqltasks.tasks`
|
||||
--------------------------
|
||||
|
||||
|
|
21
docs/conf.py
21
docs/conf.py
|
@ -1,7 +1,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# pymode:lint_ignore=E501
|
||||
#
|
||||
# gvamysql documentation build configuration file, created by
|
||||
# gvapgsql documentation build configuration file, created by
|
||||
# sphinx-quickstart on Sun Feb 17 11:46:20 2013.
|
||||
#
|
||||
# This file is execfile()d with the current directory set to its containing dir.
|
||||
|
@ -35,13 +35,13 @@ os.environ['GVAPGSQL_DBADMIN_PASSWORD'] = 'gvapgsql'
|
|||
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
||||
extensions = ['releases', 'sphinx.ext.autodoc', 'celery.contrib.sphinx']
|
||||
|
||||
# configuration for releases extension
|
||||
releases_issue_uri = 'https://git.dittberner.info/gnuviech/gvapgsql/issues/%s'
|
||||
releases_release_uri = 'https://git.dittberner.info/gnuviech/gvapgsql/stc/tag/%s'
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
releases_issue_uri = 'https://dev.gnuviech-server.de/gvapgsql/ticket/%s'
|
||||
|
||||
releases_release_uri = 'https://dev.gnuviech-server.de/gvapgsql/milestone/%s'
|
||||
|
||||
# The suffix of source filenames.
|
||||
source_suffix = '.rst'
|
||||
|
||||
|
@ -53,16 +53,17 @@ master_doc = 'index'
|
|||
|
||||
# General information about the project.
|
||||
project = u'gvapgsql'
|
||||
copyright = u'2015-2018 Jan Dittberner'
|
||||
copyright = u'2015-2020 Jan Dittberner'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '0.2'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '0.2.0'
|
||||
from pgsqltasks import __version__ as release
|
||||
|
||||
# The short X.Y version.
|
||||
version = ".".join(release.split('.')[:2])
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
@ -103,7 +104,7 @@ pygments_style = 'sphinx'
|
|||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
html_theme = 'default'
|
||||
html_theme = 'alabaster'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
|
|
3
gvapgsql/gvacommon/.gitignore
vendored
3
gvapgsql/gvacommon/.gitignore
vendored
|
@ -1,3 +0,0 @@
|
|||
.*.swp
|
||||
*.pyc
|
||||
.ropeproject/
|
|
@ -3,13 +3,8 @@ from __future__ import unicode_literals
|
|||
|
||||
|
||||
class GvaRouter(object):
|
||||
|
||||
def route_for_task(self, task, args=None, kwargs=None):
|
||||
for route in ['ldap', 'file', 'mysql', 'pgsql']:
|
||||
for route in ["ldap", "file", "mysql", "pgsql"]:
|
||||
if route in task:
|
||||
return {
|
||||
'exchange': route,
|
||||
'exchange_type': 'direct',
|
||||
'queue': route,
|
||||
}
|
||||
return {"exchange": route, "exchange_type": "direct", "queue": route}
|
||||
return None
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
"""
|
||||
This module defines the Celery_ app for gvapgsql.
|
||||
|
||||
.. _Celery: http://www.celeryproject.org/
|
||||
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
from celery import Celery
|
||||
|
||||
#: The Celery application
|
||||
app = Celery('gvapgsql')
|
||||
|
||||
app.config_from_object('gvapgsql.settings')
|
||||
app.autodiscover_tasks(['pgsqltasks'], force=True)
|
|
@ -2,3 +2,9 @@
|
|||
This module contains :py:mod:`pgsqltasks.tasks`.
|
||||
|
||||
"""
|
||||
|
||||
__version__ = "0.3.0"
|
||||
|
||||
from pgsqltasks.celery import app as celery_app
|
||||
|
||||
__all__ = ("celery_app",)
|
||||
|
|
13
gvapgsql/pgsqltasks/celery.py
Normal file
13
gvapgsql/pgsqltasks/celery.py
Normal file
|
@ -0,0 +1,13 @@
|
|||
"""
|
||||
This module defines the Celery_ app for gvapgsql.
|
||||
|
||||
.. _Celery: http://www.celeryproject.org/
|
||||
|
||||
"""
|
||||
from celery import Celery
|
||||
|
||||
#: The Celery application
|
||||
app = Celery("pgsqltasks")
|
||||
|
||||
app.config_from_object("pgsqltasks.settings")
|
||||
app.autodiscover_tasks(["pgsqltasks.tasks"], force=True)
|
|
@ -1,4 +0,0 @@
|
|||
"""
|
||||
Empty models to make Django accept pgsqltasks as an app.
|
||||
|
||||
"""
|
|
@ -25,23 +25,21 @@ def get_env_setting(setting):
|
|||
|
||||
|
||||
########## CELERY CONFIGURATION
|
||||
CELERY_TIMEZONE = 'Europe/Berlin'
|
||||
CELERY_ENABLE_UTC = True
|
||||
CELERY_RESULT_BACKEND = 'amqp'
|
||||
CELERY_RESULT_PERSISTENT = True
|
||||
CELERY_BROKER_URL = get_env_setting("GVAPGSQL_BROKER_URL")
|
||||
CELERY_RESULT_BACKEND = get_env_setting("GVAPGSQL_RESULTS_REDIS_URL")
|
||||
CELERY_TASK_RESULT_EXPIRES = None
|
||||
CELERY_ROUTES = (
|
||||
'gvacommon.celeryrouters.GvaRouter',
|
||||
)
|
||||
CELERY_ACCEPT_CONTENT = ['json']
|
||||
CELERY_TASK_SERIALIZER = 'json'
|
||||
CELERY_RESULT_SERIALIZER = 'json'
|
||||
BROKER_URL = get_env_setting('GVAPGSQL_BROKER_URL')
|
||||
CELERY_ROUTES = ("gvacommon.celeryrouters.GvaRouter",)
|
||||
CELERY_TIMEZONE = "Europe/Berlin"
|
||||
CELERY_ENABLE_UTC = True
|
||||
CELERY_RESULT_PERSISTENT = True
|
||||
CELERY_ACCEPT_CONTENT = ["json"]
|
||||
CELERY_TASK_SERIALIZER = "json"
|
||||
CELERY_RESULT_SERIALIZER = "json"
|
||||
########## END CELERY CONFIGURATION
|
||||
|
||||
########## GVAPGSQL CONFIGURATION
|
||||
GVAPGSQL_DBADMIN_HOST = get_env_setting('GVAPGSQL_DBADMIN_HOST')
|
||||
GVAPGSQL_DBADMIN_PORT = int(get_env_setting('GVAPGSQL_DBADMIN_PORT'))
|
||||
GVAPGSQL_DBADMIN_USER = get_env_setting('GVAPGSQL_DBADMIN_USER')
|
||||
GVAPGSQL_DBADMIN_PASSWORD = get_env_setting('GVAPGSQL_DBADMIN_PASSWORD')
|
||||
GVAPGSQL_DBADMIN_HOST = get_env_setting("GVAPGSQL_DBADMIN_HOST")
|
||||
GVAPGSQL_DBADMIN_PORT = int(get_env_setting("GVAPGSQL_DBADMIN_PORT"))
|
||||
GVAPGSQL_DBADMIN_USER = get_env_setting("GVAPGSQL_DBADMIN_USER")
|
||||
GVAPGSQL_DBADMIN_PASSWORD = get_env_setting("GVAPGSQL_DBADMIN_PASSWORD")
|
||||
########## END GVAPGSQL CONFIGURATION
|
|
@ -2,15 +2,12 @@
|
|||
This module defines Celery_ tasks to manage PostgreSQL users and databases.
|
||||
|
||||
"""
|
||||
from __future__ import absolute_import
|
||||
|
||||
from celery import shared_task
|
||||
from celery.utils.log import get_task_logger
|
||||
|
||||
from gvapgsql import settings
|
||||
from psycopg2 import connect
|
||||
from psycopg2.extensions import ISQLQuote
|
||||
|
||||
from pgsqltasks import settings
|
||||
|
||||
_LOGGER = get_task_logger(__name__)
|
||||
|
||||
|
@ -56,7 +53,7 @@ def _get_connection():
|
|||
port=settings.GVAPGSQL_DBADMIN_PORT,
|
||||
user=settings.GVAPGSQL_DBADMIN_USER,
|
||||
password=settings.GVAPGSQL_DBADMIN_PASSWORD,
|
||||
database='postgres',
|
||||
database="postgres",
|
||||
)
|
||||
|
||||
|
||||
|
@ -77,11 +74,10 @@ def create_pgsql_user(username, password):
|
|||
"""
|
||||
CREATE USER %(username)s WITH PASSWORD %(password)s
|
||||
""",
|
||||
{'username': Ident(username), 'password': password}
|
||||
{"username": Ident(username), "password": password},
|
||||
)
|
||||
|
||||
|
||||
|
||||
@shared_task
|
||||
def set_pgsql_userpassword(username, password):
|
||||
"""
|
||||
|
@ -99,7 +95,7 @@ def set_pgsql_userpassword(username, password):
|
|||
"""
|
||||
ALTER ROLE %(username)s WITH PASSWORD %(password)s
|
||||
""",
|
||||
{'username': Ident(username), 'password': password}
|
||||
{"username": Ident(username), "password": password},
|
||||
)
|
||||
|
||||
|
||||
|
@ -119,7 +115,7 @@ def delete_pgsql_user(username):
|
|||
"""
|
||||
DROP ROLE %(username)s
|
||||
""",
|
||||
{'username': Ident(username)}
|
||||
{"username": Ident(username)},
|
||||
)
|
||||
|
||||
|
||||
|
@ -142,7 +138,7 @@ def create_pgsql_database(dbname, username):
|
|||
CREATE DATABASE %(dbname)s OWNER %(username)s
|
||||
TEMPLATE template0 ENCODING 'UTF8'
|
||||
""",
|
||||
{'dbname': Ident(dbname), 'username': Ident(username)}
|
||||
{"dbname": Ident(dbname), "username": Ident(username)},
|
||||
)
|
||||
|
||||
|
||||
|
@ -163,5 +159,5 @@ def delete_pgsql_database(dbname):
|
|||
"""
|
||||
DROP DATABASE %(dbname)s
|
||||
""",
|
||||
{'dbname': Ident(dbname)}
|
||||
{"dbname": Ident(dbname)},
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue