class PyJobsJobApplication(TestCase): def setUp(self): self.job = Job(title="Vaga 3", workplace="Sao Paulo", company_name="XPTO", company_email="*****@*****.**", description="Job bem maneiro", premium=True, public=True) self.job.save() self.user = User.objects.create_user(username='******', email='*****@*****.**', password='******') self.client = Client() def test_check_applied_for_job_anon(self): request_client = self.client.get("/job/{}/".format(self.job.pk)) request = request_client.content.decode('utf-8') expected_response = "Você precisa estar logado para aplicar para esta vaga!" self.assertTrue(expected_response in request) def test_check_applied_for_job(self): self.client.login(username="******", password="******") request_client = self.client.get("/job/{}/".format(self.job.pk)) request = request_client.content.decode('utf-8') expected_response = "Aplicar para esta vaga pelo PyJobs" self.assertTrue(expected_response in request)
def schedule_package(package): # Is this package already in the jobs table? jobs = Job.objects.filter(package = package) if jobs: logging.info("Package %s is already scheduled for updates." % package) return languages = Language.objects.all() for language in languages: job = Job(package=package, language=language) job.save() logging.info("Package %s is scheduled to be updated on %s" % (job.package.name, job.update_on.strftime("%B %d, %Y %H:%M")))
def init(testing=False): """Initialize the database with the default job""" if not os.path.exists(APPLICATION_DIRECTORY): os.mkdir(APPLICATION_DIRECTORY) if not os.path.exists(DATABASE_FILE) or testing: print(f"Creating TimeClok Database and default job.....") DB.create_tables(BaseModel) try: j = Job(name="default") j.save() s = State() s.save() s.set_job(j) except IntegrityError: DB.session.rollback()
def post(self): args = parser.parse_args() pipeline = Pipeline.find(args['pipeline_id']) if pipeline.is_blocked(): return { 'message': 'Creating new jobs for active pipeline is unavailable' }, 422 job = Job(args['name'], args['worker_class'], args['pipeline_id']) job.assign_attributes(args) job.save() job.save_relations(args) return job, 201
def getJobs(self): pagesize = 25 page_count = self.count / pagesize self.url = self.buildUrl() print "url: " + self.url for page in range(0, page_count): nextpageurl = self.url + '&start=' + str(page * pagesize) print nextpageurl rawdata = Soup(urllib.urlopen(nextpageurl), "lxml") for i in range(0, pagesize): print "getting next job: " + str(datetime.now()) result = rawdata.results.contents[i] jobtitle = result.find({'jobtitle'}).getText() company = result.find({'company'}).getText() location = result.find({'formattedlocation'}).getText() date_text = result.find({'date'}).getText() date_posted = datetime.strptime(date_text, '%a, %d %b %Y %H:%M:%S %Z') snippet = result.find({'snippet'}).getText() joburl = result.find({'url'}).getText() try: j_exist = Job.objects.get(date_posted=date_posted, \ company=company, \ title=jobtitle) except ObjectDoesNotExist: # access url and grab full job description wordsoup = Soup(urllib.urlopen(joburl), "lxml") description = wordsoup.find('span', attrs={'id':'job_summary'})\ .getText().strip() sponsored = result.find({'sponsored'}).getText().title() expired = result.find({'expired'}).getText().title() j = Job(date_posted=date_posted, query=self.query, company=company, location=location, title=jobtitle, description=description, url=joburl, sponsored=sponsored, expired=expired, snippet=snippet) j.save()
def post(self): args = parser.parse_args() pipeline = Pipeline.find(args['pipeline_id']) if pipeline.is_blocked(): return { 'message': 'Creating new jobs for active pipeline is unavailable' }, 422 job = Job(args['name'], args['worker_class'], args['pipeline_id']) job.assign_attributes(args) job.save() job.save_relations(args) tracker = insight.GAProvider() tracker.track_event(category='jobs', action='create', label=args['worker_class']) return job, 201
class JobTest_02(TestCase): def setUp(self): self.job = Job( title="Vaga 2", workplace="Sao Paulo", company_name="XPTO", company_email = "*****@*****.**", description="Job bem maneiro", public=True ) self.job.save() def test_job_application_link(self): self.assertEqual(False, self.job.get_application_link()) def test_publicly_available(self): self.assertTrue((self.job in Job.get_publicly_available_jobs())) def test_premium_available(self): self.assertTrue((self.job not in Job.get_premium_jobs()))
def jobs( show: bool = Option(True, help="display records for day/week/month/date_key"), add: str = Option( None, help="Add a new job, job names are stored lowercase only"), switch: str = Option( None, help="Switch to a different job and clock out current"), ): """Show and manage different jobs""" if add or switch: show = False if show: print(Job.print_header()) current_job = State.get().job for j in Job.query().all(): if j.id == current_job.id: print(f"{j} <- Current") else: print(j) elif add is not None: try: j = Job.query().filter(Job.name == add).one() print(f"Job '{add.lower()}' already exists.") except NoResultFound: print(f"Creating job '{add.lower()}'") j = Job(name=add) j.save() elif switch is not None: try: s = State.get() c = Clok.get_last_record() if c is not None: if c.time_out is None: print( f"Clocking you out of '{s.job.name}' at {get_date()}") Clok.clock_out() print(f"Switching to job '{switch.lower()}'") j = Job.query().filter(Job.name == switch.lower()).one() State.set_job(j) except NoResultFound: print(f"Job '{switch}' not found")
def update(self, request): serializer = SoundSerializer(data=request.data) if serializer.is_valid(raise_exception=True): task = play_audio.delay(serializer.data['sound_path']) job = Job(name="play_audio", celery_id=task.id) job.save() # FIXME sync_job_db #play_audio.apply_async(serializer.data['sound_path'], job.id, link=sync_job_db.s()) # (play_audio.s(serializer.data['sound_path'], job.id) | sync_job_db.s(job.id)).delay() msg_out = "Asyncronous task. play_audio: " + serializer.data[ 'sound_path'] response = apirest_response_format( request=request, status=task.status, msg=msg_out, result="", job_id=job.id, ) return Response(response)
class JobTest_Application(TestCase): def setUp(self): self.job = Job( title="Vaga 3", workplace="Sao Paulo", company_name="XPTO", company_email = "*****@*****.**", description="Job bem maneiro", premium=True, public=True ) self.user = User.objects.create_user( username='******', email='*****@*****.**', password='******') self.job.save() def test_user_is_not_applied(self): application_status = self.job.applied(self.user) self.assertEqual(application_status, False) def test_user_is_not_applied(self): self.job.apply(self.user) application_status = self.job.applied(self.user) self.assertEqual(application_status, True)
class JobTest_01(TestCase): def setUp(self): self.job = Job( title="Vaga 1", workplace="Sao Paulo", company_name="XPTO", application_link = "http://www.xpto.com.br/apply", company_email = "*****@*****.**", description="Job bem maneiro" ) self.job.save() def test_job_created(self): self.assertTrue(Job.objects.exists()) def test_job_created_at(self): self.assertIsInstance(self.job.created_at, datetime) def test_job_str(self): self.assertEqual(str(self.job), "Vaga 1") def test_job_application_link(self): self.assertEqual(str(self.job.get_application_link()), "http://www.xpto.com.br/apply")
class HomeJobsViewsTest(TestCase): def setUp(self): self.job = Job(title="Vaga 1", workplace="Sao Paulo", company_name="XPTO", application_link="http://www.xpto.com.br/apply", company_email="*****@*****.**", description="Job bem maneiro") self.job.save() self.home_page = resolve('/') self.request = HttpRequest() self.home_page_html = index(self.request).content.decode('utf-8') def test_job_is_in_websites_home(self): self.assertEqual(self.home_page.func, index) def test_job_in_home(self): job_title = str(self.job) self.assertTrue(job_title in self.home_page_html) def test_job_url_is_in_home(self): job_url = "/job/{}/".format(str(self.job.pk)) self.assertTrue(job_url in self.home_page_html)
class JobDetailsViewTest(TestCase): def setUp(self): self.job = Job( title="Vaga 1", workplace="Sao Paulo", company_name="XPTO", application_link="http://www.xpto.com.br/apply", company_email="*****@*****.**", description="Job bem maneiro", requirements="Job bem maneiro", ) self.job.save() self.job_request = HttpRequest() self.job_view_html = job_view(self.job_request, self.job.pk)\ .content.decode('utf-8') def test_job_details_view(self): self.assertTrue(self.job.title in self.job_view_html) self.assertTrue(self.job.workplace in self.job_view_html) self.assertTrue(self.job.company_name in self.job_view_html) self.assertTrue(self.job.application_link in self.job_view_html) self.assertTrue(self.job.description in self.job_view_html) self.assertTrue(self.job.requirements in self.job_view_html)
class JobTests(APITestCase): """ Test Job model. """ def setUp(self): """ Initialize variables. """ self.created_by = create_user() self.organisation = Organisation.objects.create( user=self.created_by, name='Big Company', description='We are everywhere!' ) self.category = JobCategory.objects.create( category='Engineering' ) self.title = 'Software Engineering Lead' self.description = 'We are excited to ...' self.allow_comments = True self.start_accepting_applications_at = timezone.now() self.stop_accepting_applications_at = timezone.now() + timedelta(days=30) self.employment_term = 'Full Term' self.seniority_level = 'Mid Level' self.location = 'Nairobi' self.job = Job( created_by=self.created_by, organisation=self.organisation, category=self.category, title=self.title, description=self.description, allow_comments=self.allow_comments, start_accepting_applications_at=self.start_accepting_applications_at, stop_accepting_applications_at=self.stop_accepting_applications_at, employment_term=self.employment_term, seniority_level=self.seniority_level, location=self.location ) def test_can_create_job(self): """ Test if a job instance is created successfully, with all fields provided. """ self.job.save() job_instance = Job.objects.get(pk=1) self.assertEqual( job_instance.created_by, self.created_by, "created_by fields don't match." ) self.assertEqual( job_instance.organisation, self.organisation, "organisation fields don't match." ) self.assertEqual( job_instance.category, self.category, "category fields don't match." ) self.assertEqual( job_instance.title, self.title, "title fields don't match." ) self.assertEqual( job_instance.description, self.description, "description fields don't match." ) self.assertEqual( job_instance.allow_comments, self.allow_comments, "allow_comments fields don't match." ) self.assertEqual( job_instance.start_accepting_applications_at, self.start_accepting_applications_at, "start_accepting_applications_at fields don't match." ) self.assertEqual( job_instance.stop_accepting_applications_at, self.stop_accepting_applications_at, "stop_accepting_applications_at fields don't match." ) self.assertEqual( job_instance.employment_term, self.employment_term, "employment_term fields don't match." ) self.assertEqual( job_instance.seniority_level, self.seniority_level, "seniority_level fields don't match." ) self.assertEqual( job_instance.location, self.location, "location fields don't match." )
import random setup_environ(settings) from core.models import Job def get_month_range(date): year = date.year month = date.month first = datetime(year, month, 1) last = first + relativedelta(months = 1) - relativedelta(days=1) last = datetime(last.year, last.month, last.day, 23, 59, 59) return first, last date = datetime(2011, 01, 01).replace(tzinfo=utc) for i in range(0,20000): job = Job() job.name = 'foo' job.user_id = 1 job.application_id = 1 job.status = 'C' create = date + relativedelta(hours=random.uniform(0,17520)) # two years start = create + relativedelta(hours=random.uniform(0,6)) # end = start + relativedelta(hours=random.gauss(12,8)) # 12 hours, 8 hours end = start + relativedelta(hours=random.gauss(360,15)) # 15 days, 10 days job.create_time = create job.start_time = start job.end_time = end job.save() print "done."
try: po = pofile(filename, autodetect_encoding=True, encoding='utf-8') populate_db(po, job.language, job.package) except Exception, e: logging.error("Failed to open po file %s for %s" % (job.package.name, job.language.short_name)) logging.error("Error: %s" % str(e)) except Exception, e: logging.error("Failed to download the file located on %s" % url) logging.error("Error: %s" % str(e)) finally: # Extract what we need from the "old" job package = job.package language = job.language # Delete this job... logging.info(job.update_on) job.delete() logging.info("Job has been deleted.") # ... and create a new one, put it at the end of queue. try: job = Job.objects.get(language=language, package=package) except Job.DoesNotExist: job = Job(language=language, package=package) job.save() logging.info("New job has been created.") logging.info(job.update_on)