def revealjob(hashid): """ This view is a GET request and that is intentional. """ post = JobPost.query.filter_by(hashid=hashid).first_or_404() if post.status in [POSTSTATUS.REJECTED, POSTSTATUS.WITHDRAWN, POSTSTATUS.SPAM]: abort(410) jobview = UserJobView.query.get((g.user.id, post.id)) if jobview is None: jobview = UserJobView(user=g.user, jobpost=post, applied=True) cache.delete_memoized(viewcounts_by_id, post.id) cache.delete_memoized(viewstats_by_id_qhour, post.id) cache.delete_memoized(viewstats_by_id_hour, post.id) cache.delete_memoized(viewstats_by_id_day, post.id) db.session.add(jobview) try: db.session.commit() except IntegrityError: db.session.rollback() pass # User double-clicked. Ignore. viewcounts_by_id(post.id) # Re-populate cache elif not jobview.applied: jobview.applied = True cache.delete_memoized(viewcounts_by_id, post.id) cache.delete_memoized(viewstats_by_id_qhour, post.id) cache.delete_memoized(viewstats_by_id_hour, post.id) cache.delete_memoized(viewstats_by_id_day, post.id) db.session.commit() viewcounts_by_id(post.id) # Re-populate cache if request.is_xhr: return redactemail(post.how_to_apply) else: return redirect(url_for('jobdetail', hashid=post.hashid), 303)
def revealjob(hashid): """ This view is a GET request and that is intentional. """ post = JobPost.query.filter_by(hashid=hashid).first_or_404() if post.status in [ POSTSTATUS.REJECTED, POSTSTATUS.WITHDRAWN, POSTSTATUS.SPAM ]: abort(410) jobview = UserJobView.query.get((g.user.id, post.id)) if jobview is None: jobview = UserJobView(user=g.user, jobpost=post, applied=True) cache.delete_memoized(viewcounts_by_id, post.id) cache.delete_memoized(viewstats_by_id_qhour, post.id) cache.delete_memoized(viewstats_by_id_hour, post.id) cache.delete_memoized(viewstats_by_id_day, post.id) db.session.add(jobview) try: db.session.commit() except IntegrityError: db.session.rollback() pass # User double-clicked. Ignore. viewcounts_by_id(post.id) # Re-populate cache elif not jobview.applied: jobview.applied = True cache.delete_memoized(viewcounts_by_id, post.id) cache.delete_memoized(viewstats_by_id_qhour, post.id) cache.delete_memoized(viewstats_by_id_hour, post.id) cache.delete_memoized(viewstats_by_id_day, post.id) db.session.commit() viewcounts_by_id(post.id) # Re-populate cache if request.is_xhr: return redactemail(post.how_to_apply) else: return redirect(url_for('jobdetail', hashid=post.hashid), 303)
def jobdetail(hashid): post = JobPost.query.filter_by(hashid=hashid).first_or_404() if post.status in [POSTSTATUS.DRAFT, POSTSTATUS.PENDING]: if post.edit_key not in session.get('userkeys', []) or (g.user and not post.admin_is(g.user)): abort(403) if post.status in [POSTSTATUS.REJECTED, POSTSTATUS.WITHDRAWN, POSTSTATUS.SPAM]: abort(410) if g.user: jobview = UserJobView.query.get((g.user.id, post.id)) if jobview is None: jobview = UserJobView(user=g.user, jobpost=post) cache.delete_memoized(viewcounts_by_id, post.id) cache.delete_memoized(viewstats_by_id_qhour, post.id) cache.delete_memoized(viewstats_by_id_hour, post.id) cache.delete_memoized(viewstats_by_id_day, post.id) db.session.add(jobview) try: db.session.commit() except IntegrityError: db.session.rollback() pass # User opened two tabs at once? We don't really know viewcounts_by_id(post.id) # Re-populate cache else: jobview = None if g.user: report = JobPostReport.query.filter_by(post=post, user=g.user).first() else: report = None reportform = forms.ReportForm(obj=report) reportform.report_code.choices = [(ob.id, ob.title) for ob in ReportCode.query.filter_by(public=True).order_by('seq')] rejectform = forms.RejectForm() stickyform = forms.StickyForm(obj=post) applyform = None # User isn't allowed to apply unless non-None if g.user: job_application = JobApplication.query.filter_by(user=g.user, jobpost=post).first() if not job_application: applyform = forms.ApplicationForm() applyform.apply_phone.data = g.user.phone else: job_application = None if reportform.validate_on_submit(): if g.user: if report is None: report = JobPostReport(post=post, user=g.user) report.reportcode_id = reportform.report_code.data report.ipaddr = request.environ['REMOTE_ADDR'] report.useragent = request.user_agent.string db.session.add(report) db.session.commit() if request.is_xhr: return "<p>Thanks! This listing has been flagged for review</p>" # FIXME: Ugh! else: flash("Thanks! This listing has been flagged for review", "interactive") else: if request.is_xhr: return "<p>You need to be logged in to report a listing</p>" # FIXME: Ugh! else: flash("You need to be logged in to report a listing", "interactive") elif request.method == 'POST' and request.is_xhr: return render_template('inc/reportform.html', reportform=reportform, ajaxreg=True) return render_template('detail.html', post=post, reportform=reportform, rejectform=rejectform, stickyform=stickyform, applyform=applyform, job_application=job_application, webmail_domains=webmail_domains, jobview=jobview, report=report, siteadmin=lastuser.has_permission('siteadmin') )
def jobdetail(hashid): post = JobPost.query.filter_by(hashid=hashid).first_or_404() if g.board and post.link_to_board(g.board) is None: blink = post.postboards.first() if blink: return redirect(url_for('jobdetail', hashid=post.hashid, subdomain=blink.board.name, _external=True)) else: return redirect(url_for('jobdetail', hashid=post.hashid, subdomain=None, _external=True)) if post.status in [POSTSTATUS.DRAFT, POSTSTATUS.PENDING]: if not ((g.user and post.admin_is(g.user)) or post.edit_key in session.get('userkeys', [])): abort(403) if post.status in POSTSTATUS.GONE: abort(410) if g.user: jobview = UserJobView.query.get((g.user.id, post.id)) if jobview is None: jobview = UserJobView(user=g.user, jobpost=post) cache.delete_memoized(viewcounts_by_id, post.id) cache.delete_memoized(viewstats_by_id_qhour, post.id) cache.delete_memoized(viewstats_by_id_hour, post.id) cache.delete_memoized(viewstats_by_id_day, post.id) db.session.add(jobview) try: db.session.commit() except IntegrityError: db.session.rollback() pass # User opened two tabs at once? We don't really know viewcounts_by_id(post.id) # Re-populate cache else: jobview = None if g.user: report = JobPostReport.query.filter_by(post=post, user=g.user).first() else: report = None reportform = forms.ReportForm(obj=report) reportform.report_code.choices = [(ob.id, ob.title) for ob in ReportCode.query.filter_by(public=True).order_by('seq')] rejectform = forms.RejectForm() moderateform = forms.ModerateForm() if request.method == 'GET': moderateform.reason.data = post.review_comments if g.board: pinnedform = forms.PinnedForm(obj=post.link_to_board(g.board)) else: pinnedform = forms.PinnedForm(obj=post) applyform = None # User isn't allowed to apply unless non-None if g.user: job_application = JobApplication.query.filter_by(user=g.user, jobpost=post).first() if not job_application: applyform = forms.ApplicationForm() applyform.apply_phone.data = g.user.phone elif g.kiosk and g.peopleflow_url: applyform = forms.KioskApplicationForm() job_application = None else: job_application = None if reportform.validate_on_submit(): if g.user: if report is None: report = JobPostReport(post=post, user=g.user) report.reportcode_id = reportform.report_code.data report.ipaddr = request.environ['REMOTE_ADDR'] report.useragent = request.user_agent.string db.session.add(report) db.session.commit() if request.is_xhr: return "<p>Thanks! This listing has been flagged for review</p>" # FIXME: Ugh! else: flash("Thanks! This listing has been flagged for review", "interactive") else: if request.is_xhr: return "<p>You need to be logged in to report a listing</p>" # FIXME: Ugh! else: flash("You need to be logged in to report a listing", "interactive") elif request.method == 'POST' and request.is_xhr: return render_template('inc/reportform.html', reportform=reportform) if post.company_url and post.status != POSTSTATUS.ANNOUNCEMENT: domain_mismatch = not base_domain_matches(post.company_url.lower(), post.email_domain.lower()) else: domain_mismatch = False return render_template('detail.html', post=post, reportform=reportform, rejectform=rejectform, pinnedform=pinnedform, applyform=applyform, job_application=job_application, jobview=jobview, report=report, moderateform=moderateform, domain_mismatch=domain_mismatch, siteadmin=lastuser.has_permission('siteadmin') )
def jobdetail(hashid): post = JobPost.query.filter_by(hashid=hashid).first_or_404() if g.board and post.link_to_board(g.board) is None: blink = post.postboards.first() if blink: return redirect( url_for('jobdetail', hashid=post.hashid, subdomain=blink.board.name, _external=True)) else: return redirect( url_for('jobdetail', hashid=post.hashid, subdomain=None, _external=True)) if post.status in [POSTSTATUS.DRAFT, POSTSTATUS.PENDING]: if not ((g.user and post.admin_is(g.user)) or post.edit_key in session.get('userkeys', [])): abort(403) if post.status in POSTSTATUS.GONE: abort(410) if g.user: jobview = UserJobView.query.get((g.user.id, post.id)) if jobview is None: jobview = UserJobView(user=g.user, jobpost=post) cache.delete_memoized(viewcounts_by_id, post.id) cache.delete_memoized(viewstats_by_id_qhour, post.id) cache.delete_memoized(viewstats_by_id_hour, post.id) cache.delete_memoized(viewstats_by_id_day, post.id) db.session.add(jobview) try: db.session.commit() except IntegrityError: db.session.rollback() pass # User opened two tabs at once? We don't really know viewcounts_by_id(post.id) # Re-populate cache else: jobview = None if g.user: report = JobPostReport.query.filter_by(post=post, user=g.user).first() else: report = None reportform = forms.ReportForm(obj=report) reportform.report_code.choices = [ (ob.id, ob.title) for ob in ReportCode.query.filter_by(public=True).order_by('seq') ] rejectform = forms.RejectForm() moderateform = forms.ModerateForm() if request.method == 'GET': moderateform.reason.data = post.review_comments if g.board: pinnedform = forms.PinnedForm(obj=post.link_to_board(g.board)) else: pinnedform = forms.PinnedForm(obj=post) applyform = None # User isn't allowed to apply unless non-None if g.user: job_application = JobApplication.query.filter_by(user=g.user, jobpost=post).first() if not job_application: applyform = forms.ApplicationForm() applyform.apply_phone.data = g.user.phone elif g.kiosk and g.peopleflow_url: applyform = forms.KioskApplicationForm() job_application = None else: job_application = None if reportform.validate_on_submit(): if g.user: if report is None: report = JobPostReport(post=post, user=g.user) report.reportcode_id = reportform.report_code.data report.ipaddr = request.environ['REMOTE_ADDR'] report.useragent = request.user_agent.string db.session.add(report) db.session.commit() if request.is_xhr: return "<p>Thanks! This listing has been flagged for review</p>" # FIXME: Ugh! else: flash("Thanks! This listing has been flagged for review", "interactive") else: if request.is_xhr: return "<p>You need to be logged in to report a listing</p>" # FIXME: Ugh! else: flash("You need to be logged in to report a listing", "interactive") elif request.method == 'POST' and request.is_xhr: return render_template('inc/reportform.html', reportform=reportform) if post.company_url and post.status != POSTSTATUS.ANNOUNCEMENT: domain_mismatch = not base_domain_matches(post.company_url.lower(), post.email_domain.lower()) else: domain_mismatch = False return render_template('detail.html', post=post, reportform=reportform, rejectform=rejectform, pinnedform=pinnedform, applyform=applyform, job_application=job_application, jobview=jobview, report=report, moderateform=moderateform, domain_mismatch=domain_mismatch, siteadmin=lastuser.has_permission('siteadmin'))
def jobdetail(hashid): post = JobPost.query.filter_by(hashid=hashid).first_or_404() if post.status in [POSTSTATUS.DRAFT, POSTSTATUS.PENDING]: if post.edit_key not in session.get( 'userkeys', []) or (g.user and not post.admin_is(g.user)): abort(403) if post.status in [ POSTSTATUS.REJECTED, POSTSTATUS.WITHDRAWN, POSTSTATUS.SPAM ]: abort(410) if g.user: jobview = UserJobView.query.get((g.user.id, post.id)) if jobview is None: jobview = UserJobView(user=g.user, jobpost=post) cache.delete_memoized(viewcounts_by_id, post.id) cache.delete_memoized(viewstats_by_id_qhour, post.id) cache.delete_memoized(viewstats_by_id_hour, post.id) cache.delete_memoized(viewstats_by_id_day, post.id) db.session.add(jobview) try: db.session.commit() except IntegrityError: db.session.rollback() pass # User opened two tabs at once? We don't really know viewcounts_by_id(post.id) # Re-populate cache else: jobview = None if g.user: report = JobPostReport.query.filter_by(post=post, user=g.user).first() else: report = None reportform = forms.ReportForm(obj=report) reportform.report_code.choices = [ (ob.id, ob.title) for ob in ReportCode.query.filter_by(public=True).order_by('seq') ] rejectform = forms.RejectForm() stickyform = forms.StickyForm(obj=post) applyform = None # User isn't allowed to apply unless non-None if g.user: job_application = JobApplication.query.filter_by(user=g.user, jobpost=post).first() if not job_application: applyform = forms.ApplicationForm() applyform.apply_phone.data = g.user.phone else: job_application = None if reportform.validate_on_submit(): if g.user: if report is None: report = JobPostReport(post=post, user=g.user) report.reportcode_id = reportform.report_code.data report.ipaddr = request.environ['REMOTE_ADDR'] report.useragent = request.user_agent.string db.session.add(report) db.session.commit() if request.is_xhr: return "<p>Thanks! This listing has been flagged for review</p>" # FIXME: Ugh! else: flash("Thanks! This listing has been flagged for review", "interactive") else: if request.is_xhr: return "<p>You need to be logged in to report a listing</p>" # FIXME: Ugh! else: flash("You need to be logged in to report a listing", "interactive") elif request.method == 'POST' and request.is_xhr: return render_template('inc/reportform.html', reportform=reportform, ajaxreg=True) return render_template('detail.html', post=post, reportform=reportform, rejectform=rejectform, stickyform=stickyform, applyform=applyform, job_application=job_application, webmail_domains=webmail_domains, jobview=jobview, report=report, siteadmin=lastuser.has_permission('siteadmin'))