Source code for vdat.database.base

# Virus Data Analysis Tool: a data reduction GUI for HETDEX/VIRUS data
# Copyright (C) 2015, 2016, 2018  "The HETDEX collaboration"
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
"""Base definitions common to all the other modules in the subpackage
"""
from __future__ import (absolute_import, division, print_function,
                        unicode_literals)

import peewee
from playhouse.shortcuts import model_to_dict

# create the database
database = peewee.SqliteDatabase(None)
# , threadlocals=True)


[docs]class VDATDBError(Exception): '''Base exceptions for database errors''' pass
# base model connecting with the database
[docs]class VDATModels(peewee.Model): """Base class for linking models with the VDAT database""" class Meta: database = database @property def data(self): """Expose the full internal data of the model Returns ------- dict dictionary of data """ return model_to_dict(self) @property def data_noid(self): """Expose the internal data of the model excluding the id Returns ------- dict dictionary of data """ return model_to_dict(self, exclude=[getattr(self.__class__, 'id'), ]) @property def data_clean(self): """Expose the internal data of the model without the id and without recursing the foreign keywords Returns ------- dict dictionary of data """ return model_to_dict(self, recurse=False, exclude=[getattr(self.__class__, 'id'), ])