diff --git a/hasjob/models/jobpost.py b/hasjob/models/jobpost.py index 93c26457f..61891095c 100644 --- a/hasjob/models/jobpost.py +++ b/hasjob/models/jobpost.py @@ -306,6 +306,8 @@ def url_for(self, action='view', _external=False, **kwargs): return url_for('editjob', hashid=self.hashid, domain=domain, _external=_external, **kwargs) elif action == 'withdraw': return url_for('withdraw', hashid=self.hashid, domain=domain, _external=_external, **kwargs) + elif action == 'report': + return url_for('reportjob', hashid=self.hashid, domain=domain, _external=_external, **kwargs) elif action == 'close': return url_for('close', hashid=self.hashid, domain=domain, _external=_external, **kwargs) elif action == 'viewstats': diff --git a/hasjob/templates/inc/reportform.html.jinja2 b/hasjob/templates/inc/reportform.html.jinja2 index 4756df43d..93bdce463 100644 --- a/hasjob/templates/inc/reportform.html.jinja2 +++ b/hasjob/templates/inc/reportform.html.jinja2 @@ -1,5 +1,5 @@ {% from "baseframe/forms.html.jinja2" import renderfield, ajaxform %} -
+ {{ reportform.hidden_tag() }} diff --git a/hasjob/views/listing.py b/hasjob/views/listing.py index 7688b4030..d0dcb38da 100644 --- a/hasjob/views/listing.py +++ b/hasjob/views/listing.py @@ -31,10 +31,10 @@ get_post_viewcounts) -@app.route('//', methods=('GET', 'POST'), subdomain='') -@app.route('//', methods=('GET', 'POST')) -@app.route('/view/', defaults={'domain': None}, methods=('GET', 'POST'), subdomain='') -@app.route('/view/', defaults={'domain': None}, methods=('GET', 'POST')) +@app.route('//', methods=('GET',), subdomain='') +@app.route('//', methods=('GET',)) +@app.route('/view/', defaults={'domain': None}, methods=('GET',), subdomain='') +@app.route('/view/', defaults={'domain': None}, methods=('GET',)) def jobdetail(domain, hashid): is_siteadmin = lastuser.has_permission('siteadmin') query = JobPost.fetch(hashid).options( @@ -95,6 +95,7 @@ def jobdetail(domain, hashid): 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': @@ -104,27 +105,6 @@ def jobdetail(domain, hashid): else: pinnedform = forms.PinnedForm(obj=post) - 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 "

Thanks! This post has been flagged for review

" # FIXME: Ugh! - else: - flash("Thanks! This post has been flagged for review", "interactive") - else: - if request.is_xhr: - return "

You need to be logged in to report a post

" # FIXME: Ugh! - else: - flash("You need to be logged in to report a post", "interactive") - elif request.method == 'POST' and request.is_xhr: - return render_template('inc/reportform.html.jinja2', 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: @@ -192,6 +172,35 @@ def job_related_posts(domain, hashid): related_posts=related_posts, is_siteadmin=is_siteadmin) +@app.route('///report', methods=('POST',), subdomain='') +@app.route('///report', methods=('POST',)) +@app.route('/report/', defaults={'domain': None}, methods=('POST',), subdomain='') +@app.route('/report/', defaults={'domain': None}, methods=('POST',)) +@lastuser.requires_login +def reportjob(domain, hashid): + post = JobPost.fetch(hashid).options(db.load_only('id')).first_or_404() + + 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')] + + if reportform.validate_on_submit(): + 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() + return "

Thanks! This post has been flagged for review

" # FIXME: Ugh! + else: + return render_template('inc/reportform.html', reportform=reportform) + + @app.route('///star', defaults={'domain': None}, methods=['POST'], subdomain='') @app.route('///star', defaults={'domain': None}, methods=['POST']) @app.route('/star/', defaults={'domain': None}, methods=['POST'], subdomain='')