def check_update(self, testing=False): ''' Check the list of updates to see if any of them require attention ''' sc = SC() self.current_version = sc.dict['Server']['update']['software_version'] update = self.get_update_info() update_required = False notify = False update_info = set() if self.check_new_update(update['version'], self.current_version) is True: update_required = True update_info.add(update['info']) if self.check_new_update(update['version'], self.current_update) is True: # update current update version in sc.conf json sc = SC() sc.dict['Server']['update']['update_version'] = update[ 'version'] if testing is not True: sc.save_dict() notify = True return update_required, notify, update_info
def check_update(self, testing=False): ''' Check the list of updates to see if any of them require attention ''' sc = SC() self.current_version = sc.dict['Server']['update']['software_version'] update = self.get_update_info() update_required = False notify = False update_info = set() if self.check_new_update(update['version'], self.current_version) is True: update_required = True update_info.add(update['info']) if self.check_new_update(update['version'], self.current_update) is True: # update current update version in sc.conf json sc = SC() sc.dict['Server']['update']['update_version'] = update['version'] if testing is not True: sc.save_dict() notify = True return update_required, notify, update_info
def docker_init(): copy_backups() sc = SC() sc.dict['host'] = 'sc-server' sc.dict['web_port'] = 5000 sc.save_dict()
def ci_init(): sc = SC() sc.dict['SMTP']['username'] = os.environ.get('SC_SMTP_USERNAME', '') sc.dict['SMTP']['password'] = os.environ.get('SC_SMTP_PASSWORD', '') sc.dict['SMTP']['server'] = os.environ.get('SC_SMTP_SERVER', '') sc.dict['SMTP']['from'] = os.environ.get('SC_SMTP_FROM', '') sc.dict['SMTP']['security'] = os.environ.get('SC_SMTP_SECURITY', '') sc.dict['SMTP']['port'] = int(os.environ.get('SC_SMTP_PORT', '')) sc.save_dict()
def notify_admin(self, update_info=None, testing=False): # notify admin admin_notified = False admin_notified = self.send_update_notification(update_info=update_info) if admin_notified is True: # record admin Notification sc = SC() sc.dict['Server']['update']['admin_notified'] = True if testing is not True: sc.save_dict()
def update_configs(new): """ Add new configurations, but keep users' changes intact. This will have the wrong version number, which will have to be overwritten later """ sc = SC() new_dict = json.loads(new) # map old configs on top of new to retain user settings merge_dicts(new_dict, sc.dict) sc.dict = new_dict sc.save_dict()
def db_migration(engine): from db_migrations import migrations from util import SC sc = SC() for migration in migrations: mig_version = int(migration.__name__.split('to')[1]) cur_version = sc.dict['Server']['update']['db_version'] if mig_version > cur_version: # run the migration engine = migration(engine) # update the configs sc.dict['Server']['update']['db_version'] = mig_version session_maker = sessionmaker(bind=engine) Session = scoped_session(session_maker) sc.save_dict() return engine, Session
def update(self, testing=False): update = self.get_update_info() version = self.current_version sc = SC() delim = os.sep failed = [] success = [] # concatinate files if user is multiple updates behind files = update.get('files', []) for file_ in files: try: # download file url_opener = URLOpener() text_file = url_opener.open(file_['url']) # get the full path to the file file_path = delim.join([root_dir()] + file_['path'].split('/')) norm_file_path = os.path.normpath(file_path) # open the file if 'sc.json' not in file_['path']: # normal text file file_to_update = open(norm_file_path, 'w') file_to_update.write(text_file) file_to_update.close() else: # json configs require special update self.update_configs(text_file) if self.check_new_update(file_['version'], version): version = file_['version'] success += [file_] except Exception: failed += [file_] sc.dict['Server']['update']['software_version'] = version if testing is not True: sc.save_dict() return success, failed
def db_migration(engine): ''' Check for required database migrations ''' from db_migrations import migrations from util import SC sc = SC() for migration in migrations: mig_version = int(migration.__name__.split('to')[1]) cur_version = sc.dict['Server']['update']['db_version'] if mig_version > cur_version: # run the migration engine = migration(engine) # update the configs sc.dict['Server']['update']['db_version'] = mig_version session_maker = sessionmaker(bind=engine) Session = scoped_session(session_maker) sc.save_dict() return engine, Session