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'), ])