Skip to content

Instantly share code, notes, and snippets.

@patelc75
Last active March 10, 2017 18:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save patelc75/ae1b304827ecf6e4ef72e7360a57070a to your computer and use it in GitHub Desktop.
Save patelc75/ae1b304827ecf6e4ef72e7360a57070a to your computer and use it in GitHub Desktop.
from flask.ext.script import Command, Option
from permissions import encode_account_token
from flask import current_app
from models.person import Person
from database import db
from models.jobs import Job
from commands.create_test_data import CreateTestDataCommand
from fixtures.persons import person_factory, education_factory, working_relationship_factory, sample_person
from fixtures.event_mocks import event_queues
import factory
from fixtures.saved_application import saved_application_factory
from fixtures.uploaded_files import uploaded_file_base64_data
from utils.applications.process import process_application
from models.saved_application import SavedApplication
import names
import random
class DuplicateApplications(CreateTestDataCommand):
'''
Duplicate applications based on team id
Command to run on Heroku (prod, staging, review app):
heroku run python manage.py dupe-apps --team_id=30463 --max_app_per_job=2 --max_total_apps=10 --app apploi-api-staging-pr-254
'''
def __init__(this):
this.PersonFactory = person_factory(db.session)
this.EducationFactory = education_factory(db.session, this.PersonFactory)
this.WorkingRelationshipFactory = working_relationship_factory(db.session, this.PersonFactory)
def get_options(self):
return [
Option('--team_id', required=True, help='team id'),
Option('--max_app_per_job', required=True, help='max number of applications to create per job on team'),
Option('--max_total_apps', required=True, help='max number of applications to create period')
]
def run(self, team_id, max_app_per_job, max_total_apps):
jobs = db.session.query(Job).filter(Job.team_id==team_id, Job.searchable)
for job in jobs:
#person = self.PersonFactory()
#self.create_person_basic_info(person)
person = Person()
person.first_name = names.get_first_name()
person.last_name = names.get_last_name()
person.email = person.first_name + str(random.randint(100, 100000)) + "@apploi.pw"
#db.session.add()
answers_json = SavedApplication.sample_answers_for_questions(job.application_form_template.questions, uploaded_file_base64_data())
saved_application_completed = SavedApplication()
saved_application_completed.job = job
saved_application_completed.person = person
saved_application_completed.answers_json = answers_json
saved_application_completed.application_schema_json = job.application_schema()
#db.session.add(saved_application_completed)
processed_application = process_application(saved_application_completed)
db.session.add(processed_application)
db.session.commit()
command = DuplicateApplications()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment