2017-05-10 3 views
0

CKAN内のすべてのグループを返す関数をCKANに書き込む方法を知っている人がいるかどうかを知りたかったのです。CKAN内のすべてのグループを返す関数

あり例はexample_themeである(しかし、私のために働いていない)、(helpers.py内側)このような何か:

def most_popular_groups(): 
    '''Return a sorted list of the groups with the most datasets.''' 
    # Get a list of all the site's groups from CKAN, sorted by number of 
    # datasets. 
    groups = toolkit.get_action('group_list')(
     data_dict={'sort': 'packages desc', 'all_fields': True}) 

    # Truncate the list to the 10 most popular groups only. 
    groups = groups[:10] 

    return groups 

しかし、これは私のためにうまくいきませんでした。

私の中にこの関数を呼び出しています:

featured_group.htmlは

{% set groups = h.most_popular_groups() %} 

{% for group in groups %} 
    <div class="box span3"> 
    {% snippet 'snippets/group_item.html', group=group, truncate=50, truncate_title=35 %} 
    </div> 
{% endfor %} 

group_item.html:

{% block group_item %} 
    <section class="group-list module module-narrow module-shallow"> 
    {% block group_item_header %} 
     <header class="module-heading"> 
     {% set truncate=truncate or 0 %} 
     {% set truncate_title = truncate_title or 0 %} 
     {% set title = group.title or group.name %} 
     {% block group_item_header_image %} 
      <a class="module-image" href="{{ h.url_for(controller='group', action='read', id=group.name) }}"> 
      <img src="{{ group.image_display_url or h.url_for_static('/base/images/placeholder-group.png') }}" alt="{{ group.name }}" height="150pt" width="150pt"/> 
      </a> 
     {% endblock %} 

     {% block group_item_header_title %} 
      <h3 class="media-heading"><a href="{{ h.url_for(controller='group', action='read', id=group.name) }}">{{ group.title or group.name }}</a></h3> 
     {% endblock %} 
     <!-- 
     {% block group_item_header_description %} 
      {% if group.description %} 
      {% if truncate == 0 %} 
       <p>{{ h.markdown_extract(group.description)|urlize }}</p> 
      {% else %} 
       <p>{{ h.markdown_extract(group.description, truncate)|urlize }}</p> 
      {% endif %} 
      {% endif %} 
     {% endblock %} 
    --> 
     </header> 
    {% endblock %} 
    <!-- 
    {% block group_item_content %} 
     {% set list_class = "unstyled dataset-list" %} 
     {% set item_class = "dataset-item module-content" %} 
     {% snippet 'snippets/package_list.html', packages=group.packages, list_class=list_class, item_class=item_class, truncate=120 %} 
    {% endblock %} 
    --> 
    </section> 
{% endblock %} 

しかし、それは私に500のサーバーエラーが発生します。

どうか、私にこれを手伝ってもらえますか? は、私はちょうどこの機能を

アップデートを使用して、すべてのグループを表示したい:私のapache2のログには、次の言う:

私はget_all_groups関数を定義することができます

[Tue May 09 09:44:40.806982 2017] [:error] [pid 9054:tid 140156479076096] [remote 127.0.0.1:51908] HelperError: Helper 'get_all_groups' has not been defined.

?ちょうど新しいpythonファイルを作成しますか? features_group.htmlビューからどのように呼び出すことができますか?

ありがとう、

+0

500エラースタックトレースはサーバ上で何を示していますか? – amercader

+0

それは言う:[Tue May 09 09:44:40.806982 2017] [:error] [pid 9054:tid 140156479076096] [remote 127.0.0.1:51908] HelperError:ヘルパー 'get_all_groups'が定義されていません。どこでget_all_groups関数を定義できますか?ちょうど新しいpythonファイルを作成しますか? features_group.htmlビューからどのように呼び出すことができますか? –

+0

これは重要な情報です。質問を編集してそこに含めてください。 –

答えて

1

あなたのコードは考えられます。コメントに入れたエラーは、ヘルパーコードの定義に問題があることを示唆しています。 (あなたがテンプレートにPythonのコードを実行できるようにIE)テンプレート「ヘルパー」を定義するには

  1. あなたの拡張子で(plugin.pyと同じディレクトリにあるなど)helpers.pyファイルを作成し、書き込みあなたのヘルパーはそこで機能します。例:https://github.com/ckan/ckanext-harvest/blob/cc6cb3e3892714c8b4c574c024fc2e7243834f40/ckanext/harvest/helpers.py
  2. 拡張子がplugin.pyの場合、プラグインクラスにはp.implements(p.ITemplateHelpers)が必要です。ヘルパー関数に名前を付けてポイントするget_helpers()メソッドが必要です。例:https://github.com/ckan/ckanext-harvest/blob/cc6cb3e3892714c8b4c574c024fc2e7243834f40/ckanext/harvest/plugin.py#L283-L294
  3. ckan設定ファイル(.ini) - でプラグインを有効にしていることを確認してください(ckan.plugins)。
  4. 再起動CKAN(例えばApacheまたは「ペースターはサーブ」)

今、あなたはテンプレートでヘルパー関数を呼び出すことができます。{{ h.<helper-name> }}またはあなたが行っているよう。

+0

あなたの答えをありがとうが、私は別の方法を使用してそれをやった。 Thanskあなたの時間のために多くの。とても有難い。 –

関連する問題