def index(basequery=None, type=None, category=None, md5sum=None, domain=None, title=None): now = datetime.utcnow() posts = list(getposts(basequery, sticky=True)) if posts: employer_name = posts[0].company_name else: employer_name = u'a single employer' if basequery is None and posts and not g.kiosk: # Group posts by email_domain on index page only, when not in kiosk mode grouped = OrderedDict() for post in posts: if post.sticky: # Make sticky posts appear in a group of one grouped.setdefault(('s', post.hashid), []).append(post) # if post.email_domain in webmail_domains: # grouped.setdefault(('se', post.md5sum), []).append(post) # else: # grouped.setdefault(('sd', post.email_domain), []).append(post) elif post.email_domain in webmail_domains: grouped.setdefault(('ne', post.md5sum), []).append(post) else: grouped.setdefault(('nd', post.email_domain), []).append(post) else: grouped = None return render_template('index.html', posts=posts, grouped=grouped, now=now, newlimit=newlimit, jobtype=type, jobcategory=category, title=title, md5sum=md5sum, domain=domain, employer_name=employer_name, siteadmin=lastuser.has_permission('siteadmin'))
def sitemap(): sitemapxml = ( '<?xml version="1.0" encoding="UTF-8"?>\n' '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n' ) # Add job type pages to sitemap for item in JobType.query.filter_by(public=True).all(): sitemapxml += ( " <url>\n" " <loc>%s</loc>\n" % url_for("browse_by_type", name=item.name, _external=True) + " </url>\n" ) # Add job category pages to sitemap for item in JobCategory.query.filter_by(public=True).all(): sitemapxml += ( " <url>\n" " <loc>%s</loc>\n" % url_for("browse_by_category", name=item.name, _external=True) + " </url>\n" ) # Add live posts to sitemap for post in getposts(showall=True): sitemapxml += ( " <url>\n" " <loc>%s</loc>\n" % url_for("jobdetail", hashid=post.hashid, _external=True) + " <lastmod>%s</lastmod>\n" % (post.datetime.isoformat() + "Z") + " <changefreq>monthly</changefreq>\n" " </url>\n" ) sitemapxml += "</urlset>" return Response(sitemapxml, content_type="text/xml; charset=utf-8")
def feed(basequery=None, type=None, category=None, md5sum=None, domain=None, location=None): title = "All jobs" if type: title = type.title elif category: title = category.title elif md5sum or domain: title = u"Jobs at a single employer" elif location: title = u"Jobs in {location}".format(location=location['short_title']) posts = list(getposts(basequery, showall=True)) if posts: # Can't do this unless posts is a list updated = posts[0].datetime.isoformat() + 'Z' if md5sum: title = posts[0].company_name else: updated = datetime.utcnow().isoformat() + 'Z' return Response(render_template('feed.xml', posts=posts, updated=updated, title=title), content_type='application/atom+xml; charset=utf-8')
def index(basequery=None, type=None, category=None, md5sum=None, domain=None): now = datetime.utcnow() posts = list(getposts(basequery, sticky=True)) if posts: employer_name = posts[0].company_name else: employer_name = u'a single employer' if basequery is None and posts: # Group posts by email_domain on index page only grouped = OrderedDict() for post in posts: if post.sticky: if post.email_domain in webmail_domains: grouped.setdefault(('se', post.md5sum), []).append(post) else: grouped.setdefault(('sd', post.email_domain), []).append(post) elif post.email_domain in webmail_domains: grouped.setdefault(('ne', post.md5sum), []).append(post) else: grouped.setdefault(('nd', post.email_domain), []).append(post) else: grouped = None return render_template('index.html', posts=posts, grouped=grouped, now=now, newlimit=newlimit, jobtype=type, jobcategory=category, md5sum=md5sum, domain=domain, employer_name=employer_name)
def index(basequery=None, type=None, category=None, md5sum=None, domain=None): now = datetime.utcnow() posts = list(getposts(basequery, sticky=True)) if posts: employer_name = posts[0].company_name else: employer_name = u'a single employer' if basequery is None and posts: # Group posts by email_domain on index page only grouped = OrderedDict() for post in posts: if post.sticky: if post.email_domain in webmail_domains: grouped.setdefault(('se', post.md5sum), []).append(post) else: grouped.setdefault(('sd', post.email_domain), []).append(post) elif post.email_domain in webmail_domains: grouped.setdefault(('ne', post.md5sum), []).append(post) else: grouped.setdefault(('nd', post.email_domain), []).append(post) else: grouped = None return render_template('index.html', posts=posts, grouped=grouped, now=now, newlimit=newlimit, jobtype=type, jobcategory=category, md5sum=md5sum, domain=domain, employer_name=employer_name)
def index(basequery=None, type=None, category=None, md5sum=None, domain=None, location=None, title=None, showall=False, statuses=None): now = datetime.utcnow() if g.user or g.kiosk or (g.board and not g.board.require_login): showall = True posts = list(getposts(basequery, pinned=True, showall=showall, statuses=statuses)) if posts: employer_name = posts[0].company_name else: employer_name = u'a single employer' # Make lookup slightly faster in the loop below since 'g' is a proxy board = g.board if basequery is None and posts and not g.kiosk: # Group posts by email_domain on index page only, when not in kiosk mode grouped = OrderedDict() for post in posts: pinned = post.pinned if board is not None: blink = post.link_to_board(board) if blink is not None: pinned = blink.pinned if pinned: # Make pinned posts appear in a group of one grouped.setdefault(('s', post.hashid), []).append((pinned, post)) elif post.status == POSTSTATUS.ANNOUNCEMENT: # Make announcements also appear in a group of one grouped.setdefault(('a', post.hashid), []).append((pinned, post)) elif post.email_domain in webmail_domains: grouped.setdefault(('ne', post.md5sum), []).append((pinned, post)) else: grouped.setdefault(('nd', post.email_domain), []).append((pinned, post)) pinsandposts = None else: grouped = None if g.board: pinsandposts = [] for post in posts: pinned = post.pinned if board is not None: blink = post.link_to_board(board) if blink is not None: pinned = blink.pinned pinsandposts.append((pinned, post)) else: pinsandposts = [(post.pinned, post) for post in posts] return render_template('index.html', pinsandposts=pinsandposts, grouped=grouped, now=now, newlimit=newlimit, jobtype=type, jobcategory=category, title=title, md5sum=md5sum, domain=domain, employer_name=employer_name, location=location, showall=showall, siteadmin=lastuser.has_permission('siteadmin'))
def feed(basequery=None, type=None, category=None, md5sum=None, domain=None): title = "All jobs" if type: title = type.title elif category: title = category.title elif md5sum or domain: title = u"Jobs at a single employer" posts = list(getposts(basequery, showall=True)) if posts: # Can't do this unless posts is a list updated = posts[0].datetime.isoformat() + 'Z' if md5sum: title = posts[0].company_name else: updated = datetime.utcnow().isoformat() + 'Z' return Response(render_template('feed.xml', posts=posts, updated=updated, title=title), content_type='application/atom+xml; charset=utf-8')
def index(basequery=None, type=None, category=None, md5sum=None, domain=None, title=None): now = datetime.utcnow() posts = list(getposts(basequery, sticky=True)) if posts: employer_name = posts[0].company_name else: employer_name = u'a single employer' if basequery is None and posts and not g.kiosk: # Group posts by email_domain on index page only, when not in kiosk mode grouped = OrderedDict() for post in posts: if post.sticky: # Make sticky posts appear in a group of one grouped.setdefault(('s', post.hashid), []).append(post) # if post.email_domain in webmail_domains: # grouped.setdefault(('se', post.md5sum), []).append(post) # else: # grouped.setdefault(('sd', post.email_domain), []).append(post) elif post.email_domain in webmail_domains: grouped.setdefault(('ne', post.md5sum), []).append(post) else: grouped.setdefault(('nd', post.email_domain), []).append(post) else: grouped = None return render_template('index.html', posts=posts, grouped=grouped, now=now, newlimit=newlimit, jobtype=type, jobcategory=category, title=title, md5sum=md5sum, domain=domain, employer_name=employer_name, siteadmin=lastuser.has_permission('siteadmin'))
def sitemap(): sitemapxml = '<?xml version="1.0" encoding="UTF-8"?>\n'\ '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n' # Add job type pages to sitemap for item in JobType.query.all(): sitemapxml += ' <url>\n'\ ' <loc>%s</loc>\n' % url_for('browse_by_type', name=item.name, _external=True) + \ ' </url>\n' # Add job category pages to sitemap for item in JobCategory.query.all(): sitemapxml += ' <url>\n'\ ' <loc>%s</loc>\n' % url_for('browse_by_category', name=item.name, _external=True) + \ ' </url>\n' # Add live posts to sitemap for post in getposts(showall=True): sitemapxml += ' <url>\n'\ ' <loc>%s</loc>\n' % url_for('jobdetail', hashid=post.hashid, _external=True) + \ ' <lastmod>%s</lastmod>\n' % (post.datetime.isoformat() + 'Z') + \ ' <changefreq>monthly</changefreq>\n'\ ' </url>\n' sitemapxml += '</urlset>' return Response(sitemapxml, content_type='text/xml; charset=utf-8')
def sitemap(): sitemapxml = '<?xml version="1.0" encoding="UTF-8"?>\n'\ '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n' # Add job type pages to sitemap for item in JobType.query.filter_by(public=True).all(): sitemapxml += ' <url>\n'\ ' <loc>%s</loc>\n' % url_for('browse_by_type', name=item.name, _external=True) + \ ' </url>\n' # Add job category pages to sitemap for item in JobCategory.query.filter_by(public=True).all(): sitemapxml += ' <url>\n'\ ' <loc>%s</loc>\n' % url_for('browse_by_category', name=item.name, _external=True) + \ ' </url>\n' # Add live posts to sitemap for post in getposts(showall=True): sitemapxml += ' <url>\n'\ ' <loc>%s</loc>\n' % url_for('jobdetail', hashid=post.hashid, _external=True) + \ ' <lastmod>%s</lastmod>\n' % (post.datetime.isoformat() + 'Z') + \ ' <changefreq>monthly</changefreq>\n'\ ' </url>\n' sitemapxml += '</urlset>' return Response(sitemapxml, content_type='text/xml; charset=utf-8')
def index(basequery=None, type=None, category=None, md5sum=None, domain=None, location=None, title=None, showall=False, statuses=None): now = datetime.utcnow() if g.user or g.kiosk or g.board: showall = True posts = list(getposts(basequery, pinned=True, showall=showall, statuses=statuses)) if posts: employer_name = posts[0].company_name else: employer_name = u'a single employer' if basequery is None and posts and not g.kiosk: # Group posts by email_domain on index page only, when not in kiosk mode grouped = OrderedDict() for post in posts: if post.pinned: # Make pinned posts appear in a group of one grouped.setdefault(('s', post.hashid), []).append(post) # if post.email_domain in webmail_domains: # grouped.setdefault(('se', post.md5sum), []).append(post) # else: # grouped.setdefault(('sd', post.email_domain), []).append(post) elif post.status == POSTSTATUS.ANNOUNCEMENT: # Make announcements also appear in a group of one grouped.setdefault(('a', post.hashid), []).append(post) elif post.email_domain in webmail_domains: grouped.setdefault(('ne', post.md5sum), []).append(post) else: grouped.setdefault(('nd', post.email_domain), []).append(post) else: grouped = None return render_template('index.html', posts=posts, grouped=grouped, now=now, newlimit=newlimit, jobtype=type, jobcategory=category, title=title, md5sum=md5sum, domain=domain, employer_name=employer_name, location=location, showall=showall, siteadmin=lastuser.has_permission('siteadmin'))
def index(basequery=None, type=None, category=None, md5sum=None, domain=None, location=None, title=None, showall=False, statuses=None): now = datetime.utcnow() if g.user or g.kiosk or (g.board and not g.board.require_login): showall = True posts = list( getposts(basequery, pinned=True, showall=showall, statuses=statuses)) if posts: employer_name = posts[0].company_name else: employer_name = u'a single employer' # Make lookup slightly faster in the loop below since 'g' is a proxy board = g.board if basequery is None and posts and not g.kiosk: # Group posts by email_domain on index page only, when not in kiosk mode grouped = OrderedDict() for post in posts: pinned = post.pinned if board is not None: blink = post.link_to_board(board) if blink is not None: pinned = blink.pinned if pinned: # Make pinned posts appear in a group of one grouped.setdefault(('s', post.hashid), []).append( (pinned, post)) elif post.status == POSTSTATUS.ANNOUNCEMENT: # Make announcements also appear in a group of one grouped.setdefault(('a', post.hashid), []).append( (pinned, post)) elif post.email_domain in webmail_domains: grouped.setdefault(('ne', post.md5sum), []).append( (pinned, post)) else: grouped.setdefault(('nd', post.email_domain), []).append( (pinned, post)) pinsandposts = None else: grouped = None if g.board: pinsandposts = [] for post in posts: pinned = post.pinned if board is not None: blink = post.link_to_board(board) if blink is not None: pinned = blink.pinned pinsandposts.append((pinned, post)) else: pinsandposts = [(post.pinned, post) for post in posts] return render_template('index.html', pinsandposts=pinsandposts, grouped=grouped, now=now, newlimit=newlimit, jobtype=type, jobcategory=category, title=title, md5sum=md5sum, domain=domain, employer_name=employer_name, location=location, showall=showall, siteadmin=lastuser.has_permission('siteadmin'))