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 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 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 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 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 handle(self, *args, **options): # Check if exists any Job and create them if necessary for language in Language.objects.all(): for package in Package.objects.all(): try: Job.objects.get(language=language, package=package) except Job.DoesNotExist: Job(language=language, package=package).save() active_job = Job.objects.filter(active=True) if active_job: logging.info( "There's a job being run right now for %s - %s later" % (active_job[0].package.name, active_job[0].language.short_name)) logging.info("Will try again later!") return job = Job.objects.order_by('update_on')[0] logging.info("Running task for %s - %s" % (job.package.name, job.language.short_name)) logging.info("Setting job to 'active'.") job.active = True job.save() try: url = "%s.%s.po" % (job.package.src_url, job.language.short_name) logging.info("Fetching file from %s" % url) remote_file = urlopen(url) (fd, filename) = tempfile.mkstemp(job.package.name) f = os.fdopen(fd, "w") for line in remote_file.readlines(): f.write(line) f.close() logging.info("File has been downloaded.") 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))
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 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
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)
def import_(file_path: str = Argument( None, help="the path of the file to import. Only json files are supported at this " "time.", )): """Import an exported json file to the database.""" if os.path.isfile(file_path): with open(file_path) as f: dump_obj = json.loads(f.read()) time_clok_jobs = dump_obj["time_clok_jobs"] time_clok = dump_obj["time_clok"] time_clok_state = dump_obj["time_clok_state"] time_clok_journal = dump_obj["time_clok_journal"] jobs = [] for job in time_clok_jobs: jobs.append(Job(**job)) add_items_to_database(jobs) cloks = [] for clok in time_clok: cloks.append(Clok(**clok)) add_items_to_database(cloks) journals = [] for journal in time_clok_journal: journals.append(Journal(**journal)) add_items_to_database(journals) try: s = State(**time_clok_state[0]) s.save() except IntegrityError: pass else: raise FileNotFoundError(f"'{file_path}' does not exist.")
def create_unsaved(self, **overrides): kwargs = self.get_default_data() kwargs.update(overrides) return Job(**kwargs)
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)
def summary_view(request): jobs = Job() context = {"jobs": jobs.get_weekly_summary()} return render(request, template_name="summary.html", context=context)