Ejemplo n.º 1
0
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'))
Ejemplo n.º 2
0
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")
Ejemplo n.º 3
0
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')
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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'))
Ejemplo n.º 7
0
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')
Ejemplo n.º 8
0
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'))
Ejemplo n.º 9
0
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')
Ejemplo n.º 10
0
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')
Ejemplo n.º 11
0
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'))
Ejemplo n.º 12
0
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'))