Add Client.archived
flag, ignore archived for "disabled probes" check
this lets us keep old client config around without deleting it, but it should not interfere with other logic etc.
This commit is contained in:
parent
018a9dcb08
commit
152ea26c02
|
@ -0,0 +1,36 @@
|
||||||
|
# -*- coding: utf-8; -*-
|
||||||
|
"""add client.archived
|
||||||
|
|
||||||
|
Revision ID: e9eb7fc0a451
|
||||||
|
Revises: 75c09e11543c
|
||||||
|
Create Date: 2018-09-28 12:12:19.813042
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import unicode_literals, absolute_import
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = 'e9eb7fc0a451'
|
||||||
|
down_revision = u'75c09e11543c'
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
import rattail.db.types
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
|
||||||
|
# client
|
||||||
|
op.add_column('client', sa.Column('archived', sa.Boolean(), nullable=True))
|
||||||
|
client = sa.sql.table('client', sa.sql.column('archived'))
|
||||||
|
op.execute(client.update().values({'archived': False}))
|
||||||
|
op.alter_column('client', 'archived', nullable=False)
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
|
||||||
|
# client
|
||||||
|
op.drop_column('client', 'archived')
|
|
@ -63,6 +63,14 @@ class Client(Base):
|
||||||
enabled = sa.Column(sa.Boolean(), nullable=False, default=False)
|
enabled = sa.Column(sa.Boolean(), nullable=False, default=False)
|
||||||
online = sa.Column(sa.Boolean(), nullable=False, default=False)
|
online = sa.Column(sa.Boolean(), nullable=False, default=False)
|
||||||
|
|
||||||
|
archived = sa.Column(sa.Boolean(), nullable=False, default=False, doc="""
|
||||||
|
Flag indicating this client is "archived". This typically means that the
|
||||||
|
client itself no longer exists etc. but that the configuration for it
|
||||||
|
should be retained, e.g. to be used as a reference later etc. Note that
|
||||||
|
"archiving" a client is different from "disabling" it; the latter being
|
||||||
|
more temporary.
|
||||||
|
""")
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return '{} ({})'.format(self.config_key, self.hostname)
|
return '{} ({})'.format(self.config_key, self.hostname)
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Rattail -- Retail Software Framework
|
# Rattail -- Retail Software Framework
|
||||||
# Copyright © 2010-2017 Lance Edgar
|
# Copyright © 2010-2018 Lance Edgar
|
||||||
#
|
#
|
||||||
# This file is part of Rattail.
|
# This file is part of Rattail.
|
||||||
#
|
#
|
||||||
|
@ -32,14 +32,16 @@ from rattail_tempmon.db import Session as TempmonSession, model as tempmon
|
||||||
|
|
||||||
def disabled_probes(config, progress=None):
|
def disabled_probes(config, progress=None):
|
||||||
"""
|
"""
|
||||||
Notifies if any Tempmon client devices or probes are disabled.
|
Notifies if any (non-archived) Tempmon client devices or probes are disabled.
|
||||||
"""
|
"""
|
||||||
tempmon_session = TempmonSession()
|
tempmon_session = TempmonSession()
|
||||||
clients = tempmon_session.query(tempmon.Client)\
|
clients = tempmon_session.query(tempmon.Client)\
|
||||||
|
.filter(tempmon.Client.archived == False)\
|
||||||
.filter(tempmon.Client.enabled == False)\
|
.filter(tempmon.Client.enabled == False)\
|
||||||
.all()
|
.all()
|
||||||
probes = tempmon_session.query(tempmon.Probe)\
|
probes = tempmon_session.query(tempmon.Probe)\
|
||||||
.join(tempmon.Client)\
|
.join(tempmon.Client)\
|
||||||
|
.filter(tempmon.Client.archived == False)\
|
||||||
.filter(tempmon.Client.enabled == True)\
|
.filter(tempmon.Client.enabled == True)\
|
||||||
.filter(tempmon.Probe.enabled == False)\
|
.filter(tempmon.Probe.enabled == False)\
|
||||||
.all()
|
.all()
|
||||||
|
|
Loading…
Reference in a new issue