adds cleanup functionality for old devices
- device now last field 'last connection' which gets updated at every server connection from the respective device - manual cleanup script in database deletes all devices which have never been updated, or have a timestamp older than 30 days
This commit is contained in:
parent
15e68b88e8
commit
0284eb2fa8
14
database/__init__.py
Normal file
14
database/__init__.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
from server import db
|
||||||
|
import time
|
||||||
|
from database.models import Device
|
||||||
|
|
||||||
|
def cleanDevices():
|
||||||
|
allDevs = db.session.query(Device)
|
||||||
|
devices = allDevs.filter(Device.lastConnection <= int(round(time.time())) - 60*60*24*30).all()
|
||||||
|
devices += allDevs.filter(Device.lastConnection == None)
|
||||||
|
for device in devices:
|
||||||
|
print(device.deviceName)
|
||||||
|
db.session.delete(device)
|
||||||
|
|
||||||
|
db.session.commit()
|
||||||
|
|
28
database/migrations/versions/121eab3835ee_.py
Normal file
28
database/migrations/versions/121eab3835ee_.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
"""empty message
|
||||||
|
|
||||||
|
Revision ID: 121eab3835ee
|
||||||
|
Revises: e5ef5e4a807b
|
||||||
|
Create Date: 2020-07-17 08:03:36.947158
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '121eab3835ee'
|
||||||
|
down_revision = 'e5ef5e4a807b'
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.add_column('device', sa.Column('lastConnection', sa.BigInteger(), nullable=True))
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.drop_column('device', 'lastConnection')
|
||||||
|
# ### end Alembic commands ###
|
@ -61,6 +61,7 @@ class Device(db.Model):
|
|||||||
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
||||||
deviceName = db.Column(db.String(64), unique=True)
|
deviceName = db.Column(db.String(64), unique=True)
|
||||||
connection = db.Column(db.Boolean)
|
connection = db.Column(db.Boolean)
|
||||||
|
lastConnection = db.Column(db.BigInteger)
|
||||||
|
|
||||||
class Calendar(db.Model):
|
class Calendar(db.Model):
|
||||||
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# Python standard libraries
|
# Python standard libraries
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
import time
|
||||||
|
|
||||||
# Third-party libraries
|
# Third-party libraries
|
||||||
import flask
|
import flask
|
||||||
@ -204,6 +205,7 @@ def downloader(device):
|
|||||||
if request_device.user_id == None:
|
if request_device.user_id == None:
|
||||||
return jsonify(kind="unregistered")
|
return jsonify(kind="unregistered")
|
||||||
|
|
||||||
|
request_device.lastConnection=int(round(time.time()))
|
||||||
request_device.connection=True
|
request_device.connection=True
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
request_user = db.session.query(User).filter(User.id==request_device.user_id).first()
|
request_user = db.session.query(User).filter(User.id==request_device.user_id).first()
|
||||||
|
Loading…
Reference in New Issue
Block a user