Ejemplo n.º 1
0
def compute_activity(lang="", cache=True, url=''):
    set_language_switch_link("activity_index", lang=lang)
    art, lang = getcache('activity', lang, cache)

    if art is not None:
        return art

    infotext = helpers.get_infotext("activity", request.url_rule.rule)

    # Fix list with references to be inserted in results
    reference_list = static_info.activities_reference_list
    [ref.append("reference") for ref in reference_list]

    art = bucketcall(queryfield='verksamhetstext',
                     name='activity',
                     title=gettext("Activities"),
                     infotext=infotext,
                     alphabetical=True,
                     description=helpers.get_shorttext(infotext),
                     insert_entries=reference_list,
                     page_url=url)
    try:
        with mc_pool.reserve() as client:
            client.set(cache_name('activity', lang),
                       art,
                       time=app.config['CACHE_TIME'])
    except:
        # TODO what to do?
        pass
    return art
Ejemplo n.º 2
0
def keyword_index():
    infotext = helpers.get_infotext("keyword", request.url_rule.rule)
    set_language_switch_link("keyword_index")
    lang = 'sv' if 'sv' in request.url_rule.rule else 'en'
    pagename = 'keyword'
    art = check_cache(pagename, lang=lang)
    if art is not None:
        return art

    if lang == "en":
        reference_list = []
        queryfield = "nyckelord_eng"
    else:
        # Fix list with references to be inserted in results
        reference_list = static_info.keywords_reference_list
        [ref.append("reference") for ref in reference_list]
        queryfield = "nyckelord"

    art = computeviews.bucketcall(queryfield=queryfield,
                                  name='keyword',
                                  title='Keywords',
                                  infotext=infotext,
                                  alphabetical=True,
                                  insert_entries=reference_list,
                                  description=helpers.get_shorttext(infotext))
    return set_cache(art,
                     name=pagename,
                     lang=lang,
                     no_hits=app.config['CACHE_HIT_LIMIT'])
Ejemplo n.º 3
0
def start():
    page = check_cache("start")
    if page is not None:
        return page
    infotext = helpers.get_infotext("start", request.url_rule.rule)
    set_language_switch_link("index")
    page = render_template('start.html',
                           title="Svenskt kvinnobiografiskt lexikon",
                           infotext=infotext,
                           description=helpers.get_shorttext(infotext))
    return set_cache(page)
Ejemplo n.º 4
0
def compute_place(lang="", cache=True, url=''):
    set_language_switch_link("place_index", lang=lang)
    art, lang = getcache('place', lang, cache)
    if art is not None:
        return art
    infotext = helpers.get_infotext("place", request.url_rule.rule)

    def parse(kw):
        place = kw.get('key')
        # May be used to parse names with or without coordinates:
        # "Lysekil" or "Lysekil|58.275573|11.435558"
        if '|' in place:
            name, lat, lon = place.split('|')
        else:
            name = place.strip()
            lat, lon = 0, 0
        placename = name if name else '%s, %s' % (lat, lon)
        return {
            'name': placename,
            'lat': lat,
            'lon': lon,
            'count': kw.get('doc_count')
        }

    def has_name(kw):
        name = kw.get('key').split('|')[0]
        if name and u"(osäker uppgift)" not in name:
            return name
        else:
            return None

    # To use the coordinates, use 'getplaces' instead of 'getplacenames'
    data = karp_query('getplacenames', {})
    stat_table = [parse(kw) for kw in data['places'] if has_name(kw)]
    art = render_template('places.html',
                          places=stat_table,
                          title=gettext("Placenames"),
                          infotext=infotext,
                          description=helpers.get_shorttext(infotext),
                          page_url=url)
    try:
        with mc_pool.reserve() as client:
            client.set(cache_name('place', lang),
                       art,
                       time=app.config['CACHE_TIME'])
    except:
        # TODO what to do?
        pass
    return art
Ejemplo n.º 5
0
def show_article(data, lang="sv"):
    if data['hits']['total'] == 1:
        source = data['hits']['hits'][0]['_source']
        source['url'] = source.get(
            'url') or data['query']['hits']['hits'][0]['_id']
        source['es_id'] = data['hits']['hits'][0]['_id']

        # Print html for the names with the calling name and last name in bold
        formatted_names = helpers.format_names(source, "b")
        source['showname'] = "%s <b>%s</b>" % (
            formatted_names, source['name'].get('lastname', ''))
        title = "%s %s" % (helpers.format_names(
            source, ""), source['name'].get('lastname', ''))
        if source.get('text'):
            source['text'] = helpers.markdown_html(
                helpers.unescape(helpers.mk_links(source['text'])))
        if source.get('text_eng'):
            source['text_eng'] = helpers.markdown_html(
                helpers.unescape(helpers.mk_links(source['text_eng'])))

        # Extract linked names from source
        source['linked_names'] = find_linked_names(
            source.get("othernames", {}), source.get("showname"))
        source['othernames'] = helpers.group_by_type(
            source.get('othernames', {}), 'name')

        helpers.collapse_kids(source)
        if "source" in source:
            source['source'] = helpers.aggregate_by_type(source['source'],
                                                         use_markdown=True)
        if "furtherreference" in source:
            source['furtherreference'] = helpers.aggregate_by_type(
                source['furtherreference'], use_markdown=True)
        if type(source["article_author"]) != list:
            source["article_author"] = [source["article_author"]]

        # Set description for meta data
        if lang == "sv":
            description = helpers.get_shorttext(source.get('text', ''))
        else:
            description = helpers.get_shorttext(
                source.get('text_eng', source.get('text', '')))

        if source.get("portrait"):
            image = source["portrait"][0].get("url", "")
        else:
            image = ""

        # Sort keywords alphabetically
        kw = source.get("keyword", [])
        collator = icu.Collator.createInstance(icu.Locale('sv_SE.UTF-8'))
        kw.sort(key=lambda x: collator.getSortKey(x))

        under_development = True if source.get(
            "skbl_status") == "Under utveckling" else False

        return render_template('article.html',
                               article=source,
                               article_id=source['es_id'],
                               article_url=source['url'],
                               title=title,
                               description=description,
                               image=image,
                               under_development=under_development)
    else:
        return render_template(
            'page.html', content=gettext('Contents could not be found!')), 404
Ejemplo n.º 6
0
def authors():
    infotext = helpers.get_infotext("articleauthor", request.url_rule.rule)
    set_language_switch_link("articleauthor_index")
    return set_cache(
        computeviews.compute_artikelforfattare(
            infotext=infotext, description=helpers.get_shorttext(infotext)))