You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#!venv/bin/python from flask import Flask from flask.ext.script import Manager, Server from flask.ext.migrate import Migrate, MigrateCommand
from app import app, db, models
#SQLALCHEMY_DATABASE_URI = 'mysql://root:$perwePP@localhost/dotanoobs'
migrate = Migrate(app, db) manager = Manager(app) manager.add_command('db', MigrateCommand)
def createTeamspeakInstance(): import ts3 s = ts3.TS3Server(app.config['TS3_HOST'], app.config['TS3_PORT']) s.login(app.config['TS3_USERNAME'], app.config['TS3_PASSWORD']) s.use(1) return s
@manager.command def install_cronjobs(): from os import path from crontab import CronTab cron = CronTab(user=True)
# Clear out existing jobs cron.remove_all(comment='DOOBSAUTO')
def make_job(job): p = path.realpath(__file__) c = cron.new(command='{}/venv/bin/python {} {}'.format(path.split(p)[0],\ p, job), comment='DOOBSAUTO') return c
# Create the jobs winrate = make_job('calc_winrates') ts3_move_afk = make_job('ts3_move_afk') ts3_snapshot = make_job('ts3_snapshot') ts3_award_points = make_job('ts3_award_points') ts3_process_events = make_job('ts3_process_events')
# Set their frequency to run winrate.every(1).day() ts3_move_afk.every(app.config['MOVE_AFK_FREQUENCY']).minute() ts3_snapshot.every(app.config['SNAPSHOT_FREQUENCY']).hour() ts3_award_points.every(app.config['AWARD_POINTS_FREQUENCY']).minute() ts3_process_events.every(app.config['PROCESS_EVENTS_FREQUENCY']).hour()
try: assert True == winrate.is_valid() assert True == ts3_move_afk.is_valid() assert True == ts3_snapshot.is_valid() assert True == ts3_award_points.is_valid() assert True == ts3_process_events.is_valid() except AssertionError as e: print "Problem installing cronjobs: {}".format(e) else: cron.write() print "Cron jobs written successfully"
@manager.command def delete_cronjobs(): from os import path from crontab import CronTab cron = CronTab(user=True) cron.remove_all(comment='DOOBSAUTO') print "Existing cronjobs deleted successfully"
@manager.command def admin(name): u = models.User.query.filter_by(nickname=name).first() if u and not u.admin: u.admin = True db.session.commit() print "User {} has been granted admin access.".format(name)
@manager.command def calc_winrates(): from app.analytics import calculate_winrates calculate_winrates()
@manager.command def ts3_move_afk(): from app.teamspeak import idle_mover tsServer = createTeamspeakInstance() idle_mover(tsServer)
@manager.command def ts3_snapshot(): from app.teamspeak import store_active_data tsServer = createTeamspeakInstance() store_active_data(tsServer)
@manager.command def ts3_award_points(): from app.teamspeak import award_idle_ts3_points tsServer = createTeamspeakInstance() award_idle_ts3_points(tsServer)
@manager.command def ts3_process_events(): from app.teamspeak import process_ts3_events tsServer = createTeamspeakInstance() process_ts3_events(tsServer)
@manager.command def forum_award_points(): for user in models.User.query.filter(models.User.forum_id != None).all(): user.update_forum_posts()
if __name__ == '__main__': manager.run()
|