Best Python code snippet using avocado_python
fabfile.py
Source:fabfile.py
...191 update_conf_files(deploy_to=deploy_to)192 update_permissions(setup=True)193def compile_messages(mode=DEFAULT_MODE):194 return195 env_variables = _get_env_variables(mode=mode) 196 with shell_env(**env_variables):197 # with cd(DJANGO_PROJECT_PATH):198 # run('django-admin makemessages -x js -l fr')199 # with cd(os.path.join(DJANGO_PROJECT_PATH, 'static', 'javascripts')):200 # run('django-admin makemessages -d djangojs -l fr')201 with cd(DJANGO_PROJECT_PATH):202 run('django-admin compilemessages')203def _update_permissions(debug=False, setup=False, only_static=False):204 """205 An exhaustive fail-proof permission setup. I tried to give the least possible 206 permissions.207 """208 print 'Updating permissions'209 with settings():210 with cd('/home'):211 sudo("find -type d -exec chmod a+x {} \;"); # makre sure all directories are executable212 if setup and not only_static:213 with settings(warn_only=True):214 sudo('groupadd staticusers')215 sudo('adduser www-data staticusers')216 sudo('adduser django staticusers')217 if setup:218 with cd(DJANGO_PROJECT_PATH):219 run('mkdir -p media')220 run('mkdir -p assets')221 run('mkdir -p app/migrations')222 # change permissions to static files223 sudo('chown -R django %s' % (DJANGO_PROJECT_PATH))224 sudo('chgrp -R staticusers %s' % (os.path.join(DJANGO_PROJECT_PATH, 'assets')))225 sudo('chgrp -R staticusers %s' % (os.path.join(DJANGO_PROJECT_PATH, 'media')))226 with cd(DJANGO_PROJECT_PATH): 227 # all files under the project dir are owned by django (gunicorn's uid) is the owner228 if not only_static:229 sudo("chmod -R 500 .") # r-x --- --- : django can only read and execute files by default230 with settings(warn_only=True):231 sudo("chmod -R 700 app/migrations") # rwx --- --- : django can write new migrations232 233 sudo("chmod -R 644 assets") # rw- r-- r-- : assets can be read by nginx (var-www) as well as everyone else234 sudo("chmod -R 644 media") # rw- r-- r--235 if not only_static:236 sudo("chmod -R 200 server_files/logs") # -w- r-- r--237 blacklist = (238 'scripts',239 # '%s/settings/*_private.py' % (DJANGO_PROJECT_NAME),240 )241 for f in blacklist:242 sudo("chmod -R 000 %s" % (f))243 sudo("find -type d -exec chmod a+x {} \;") # set all directories to executable 244 run("ls -la")245 if debug:246 with settings(warn_only=True):247 env.user = 'django'248 run('python manage.py runserver')249 250def update_permissions(deploy_to=DEFAULT_DEPLOY_TO, mode=DEFAULT_MODE, setup=False):251 _update_permissions(setup=setup)252 restart_nginx()253 restart_gunicorn()254def update_private_files(deploy_to=DEFAULT_DEPLOY_TO):255 env.hosts = DEPLOYMENT_HOSTS[deploy_to]256 _update_private_settings_file(deploy_to=deploy_to)257def update_conf_files(deploy_to=DEFAULT_DEPLOY_TO, restart=True):258 """259 Updates private django settings file as well as .profile, nginx and gunicorn configs260 261 Options262 -------263 deploy_to [DEFAULT_DEPLOY_TO]264 restart [True]265 Whether or not to restart nginx and gunicorn266 """267 env.hosts = DEPLOYMENT_HOSTS[deploy_to]268 _update_private_settings_file(deploy_to=deploy_to)269 print 'Modifying ~/.profile'270 _write_file('.profile', '.profile',271 {272 'DJANGO_PROJECT_PATH': DJANGO_PROJECT_PATH273 })274 print 'Modifying nginx config'275 _write_file('nginx.sh', '/etc/nginx/sites-enabled/django',276 {277 'DJANGO_PROJECT_PATH': DJANGO_PROJECT_PATH,278 'DOMAIN_NAME': DOMAIN_NAME279 })280 print 'Modifying gunicorn config'281 _write_file('gunicorn.sh', '/etc/init/gunicorn.conf',282 {283 'DJANGO_PROJECT_DIR': DJANGO_PROJECT_DIR,284 'DJANGO_PROJECT_NAME': DJANGO_PROJECT_NAME,285 'DJANGO_APP_NAME': DJANGO_APP_NAME286 })287 if restart:288 print 'Restarting nginx'289 sudo('nginx -t')290 sudo('service nginx reload')291 print 'Restarting gunicorn'292 run('service gunicorn restart')293def test_models(mode=DEFAULT_MODE, deploy_to=DEFAULT_DEPLOY_TO):294 """295 Generate random data using app/management/comands/generate_models.py.296 """297 print '\nTesting models'298 env_variables = _get_env_variables(mode=mode) 299 with cd(DJANGO_PROJECT_PATH):300 with shell_env(**env_variables):301 print '> Check database backend'302 run('echo "from django.db import connection;connection.vendor" | python manage.py shell ')303 print '> Generate random apps'304 run('python manage.py generate_models 10 --reset')305def _get_private_settings(deploy_to=DEFAULT_DEPLOY_TO):306 private_file = _get_private_settings_file(deploy_to=DEFAULT_DEPLOY_TO, local=True)307 import imp308 private = imp.load_source('', private_file)309 return private310def reset_db(mode=DEFAULT_MODE, deploy_to=DEFAULT_DEPLOY_TO):311 """312 Delete database and perform migrations (see migrate).313 Options314 -------315 mode [DEFAULT_MODE]316 deploy_to [DEFAULT_DEPLOY_TO]317 """318 with (hide('stdout')):319 pull_changes(mode=mode, deploy_to=deploy_to)320 migrate(mode=mode, deploy_to=deploy_to, reset_db=True)321def migrate(mode=DEFAULT_MODE, deploy_to=DEFAULT_DEPLOY_TO, env_variables=None,322 setup=False, reset_db=False, generate_dummy_data=True, create_super_user=True):323 """324 Perform migrations.325 Options326 -------327 mode [DEFAULT_MODE]328 deploy_to [DEFAULT_DEPLOY_TO]329 reset_db [False]330 If True, delete the database.331 generate_dummy_data [True]332 Generate dummy data (see app/management/)333 createsuperuser [True]334 If True and reset_db is True, create admin super user.335 """336 if not env_variables:337 env_variables = _get_env_variables(mode=mode)338 print '\nMigrating database as user django'339 with shell_env(**env_variables):340 with cd(DJANGO_PROJECT_PATH):341 if reset_db:342 with settings(warn_only=True):343 run('rm -rf app/migrations')344 with settings(warn_only=True):345 sudo("chmod -R 700 app") # rwx --- --- : django can write new migrations346 env.user = 'django'347 env.password = DJANGO_PASS348 # get django database pass, this is kind of hacky but wtv349 private_settings = _get_private_settings(deploy_to=deploy_to)350 django_db_pass = private_settings.DB_PASS351 print '> Checking database backend'352 with settings(prompts={353 "Login password for 'django': ": django_db_pass}):354 run('echo "from django.db import connection; connection.vendor" | python manage.py shell')355 with settings(prompts={356 "Login password for 'django': ": django_db_pass}):357 if reset_db:358 print '> Deleting database'359 if mode == 'dev':360 run('rm -rf %s/db.sqlite3' % (DJANGO_PROJECT_NAME))361 else:362 with settings(warn_only=True):363 run('rm -rf app/migrations')364 run('python manage.py sqlclear app | python manage.py dbshell ')365 run('python manage.py makemigrations')366 if setup:367 run('python manage.py migrate --fake-initial') 368 run('python manage.py makemigrations app')369 run('python manage.py migrate app') 370 elif reset_db:371 run('python manage.py migrate --fake') 372 run('python manage.py makemigrations app')373 run('python manage.py migrate --fake-initial')374 run('python manage.py migrate')375 else:376 run('python manage.py migrate')377 if mode == 'dev' or reset_db:378 if generate_dummy_data or reset_db:379 run('python manage.py generate_models 3 --reset')380 env.user = 'root'381 382 if mode == 'prod':383 print '> Checking postgresql status'384 run('service postgresql status')385 run('sudo netstat -nl | grep postgres')386 387 print '> Creating super user with login admin/pass'388 with settings(warn_only=True):389 with hide('stderr', 'stdout', 'warnings'):390 sudo('chmod u+x scripts/createsuperuser.sh')391 run('./scripts/createsuperuser.sh')392def update_requirements(branch=DEFAULT_BRANCH):393 """394 Update pip and bower requirements395 """396 print '\nUpdate pip and bower requirements'397 with cd(DJANGO_PROJECT_PATH):398 print 'Installing python requirements..'399 run('pip install -r requirements.txt')400 401 print 'Installing bower requirements..'402 run('bower install --allow-root')403def pull_changes(mode=DEFAULT_MODE, deploy_to=DEFAULT_DEPLOY_TO, branch=DEFAULT_BRANCH,404 collectstatic=False):405 """406 Update conf files, pull changes from repo and update requirements.407 Options408 -------409 mode [DEFAULT_MODE]410 deploy_to [DEFAULT_DEPLOY_TO]411 branch [DEFAULT_BRANCH]412 git branch to pull from413 See414 -------415 update_requirements416 """417 _update_private_settings_file(deploy_to=deploy_to)418 with cd(DJANGO_PROJECT_PATH):419 print '\nPulling changes from %s repo' % (branch)420 run('git config --global core.filemode false')421 if False: #branch == 'stable':422 run('git fetch --all')423 run('git reset --hard origin/%s' % (branch))424 else:425 run('git checkout .') # discard changes in working directory426 run('git pull origin %s' % (branch))427 run('git checkout %s' % (branch))428 update_requirements()429 if collectstatic:430 compile_messages(mode=mode)431 collect_staticfiles(mode=mode, deploy_to=deploy_to)432 restart_gunicorn()433def _update_private_settings_file(deploy_to=DEFAULT_DEPLOY_TO):434 print '\nUpdating private settings'435 local_private_file = _get_private_settings_file(local=True, deploy_to=deploy_to)436 remote_private_file = _get_private_settings_file(local=False, deploy_to=deploy_to)437 put(local_path=local_private_file,remote_path=remote_private_file)438def _get_private_settings_file(deploy_to=DEFAULT_DEPLOY_TO, local=True):439 if deploy_to not in DEPLOYMENT_PRIVATE_FILES.keys():440 print 'Unknown deployment option %s' % (deploy_to)441 print 'Possible options:', DEPLOYMENT_PRIVATE_FILES.keys()442 sys.exit()443 basename = DEPLOYMENT_PRIVATE_FILES[deploy_to]444 if local:445 django_path = LOCAL_DJANGO_PATH446 private_file = os.path.join(django_path, DJANGO_PROJECT_NAME,447 'settings', basename + '.py')448 else:449 django_path = DJANGO_PROJECT_PATH450 private_file = os.path.join(django_path, DJANGO_PROJECT_NAME,451 'settings', 'private.py')452 return private_file453def _get_env_variables(mode=DEFAULT_MODE, deploy_to=DEFAULT_DEPLOY_TO):454 ev = dict(ENV_VARIABLES)455 if mode not in DEPLOYMENT_MODES:456 print 'Invalid mode option %s' % (mode)457 print 'Possible options:', DEPLOYMENT_MODES458 sys.exit()459 ev['APP_ENV'] = mode460 env.hosts = DEPLOYMENT_HOSTS[deploy_to]461 return ev462def hard_reboot(**kwargs):463 """464 Reboot server and reset database (see reboot)465 """466 kwargs["reset_db"] = True467 reboot(**kwargs)468def restart_gunicorn():469 print 'Restarting gunicorn'470 run('service gunicorn restart')471def restart_nginx():472 print 'Restarting nginx'473 sudo('nginx -t')474 sudo('service nginx restart')475def collect_staticfiles(mode=DEFAULT_MODE, deploy_to=DEFAULT_DEPLOY_TO,476 env_variables=None):477 if not env_variables:478 env_variables = _get_env_variables(mode=mode, deploy_to=deploy_to)479 with cd(DJANGO_PROJECT_PATH):480 with shell_env(**env_variables):481 with settings(prompts=prompts):482 compile_messages(mode=mode)483 run('python manage.py collectstatic')484 _update_permissions(only_static=True, setup=setup)485 restart_nginx()486def reboot(mode=DEFAULT_MODE, deploy_to=DEFAULT_DEPLOY_TO, env_variables=None, 487 setup=False, reset_db=False, branch=DEFAULT_BRANCH):488 """489 Reboot server.490 Prerequisites491 -------------492 fab setup493 494 Overview495 -------------496 Update conf files (see update_conf_files)497 Pull changes from repo (see pull_chages)498 Migrate database (see migrate)499 Collects static files500 Restart nginx501 If mode is dev, stop gunicorn and run localhost502 If mode is prod, restart gunicorn503 Updates logs (see get_logs)504 Options505 -------------506 mode [DEFAULT_MODE]507 deploy_to [DEFAULT_DEPLOY_TO]508 env_variables [None]509 dictionary of env variables to pass to remote shell env510 see: _get_env_variables511 reset_db [False]512 whether or not to delete database513 branch [DEFAULT_BRANCH]514 git branch to pull from515 """516 if not env_variables:517 env_variables = _get_env_variables(mode=mode, deploy_to=deploy_to)518 519 with cd(DJANGO_PROJECT_PATH):520 print 'Stopping gunicorn' 521 with settings(warn_only=True):522 run('service gunicorn stop')523 pull_changes(mode=mode, deploy_to=deploy_to)524 with shell_env(**env_variables):525 with settings(prompts=prompts):526 compile_messages(mode=mode)527 run('python manage.py collectstatic')528 _update_permissions(only_static=True, setup=setup)529 530 restart_nginx()531 migrate(mode=mode, deploy_to=deploy_to, env_variables=env_variables, 532 setup=setup, reset_db=reset_db)533 if mode == 'prod':534 if deploy_to == 'alpha':535 with shell_env(**env_variables):536 print 'Generating 3 random app...'537 run('python manage.py generate_models 3')538 print 'Restarting gunicorn'539 run('service gunicorn restart')540 get_logs(deploy_to=deploy_to)541 elif mode == 'dev':542 get_logs(deploy_to=deploy_to)543 with shell_env(**env_variables):544 print 'Running on localhost'545 run('python manage.py runserver localhost:9000')546 else:547 print 'Invalid mode %s' % (mode)548def get_media(deploy_to=DEFAULT_DEPLOY_TO):549 """550 Copy server's media folder551 """552 print '\nCopying media to server_files/media/'553 log_dir = os.path.join(LOCAL_DJANGO_PATH, 'server_files', 'media', deploy_to)554 if not os.path.exists(log_dir):555 local('mkdir -p %s' % (log_dir))556 with settings(hide('warnings')): 557 get(remote_path="%s/media" % (DJANGO_PROJECT_PATH), local_path="%s" % (log_dir))558def put_media(deploy_to=DEFAULT_DEPLOY_TO):559 """560 Copy local media folder to server561 """562 print '\nCopying media from local to server'563 local_media_dir = os.path.join(LOCAL_DJANGO_PATH, 'media')564 remote_media_dir = os.path.join(DJANGO_PROJECT_PATH, 'media')565 with cd(DJANGO_PROJECT_PATH):566 with settings(hide('warnings')): 567 put(local_media_dir, remote_media_dir)568def generate_models(n=3, mode=DEFAULT_MODE):569 env_variables = _get_env_variables(mode=mode) 570 with shell_env(**env_variables):571 with cd(DJANGO_PROJECT_PATH):572 print 'Generating %i random app...' % (n)573 run('python manage.py generate_models %i' % (n))574def update_challenge_questions(deploy_to=DEFAULT_DEPLOY_TO, reset=False, mode=DEFAULT_MODE):575 # update csv in tmp576 print os.path.join(LOCAL_DJANGO_PATH, 'tmp/crypto_texts.csv')577 with cd(DJANGO_PROJECT_PATH):578 run('mkdir -p tmp')579 _write_file(580 os.path.join(LOCAL_DJANGO_PATH, 'tmp/crypto_texts.csv'), 581 os.path.join(DJANGO_PROJECT_PATH, 'tmp/crypto_texts.csv'), {})582 _write_file(583 os.path.join(LOCAL_DJANGO_PATH, 'app/management/commands/encrypter.py'), 584 os.path.join(DJANGO_PROJECT_PATH, 'app/management/commands/encrypter.py'), {})585 env_variables = _get_env_variables(mode=mode) 586 with cd(DJANGO_PROJECT_PATH):587 with shell_env(**env_variables):588 if reset:589 run('python manage.py generate_challenges tmp/crypto_texts.csv --reset')590 else:591 run('python manage.py generate_challenges tmp/crypto_texts.csv') 592def get_fixtures(deploy_to=DEFAULT_DEPLOY_TO, mode=DEFAULT_MODE):593 from datetime import datetime594 env_variables = _get_env_variables(mode=mode) 595 apps = ('app', 'event')596 for app in apps:597 fixture_path = '%s/fixtures/%s-data-%s.json' % (598 app, app, datetime.now().strftime("%Y-%m-%d_%H-%M-%S"))599 with shell_env(**env_variables):600 with cd(DJANGO_PROJECT_PATH):601 run('mkdir -p %s/fixtures' % (app))602 run('python manage.py dumpdata --format=json --indent=2 %s > %s' % (app, fixture_path))603 log_dir = os.path.join(LOCAL_DJANGO_PATH, 'server_files', 'fixtures', deploy_to)604 if not os.path.exists(log_dir):605 local('mkdir -p %s' % (log_dir))606 with settings(hide('warnings')): 607 get(remote_path="%s/%s" % (DJANGO_PROJECT_PATH, fixture_path), local_path="%s" % (log_dir))608def get_logs(deploy_to=DEFAULT_DEPLOY_TO):609 """610 Copy django, nginx and gunicorn log files from remote to server_files/logs611 """612 print '\nCopying logs to server_files/logs/'613 log_dir = os.path.join(LOCAL_DJANGO_PATH, 'server_files', 'logs', deploy_to)614 if not os.path.exists(log_dir):615 local('mkdir -p %s' % (log_dir))616 with settings(hide('warnings')): 617 get(remote_path="/var/log/nginx/error.log", local_path="%s/nginx.error.log" % (log_dir))618 get(remote_path="/var/log/nginx/access.log", local_path="%s/nginx.access.log" % (log_dir))619 get(remote_path="%s/server_files/logs/local/django.debug.log" % (DJANGO_PROJECT_PATH), local_path="%s/django.debug.log" % (log_dir))620 get(remote_path="%s/server_files/logs/local/django.request.debug.log" % (DJANGO_PROJECT_PATH), local_path="%s/django.request.debug.log" % (log_dir))621 get(remote_path="/var/log/upstart/gunicorn.log", local_path="%s/gunicorn.log" % (log_dir))622 get(remote_path="/var/log/postgresql/postgresql-9.3-main.log", local_path="%s/psql.main.log" % (log_dir))623def test():624 deploy_to=DEFAULT_DEPLOY_TO625 env_variables = _get_env_variables(mode='prod')626 print '\nMigrating database as user django'627 with shell_env(**env_variables):628 with cd(DJANGO_PROJECT_PATH):629 env.user = 'django'630 env.password = DJANGO_PASS631 # get django database pass, this is kind of hacky but wtv632 private_settings = _get_private_settings(deploy_to=deploy_to)633 django_db_pass = private_settings.DB_PASS634 with settings(prompts={635 "Login password for 'django': ": django_db_pass}):636 run('python manage.py migrate --fake app')637def all(deploy_to=DEFAULT_DEPLOY_TO, mode=DEFAULT_MODE):638 """Setup and reboot."""639 setup(deploy_to=deploy_to, mode=mode)...
eventhandler.py
Source:eventhandler.py
...55 output_to_logger=True,56 fatal_error=True57 )58 if event_type == events.type.CW_SCHEDULED_EVENT:59 scheduler = events.scheduler.Scheduler(self._get_env_variables())60 response = scheduler.automated_schedule()61 elif event_type == events.type.API_S3_PUT_CONFIG:62 response = events.put_config.put_config_into_dynamo(self._get_env_variables())63 elif event_type == events.type.API_RETRIEVE_DYNAMO_AS_CONFIG:64 response = events.retrieve_config.retrieve_dynamo_as_config(self._get_env_variables())65 else:66 automated.exceptions.log_error(67 self,68 error_message=f"Event type '{event_type}' not found.",69 include_in_http_response=True,70 http_status_code=http_response.NOT_FOUND,71 output_to_logger=True,72 fatal_error=True73 )74 return response75 def _get_env_variables(self) -> dict:76 """77 Returns Lambda environment variables common to majority of application functionality.78 These variables are defined/expected by AWS CDK synth/deploy79 :return: dict: Environment variables retrieved from Lambda environment80 """81 try:82 region = os.environ["scheduler_region"]83 logger.debug(f"Discovered dynamodb region name [{region}] from environment variable 'scheduler_region'")84 except KeyError:85 automated.exceptions.log_error(86 automation_component=self,87 error_message=f"Unable to discover region name from environment variable 'scheduler_region'",88 output_to_logger=True,89 include_in_http_response=True,...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!