def send_admin_review_email(job, sender=None): """Sends a notification to the admin to review the new/updated job listing. :param job: A `Job` instance. :param sender: The A string (of length 10) to attach to the email sender. """ recipient = settings.MAIL_ADMIN_RECIPIENT probable_update = job.created + timedelta(minutes=5) < now() new_or_update = 'newly updated' if probable_update else 'brand new' # Some copy-paste convenience in the email... script_path = os.path.join(settings.ROOT, 'scripts', 'management') context = { 'job': job, 'html2text': html2text, 'new_or_update': new_or_update, 'script_path': script_path } if sender is None: sender = DEFAULT_SENDER logger.info(u"Sending admin review email for job listing ({}).".format( job.id)) send_email_template('review', context, [recipient], sender=sender)
def send_admin_review_email(job, sender=None): """Sends a notification to the admin to review the new/updated job listing. :param job: A `Job` instance. :param sender: The A string (of length 10) to attach to the email sender. """ recipient = settings.MAIL_ADMIN_RECIPIENT probable_update = job.created + timedelta(minutes=5) < now() new_or_update = 'newly updated' if probable_update else 'brand new' # Some copy-paste convenience in the email... script_path = os.path.join(settings.ROOT, 'scripts', 'management') context = { 'job': job, 'html2text': html2text, 'new_or_update': new_or_update, 'script_path': script_path } if sender is None: sender = DEFAULT_SENDER logger.info(u"Sending admin review email for job listing ({}).".format(job.id)) send_email_template('review', context, [recipient], sender=sender)
def test_category_model(session): name = u'foo bar' category = Category(name=name) assert category.name == name assert category.slug == u'foo-bar' assert category.created <= now() category = Category(name=name, slug=u'forced') assert category.name == name assert category.slug == u'forced' assert category.created <= now() session.add(category) session.commit() assert category.id > 0 assert category.name == name assert category.created <= now()
def test_tag_model(session): tag_name = u'foo bar' tag = Tag(tag=tag_name) session.add(tag) session.commit() assert tag.tag == tag_name assert tag.slug == u'foo-bar' assert tag.created <= now()
def test_location_model(location, session): # Commit session for `location` fixture to be persisted. session.add(location) session.commit() assert location.id > 0 assert location.city == u'Lïmásѕ߀ɭ' assert location.country_name == 'Cyprus' assert location.country_code == 'CYP' assert location.created <= now() # Check if we get `arrow` dates back. assert type(location.created) is Arrow
def test_company_model(company, session): # Commit session for `company` fixture to be persisted. session.add(company) session.commit() name = u'remedica' assert company.id > 0 assert company.website is None assert company.slug == normalize('NFKD', name) assert company.created <= now() # Check if we get `arrow` dates back. assert type(company.created) is Arrow
def main(session): dropbox = DropboxClient(settings.DROPBOX_OAUTH_TOKEN) dburi = settings.SQLALCHEMY_DATABASE_URI dbpath = dburi.replace('sqlite:////', '') env = 'production' if not settings.DEBUG else 'dev' filename = 'backup.{}.{}.db'.format(now().format('YYYYMMDDHHmm'), env) logger.info('Backup started for {} with filename {}.'.format(dbpath, filename)) with open(dbpath) as db: try: response = dropbox.put_file(filename, db) rev = response['rev'] logger.info("Backup complete with revision id {}.".format(rev)) except ErrorResponse as err: code = err.status msg = err.error_msg logger.error("Backup failed with code {} message '{}'.".format(code, msg))
def test_job_model(company, location, session): title = u'ríbëyé' recruiter_name = u'相' recruiter_email = u'思' job = Job(title=title, description=title, contact_method=1, remote_work=False, company=company, location=location, job_type=1, recruiter_name=recruiter_name, recruiter_email=recruiter_email) session.add(job) session.commit() assert job.id > 0 assert not job.published assert job.company_id == company.id assert job.company.id == company.id assert job.location_id == location.id assert job.location.id == location.id assert job.title == title assert job.description == title assert job.contact_method == 1 assert job.job_type == 1 assert job.slug == normalize('NFKD', title) assert str(job.id) in job.url() assert job.company.slug in job.url() assert 'http' not in job.url() assert str(job.id) in job.url(external=True) assert job.company.slug in job.url(external=True) assert 'http' in job.url(external=True) assert str(job.id) in job.edit_url() and job.admin_token in job.edit_url() assert job.recruiter_name == recruiter_name assert job.recruiter_email == recruiter_email assert job.created <= now() # Check if we get `arrow` dates back. assert type(job.created) is Arrow
def main(session): dropbox = DropboxClient(settings.DROPBOX_OAUTH_TOKEN) dburi = settings.SQLALCHEMY_DATABASE_URI dbpath = dburi.replace('sqlite:////', '') env = 'production' if not settings.DEBUG else 'dev' filename = 'backup.{}.{}.db'.format(now().format('YYYYMMDDHHmm'), env) logger.info('Backup started for {} with filename {}.'.format( dbpath, filename)) with open(dbpath) as db: try: response = dropbox.put_file(filename, db) rev = response['rev'] logger.info("Backup complete with revision id {}.".format(rev)) except ErrorResponse as err: code = err.status msg = err.error_msg logger.error("Backup failed with code {} message '{}'.".format( code, msg))
def main(session): logger.info('Selecting candidates for broadcast.') threshold = settings.BROADCAST_EXPIRY_THRESHOLD_DAYS services = settings.ZAPIER_WEBHOOKS.keys() selection = [] for job in session.query(Job).filter_by(published=True): broadcasts = session.query(SocialBroadcast)\ .filter_by(job=job, success=True)\ .order_by(SocialBroadcast.created.desc())\ .all() if not broadcasts: logger.debug( "Selecting job ({}) because it has not been " "broadcasted before.".format(job.id) ) selection.append(job) continue diff = (now() - broadcasts[0].created).days if diff >= threshold: logger.debug( "Selecting job ({}) because it has not been " "successfully broadcasted for {} days.".format(job.id, threshold) ) selection.append(job) continue logger.debug("Skipping job ({}) for broadcasting.".format(job.id)) logger.info("Selected {} candidates for broadcast.".format(len(selection))) for selected in selection: for service in services: sb = social_broadcast(selected, service) session.add(sb) session.commit()
def main(session): logger.info('Selecting candidates for broadcast.') threshold = settings.BROADCAST_EXPIRY_THRESHOLD_DAYS services = settings.ZAPIER_WEBHOOKS.keys() selection = [] for job in session.query(Job).filter_by(published=True): broadcasts = session.query(SocialBroadcast)\ .filter_by(job=job, success=True)\ .order_by(SocialBroadcast.created.desc())\ .all() if not broadcasts: logger.debug("Selecting job ({}) because it has not been " "broadcasted before.".format(job.id)) selection.append(job) continue diff = (now() - broadcasts[0].created).days if diff >= threshold: logger.debug("Selecting job ({}) because it has not been " "successfully broadcasted for {} days.".format( job.id, threshold)) selection.append(job) continue logger.debug("Skipping job ({}) for broadcasting.".format(job.id)) logger.info("Selected {} candidates for broadcast.".format(len(selection))) for selected in selection: for service in services: sb = social_broadcast(selected, service) session.add(sb) session.commit()
def use(self): self.used = True self.used_at = now()
def __init__(self, *args, **kwargs): if self.created is None: self.created = now() super(BaseModel, self).__init__(*args, **kwargs)