from .models_core import Timeseries from .models_role import TimeseriesRole, timeseries_timeseries_roles_table from .models_annotation import TimeseriesAnnotation, timeseries_timeseries_annotations_table from .models_programme import TimeseriesProgramme from .models_changelog import TimeseriesChangelog from toardb.base import Base from sqlalchemy import Table, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base # controlled vocabulary # Data Access Rights DA_enum_table = Table("da_vocabulary", Base.metadata, Column("enum_val", Integer, primary_key=True), Column("enum_str", String), Column("enum_display_str", String) ) # The following code is just a workaround (see stationmeta/models.py): from collections import namedtuple Enumdict=namedtuple("Dict",["value","string","display_str"]) DA_enum = ( Enumdict(0, 'ByAttribution', 'by attribution'), Enumdict(1, 'ShareAlike', 'share alike'), Enumdict(2, 'Restricted', 'restricted') ) # Sampling Frequencies SF_enum_table = Table("sf_vocabulary", Base.metadata, Column("enum_val", Integer, primary_key=True), Column("enum_str", String), Column("enum_display_str", String) ) # The following code is just a workaround (see stationmeta/models.py): SF_enum = ( Enumdict(0, 'Hourly', 'hourly'), Enumdict(1, 'ThreeHourly', '3-hourly'), Enumdict(2, 'SixHourly', '6-hourly'), Enumdict(3, 'Daily', 'daily'), Enumdict(4, 'Weekly', 'weekly'), Enumdict(5, 'Monthly', 'monthly'), Enumdict(6, 'Yearly', 'yearly'), Enumdict(7, 'Irregular', 'irregular data samples of constant length'), Enumdict(8, 'Irregular2', 'irregular data samples of varying length') ) # Aggregation Types AT_enum_table = Table("at_vocabulary", Base.metadata, Column("enum_val", Integer, primary_key=True), Column("enum_str", String), Column("enum_display_str", String) ) # The following code is just a workaround (see stationmeta/models.py): AT_enum = ( Enumdict(0, 'Mean', 'mean'), Enumdict(1, 'Mean1Of2', 'mean of two values'), Enumdict(2, 'Mean1OfWeek', 'weekly mean'), Enumdict(3, 'Mean4Samples', 'mean out of 4 samples'), Enumdict(4, 'MeanMonth', 'monthly mean'), Enumdict(5, 'None', 'none'), Enumdict(6, 'Unknown', 'unknown') ) # Data Sources DS_enum_table = Table("ds_vocabulary", Base.metadata, Column("enum_val", Integer, primary_key=True), Column("enum_str", String), Column("enum_display_str", String) ) # The following code is just a workaround (see stationmeta/models.py): DS_enum = ( Enumdict(0, 'Model', 'model'), Enumdict(1, 'Measurement', 'measurement') ) # Measurement Methods MM_enum_table = Table("mm_vocabulary", Base.metadata, Column("enum_val", Integer, primary_key=True), Column("enum_str", String), Column("enum_display_str", String) ) # The following code is just a workaround (see stationmeta/models.py): MM_enum = ( Enumdict(0, 'UVAbsorption', 'UV absorption'), Enumdict(1, 'UnknownInstrument', 'unknown instrument') )