Пример #1
0
	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
		)
Пример #2
0
 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()
Пример #3
0
 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()
Пример #4
0
 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')
Пример #5
0
 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()
Пример #6
0
    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))
Пример #7
0
 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')
Пример #8
0
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()
Пример #9
0
    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
Пример #10
0
    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()
Пример #11
0
    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
Пример #12
0
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")
Пример #13
0
    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)
Пример #14
0
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.")
Пример #15
0
 def create_unsaved(self, **overrides):
     kwargs = self.get_default_data()
     kwargs.update(overrides)
     return Job(**kwargs)
Пример #16
0
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."
Пример #17
0
            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)
Пример #18
0
def summary_view(request):
    jobs = Job()
    context = {"jobs": jobs.get_weekly_summary()}
    return render(request, template_name="summary.html", context=context)