Skip to content

Commit

Permalink
version 1.0.1
Browse files Browse the repository at this point in the history
Added version check and db upgrade scripts
  • Loading branch information
daanbeverdam committed Sep 21, 2017
1 parent 770c7d5 commit e2aabd8
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 9 deletions.
12 changes: 10 additions & 2 deletions pybot/core/bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,16 @@ def self_check(self):
self.check_version()

def check_version(self):
version_number = pkg_resources.get_distribution("pybot").version
print("Version number: %s" % version_number)
actual_version = open(ROOT_DIR + '/etc/VERSION').read().strip()
current_version = self.helper.get_version()
if not current_version:
self.helper.set_version(actual_version)
current_version = self.helper.get_version()
if actual_version != current_version:
print("PyBot will be upgraded to version %s" % actual_version)
self.helper.upgrade_db(current_version, actual_version)
self.helper.set_version(actual_version)
print("PyBot version %s" % actual_version)

def run(self):
"""Main loop of the bot."""
Expand Down
1 change: 1 addition & 0 deletions pybot/etc/VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1.0.1
44 changes: 38 additions & 6 deletions pybot/helpers/core.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import sqlite3
import os.path
import importlib
from pybot.env import ROOT_DIR
from pybot.core.user import User

Expand Down Expand Up @@ -48,7 +50,7 @@ def create_tables(self):
"""Creates necessary tables."""
self.cursor.execute("""
CREATE TABLE core (
setting TEXT,
variable TEXT,
value TEXT
);""")
self.cursor.execute("""
Expand Down Expand Up @@ -92,22 +94,52 @@ def create_tables(self):

def populate_tables(self):
self.cursor.execute("""
INSERT INTO core(setting, value)
INSERT INTO core(variable, value)
VALUES ("offset", 0)
""")
self.save()

def set_version(self, version_number):
pass
if not self.get_version():
self.cursor.execute("""
INSERT INTO core(variable, value)
VALUES ("version", ?)
""", (version_number, ))
else:
self.cursor.execute("""
UPDATE core
SET value=?
WHERE variable="version"
""", (version_number, ))
self.save()

def get_version(self):
pass
try:
self.cursor.execute("""
SELECT value FROM core
WHERE variable="version"
""")
result = self.cursor.fetchone()
if result:
return result[0]
return None
except:
# if column doesn't exist, it's version 1.0.0
return '1.0.0'

def upgrade_db(self, old_version, new_version):
path = ROOT_DIR + '/upgrades/'
file = old_version.replace('.', '_') + '-' + new_version.replace('.', '_') + '.py'
if os.path.isfile(path + file):
print("Applying upgrade script " + file)
script = importlib.import_module('pybot.upgrades.' + file[:-3])
script.upgrade()

def get_offset(self):
"""Gets offset for long polling."""
self.cursor.execute("""
SELECT value FROM core
WHERE setting="offset"
WHERE variable="offset"
""")
result = self.cursor.fetchone()
return result[0]
Expand All @@ -116,7 +148,7 @@ def set_offset(self, offset):
"""Sets offset for long polling."""
self.cursor.execute("""
UPDATE core SET value=?
WHERE setting="offset"
WHERE variable="offset"
""", (offset,))
self.save()

Expand Down
30 changes: 30 additions & 0 deletions pybot/upgrades/1_0_0-1_0_1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# database upgrade script for v1.0.0 to v1.0.1
from pybot.helpers.core import CoreHelper


def upgrade():
helper = CoreHelper()
helper.cursor.execute("""
SELECT offset FROM core;
""")
offset = helper.cursor.fetchone()[0]
helper.cursor.execute("""
DROP TABLE core;
""")
helper.save()
helper.cursor.execute("""
CREATE TABLE core (
variable TEXT,
value TEXT
);
""")
helper.save()
helper.cursor.execute("""
INSERT INTO core(variable, value)
VALUES ("offset", ?)
""", (offset, ))
helper.save()
helper.close()

if __name__ == '__main__':
upgrade()
Empty file added pybot/upgrades/__init__.py
Empty file.
6 changes: 5 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
from setuptools import setup
import os

FILE_DIR = os.path.dirname(os.path.abspath(__file__))
version = open(FILE_DIR + '/pybot/etc/VERSION').read().strip()

setup(name='pybot',
version='1.0',
version=version,
description='A python bot for Telegram',
url='https://github.com/daanbeverdam/pybot',
author='Daan Beverdam')

0 comments on commit e2aabd8

Please sign in to comment.