Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[QOLDEV-1011] update database setup to handle SQLAlchemy 2.0 #111

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 50 additions & 50 deletions ckanext/datarequests/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,64 @@
import logging

from ckan import model
from ckan.model.meta import mapper, metadata
from ckan.model.meta import metadata
from ckanext.datarequests import constants

from sqlalchemy import func, DDL
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.sql.expression import or_

from . import common

log = logging.getLogger(__name__)

Base = declarative_base(metadata=metadata)


def uuid4():
return str(uuid.uuid4())


class DataRequest(model.DomainObject):
closing_circumstances_enabled = common.get_config_bool_value('ckan.datarequests.enable_closing_circumstances', False)

datarequests_table = sa.Table('datarequests', metadata,
sa.Column('user_id', sa.types.UnicodeText, primary_key=False, default=u''),
sa.Column('id', sa.types.UnicodeText, primary_key=True, default=uuid4),
sa.Column('title', sa.types.Unicode(constants.NAME_MAX_LENGTH), primary_key=True, default=u''),
sa.Column('description', sa.types.Unicode(constants.DESCRIPTION_MAX_LENGTH), primary_key=False, default=u''),
sa.Column('organization_id', sa.types.UnicodeText, primary_key=False, default=None),
sa.Column('open_time', sa.types.DateTime, primary_key=False, default=None),
sa.Column('accepted_dataset_id', sa.types.UnicodeText, primary_key=False, default=None),
sa.Column('close_time', sa.types.DateTime, primary_key=False, default=None),
sa.Column('closed', sa.types.Boolean, primary_key=False, default=False),
sa.Column('close_circumstance', sa.types.Unicode(constants.CLOSE_CIRCUMSTANCE_MAX_LENGTH), primary_key=False, default=u'')
if closing_circumstances_enabled else None,
sa.Column('approx_publishing_date', sa.types.DateTime, primary_key=False, default=None)
if closing_circumstances_enabled else None,
extend_existing=True,
)

comments_table = sa.Table('datarequests_comments', metadata,
sa.Column('id', sa.types.UnicodeText, primary_key=True, default=uuid4),
sa.Column('user_id', sa.types.UnicodeText, primary_key=False, default=u''),
sa.Column('datarequest_id', sa.types.UnicodeText, primary_key=True, default=uuid4),
sa.Column('time', sa.types.DateTime, primary_key=True, default=u''),
sa.Column('comment', sa.types.Unicode(constants.COMMENT_MAX_LENGTH), primary_key=False, default=u''),
extend_existing=True
)

followers_table = sa.Table('datarequests_followers', metadata,
sa.Column('id', sa.types.UnicodeText, primary_key=True, default=uuid4),
sa.Column('user_id', sa.types.UnicodeText, primary_key=False, default=u''),
sa.Column('datarequest_id', sa.types.UnicodeText, primary_key=True, default=uuid4),
sa.Column('time', sa.types.DateTime, primary_key=True, default=u''),
extend_existing=True
)


class DataRequest(model.DomainObject, Base):

__table__ = datarequests_table

@classmethod
def get(cls, **kw):
Expand Down Expand Up @@ -81,7 +123,9 @@ def get_open_datarequests_number(cls):
return model.Session.query(func.count(cls.id)).filter_by(closed=False).scalar()


class Comment(model.DomainObject):
class Comment(model.DomainObject, Base):

__table__ = comments_table

@classmethod
def get(cls, **kw):
Expand All @@ -104,7 +148,9 @@ def get_comment_datarequests_number(cls, **kw):
return model.Session.query(func.count(cls.id)).filter_by(**kw).scalar()


class DataRequestFollower(model.DomainObject):
class DataRequestFollower(model.DomainObject, Base):

__table__ = followers_table

@classmethod
def get(cls, **kw):
Expand All @@ -120,52 +166,6 @@ def get_datarequest_followers_number(cls, **kw):
return model.Session.query(func.count(cls.id)).filter_by(**kw).scalar()


closing_circumstances_enabled = common.get_config_bool_value('ckan.datarequests.enable_closing_circumstances', False)

# FIXME: References to the other tables...
datarequests_table = sa.Table('datarequests', metadata,
sa.Column('user_id', sa.types.UnicodeText, primary_key=False, default=u''),
sa.Column('id', sa.types.UnicodeText, primary_key=True, default=uuid4),
sa.Column('title', sa.types.Unicode(constants.NAME_MAX_LENGTH), primary_key=True, default=u''),
sa.Column('description', sa.types.Unicode(constants.DESCRIPTION_MAX_LENGTH), primary_key=False, default=u''),
sa.Column('organization_id', sa.types.UnicodeText, primary_key=False, default=None),
sa.Column('open_time', sa.types.DateTime, primary_key=False, default=None),
sa.Column('accepted_dataset_id', sa.types.UnicodeText, primary_key=False, default=None),
sa.Column('close_time', sa.types.DateTime, primary_key=False, default=None),
sa.Column('closed', sa.types.Boolean, primary_key=False, default=False),
sa.Column('close_circumstance', sa.types.Unicode(constants.CLOSE_CIRCUMSTANCE_MAX_LENGTH), primary_key=False, default=u'')
if closing_circumstances_enabled else None,
sa.Column('approx_publishing_date', sa.types.DateTime, primary_key=False, default=None)
if closing_circumstances_enabled else None,
extend_existing=True,
)

mapper(DataRequest, datarequests_table)

# FIXME: References to the other tables...
comments_table = sa.Table('datarequests_comments', metadata,
sa.Column('id', sa.types.UnicodeText, primary_key=True, default=uuid4),
sa.Column('user_id', sa.types.UnicodeText, primary_key=False, default=u''),
sa.Column('datarequest_id', sa.types.UnicodeText, primary_key=True, default=uuid4),
sa.Column('time', sa.types.DateTime, primary_key=True, default=u''),
sa.Column('comment', sa.types.Unicode(constants.COMMENT_MAX_LENGTH), primary_key=False, default=u''),
extend_existing=True
)

mapper(Comment, comments_table,)

# FIXME: References to the other tables...
followers_table = sa.Table('datarequests_followers', metadata,
sa.Column('id', sa.types.UnicodeText, primary_key=True, default=uuid4),
sa.Column('user_id', sa.types.UnicodeText, primary_key=False, default=u''),
sa.Column('datarequest_id', sa.types.UnicodeText, primary_key=True, default=uuid4),
sa.Column('time', sa.types.DateTime, primary_key=True, default=u''),
extend_existing=True
)

mapper(DataRequestFollower, followers_table,)


def init_db(deprecated_model=None):

metadata.create_all(model.meta.engine)
Expand Down
Loading