Skip to content

Commit

Permalink
add changes for unit and (unit)domainelement
Browse files Browse the repository at this point in the history
  • Loading branch information
xflr6 committed Dec 12, 2017
1 parent 87f74c2 commit 7641e19
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 15 deletions.
7 changes: 4 additions & 3 deletions clld/db/models/parameter.py
Expand Up @@ -41,10 +41,11 @@ class DomainElement(Base,
"""DomainElements can be used to model controlled lists of values for a Parameter."""

__table_args__ = (
UniqueConstraint('name', 'parameter_pk'),
UniqueConstraint('number', 'parameter_pk'))
UniqueConstraint('parameter_pk', 'name'),
UniqueConstraint('parameter_pk', 'number'),
)

parameter_pk = Column(Integer, ForeignKey('parameter.pk'))
parameter_pk = Column(Integer, ForeignKey('parameter.pk'), nullable=False)

number = Column(Integer, doc='numerical value of the domain element')
"""the number is used to sort domain elements within the domain of one parameter"""
Expand Down
9 changes: 5 additions & 4 deletions clld/db/models/unit.py
@@ -1,6 +1,6 @@
from __future__ import unicode_literals, print_function, division, absolute_import

from sqlalchemy import Column, Integer, ForeignKey
from sqlalchemy import Column, Integer, ForeignKey, UniqueConstraint
from sqlalchemy.orm import relationship

from zope.interface import implementer
Expand Down Expand Up @@ -32,11 +32,12 @@ class Unit(Base,
IdNameDescriptionMixin,
HasDataMixin,
HasFilesMixin):

"""A linguistic unit of a language."""

language_pk = Column(Integer, ForeignKey('language.pk'))
language = relationship(Language)
__table_args__ = (UniqueConstraint('language_pk', 'id'),)

language_pk = Column(Integer, ForeignKey('language.pk'), nullable=False)
language = relationship(Language, innerjoin=True)

def __solr__(self, req):
return _add_solr_language_info(Base.__solr__(self, req), self)
9 changes: 7 additions & 2 deletions clld/db/models/unitparameter.py
@@ -1,6 +1,6 @@
from __future__ import unicode_literals, print_function, division, absolute_import

from sqlalchemy import Column, Integer, ForeignKey
from sqlalchemy import Column, Integer, ForeignKey, UniqueConstraint
from sqlalchemy.orm import relationship

from zope.interface import implementer
Expand Down Expand Up @@ -32,7 +32,12 @@ class UnitDomainElement(Base,

"""Domain element for the domain of a UnitParameter."""

unitparameter_pk = Column(Integer, ForeignKey('unitparameter.pk'))
__table_args__ = (
UniqueConstraint('unitparameter_pk', 'name'),
UniqueConstraint('unitparameter_pk', 'ord'),
)

unitparameter_pk = Column(Integer, ForeignKey('unitparameter.pk'), nullable=False)
ord = Column(Integer)

def url(self, request):
Expand Down
@@ -1,9 +1,4 @@
# update_assoc_tables.py - adapt unique and nullable

# TODO: DomainElement: reverse UNIQUE(name, parameter_pk)?, parameter_pk NOT NULL?
# TODO: LanguageSource: orm.relationships missing?
# TODO: Unit: language_pk NOT_NULL, innerjoin=True?
# TODO: UnitDomainElement: add UNIQUE(unitparameter_pk, name)?, unitparameter_pk NOT NULL?
# update_unique_null.py - adapt composite unique constraints and nullables

from __future__ import unicode_literals

Expand All @@ -30,6 +25,12 @@
('contributionreference',
['contribution_pk', 'source_pk', 'description'],
['description']),
('domainelement',
['parameter_pk', 'name'],
['name']),
('domainelement',
['parameter_pk', 'number'],
['number']),
('editor',
['dataset_pk', 'contributor_pk'], []),
('languageidentifier',
Expand All @@ -39,6 +40,15 @@
('sentencereference',
['sentence_pk', 'source_pk', 'description'],
['description']),
('unit',
['language_pk', 'id'], # FIXME: or rather name?
['id']),
('unitdomainelement',
['unitparameter_pk', 'name'],
['name']),
('unitdomainelement',
['unitparameter_pk', 'ord'],
['ord']),
('unitvalue', # NOTE: <unit, unitparameter, contribution> can have multiple values and also multiple unitdomainelements
['unit_pk', 'unitparameter_pk', 'contribution_pk', 'name', 'unitdomainelement_pk'],
['contribution_pk', 'name', 'unitdomainelement_pk']),
Expand Down

0 comments on commit 7641e19

Please sign in to comment.