def bootstrap_wger(settings_path=None, database_path=None, address='localhost', port=8000, browser=False): ''' Performs all steps necessary to bootstrap the application ''' # Find url to wger address, port = detect_listen_opts(address, port) if port == 80: url = "http://{0}".format(address) else: url = "http://{0}:{1}".format(address, port) # Create settings if necessary if settings_path is None: settings_path = get_user_config_path('wger', 'settings.py') if not os.path.exists(settings_path): create_settings(settings_path=settings_path, database_path=database_path, url=url) # Find the path to the settings and setup the django environment setup_django_environment(settings_path) # Create Database if necessary if not database_exists(): print('*** Database does not exist, creating one now') migrate_db(settings_path=settings_path) load_fixtures(settings_path=settings_path) create_or_reset_admin(settings_path=settings_path) # Download JS libraries with bower call_command('bower', 'install') # Start the webserver print('*** Bootstraping complete, starting application') start_wger(address=address, port=port, browser=browser, settings_path=settings_path)
def migrate_db(settings_path=None): ''' Run all database migrations ''' # Find the path to the settings and setup the django environment setup_django_environment(settings_path) call_command("migrate")
def load_fixtures(settings_path=None): ''' Loads all fixtures ''' # Find the path to the settings and setup the django environment setup_django_environment(settings_path) os.chdir(os.path.dirname(inspect.stack()[0][1])) current_dir = os.path.join(os.getcwd(), 'wger') # Gym path = os.path.join(current_dir, 'gym', 'fixtures/') call_command("loaddata", path + "gym.json") # Core path = os.path.join(current_dir, 'core', 'fixtures/') call_command("loaddata", path + "languages.json") call_command("loaddata", path + "groups.json") call_command("loaddata", path + "users.json") call_command("loaddata", path + "licenses.json") call_command("loaddata", path + "days_of_week.json") # Config path = os.path.join(current_dir, 'config', 'fixtures/') call_command("loaddata", path + "language_config.json") call_command("loaddata", path + "gym_config.json") # Manager # path = os.path.join(current_dir, 'manager', 'fixtures/') # Exercises path = os.path.join(current_dir, 'exercises', 'fixtures/') call_command("loaddata", path + "equipment.json") call_command("loaddata", path + "muscles.json") call_command("loaddata", path + "categories.json") call_command("loaddata", path + "exercises.json") # Nutrition path = os.path.join(current_dir, 'nutrition', 'fixtures/') call_command("loaddata", path + "ingredients.json") call_command("loaddata", path + "weight_units.json") call_command("loaddata", path + "ingredient_units.json") # Gym path = os.path.join(current_dir, 'gym', 'fixtures/') call_command("loaddata", path + "gym.json") call_command("loaddata", path + "gym-config.json") call_command("loaddata", path + "gym-adminconfig.json")
def start_wger(address='localhost', port=8000, browser=False, settings_path=None, extra_args=''): ''' Start the application using django's built in webserver ''' if browser: start_browser("http://{0}:{1}".format(address, port)) # Find the path to the settings and setup the django environment setup_django_environment(settings_path) argv = ["", "runserver", '--noreload'] if extra_args != '': for argument in extra_args.split(' '): argv.append(argument) argv.append("{0}:{1}".format(address, port)) execute_from_command_line(argv)
def create_or_reset_admin(settings_path=None): ''' Creates an admin user or resets the password for an existing one ''' # Find the path to the settings and setup the django environment setup_django_environment(settings_path) # can't be imported in global scope as it already requires # the settings module during import from wger.manager.models import User try: admin = User.objects.get(username="******") print("*** Password for user admin was reset to 'admin'") except User.DoesNotExist: print("*** Created default admin user") os.chdir(os.path.dirname(inspect.stack()[0][1])) current_dir = os.path.join(os.getcwd(), 'wger') path = os.path.join(current_dir, 'core', 'fixtures/') call_command("loaddata", path + "users.json")
#!/usr/bin/env python import sys from django.core.management import execute_from_command_line from wger.utils.main import setup_django_environment, get_user_config_path if __name__ == "__main__": # If user passed the settings flag ignore the default wger settings if not any("--settings" in s for s in sys.argv): setup_django_environment(get_user_config_path("wger", "settings.py")) # Alternative to above # os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings") execute_from_command_line(sys.argv)
#!/usr/bin/env python import sys from django.core.management import execute_from_command_line from wger.utils.main import (setup_django_environment, get_user_config_path) if __name__ == "__main__": # If user passed the settings flag ignore the default wger settings if not any('--settings' in s for s in sys.argv): setup_django_environment(get_user_config_path('wger', 'settings.py')) # Alternative to above # os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings") execute_from_command_line(sys.argv)
#!/usr/bin/env python import sys from django.core.management import execute_from_command_line from wger.utils.main import ( setup_django_environment, get_user_config_path ) if __name__ == "__main__": setup_django_environment( get_user_config_path('wger', 'settings.py')) #os.environ.setdefault("DJANGO_SETTINGS_MODULE", "wger.workout_manager.settings") execute_from_command_line(sys.argv)