首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Pootle中按整体完成显示排序列表

如何在Pootle中按整体完成显示排序列表
EN

Stack Overflow用户
提问于 2010-11-11 09:00:21
回答 2查看 156关注 0票数 1

嗨,我是Django的新手,正在从事Pootle项目。

我想在默认情况下在pootle索引页面中按总体完成排序。例如,http://pootle.locamotion.org/列出语言并按名称排序。您可以单击排序按钮查看按完成排序。但我想在每次加载页面时显示按完成排序的列表。

在pootle/local_apps/pootle_app/templates/index/index.html,中

代码语言:javascript
复制
 <table class="sortable">
            <tr>
                <th>{% trans 'Language' %}</th>
                <th>{% trans 'Overall Completion' %}</th>
                <th>{% trans 'Last Activity' %}</th>
            </tr>
            {% for item in languages %}
            {% ifnotequal item.total 0 %}
            <tr class="{% cycle 'even' 'odd' %}">
                <td class="language">
                        <a href="{% filter l %}/{{ item.code }}/{% endfilter %}">{{ item.name }}</a></td>
                <td>
                        <div class="sortkey">{{ item.transper }}</div>
                        <div class="graph" title="{{ item.completed_title }}" dir="{% if LANGUAGE_BIDI %}rtl{% else %}ltr{% endif %}">
                        <div class="translated" style="width: {{ item.transper }}px"></div>
                        {% if item.fuzzy %}
                        <div class="fuzzy" style="{%if LANGUAGE_BIDI%}right{%else%}left{%endif%}: {{ item.transper }}px; width: {{ item.fuzzyper }}px"></div>
                        {% endif %}
                        {% if item.untrans %}
                        <div class="untranslated" style="{% if LANGUAGE_BIDI %}right{% else %}left{% endif %}: {{ item.transper|add:item.fuzzyper }}px; width: {{ item.untransper }}px"></div>
                        {% endif %}
                    </div>
                </td>   
                <td>{{ item.lastactivity }}</td>
            </tr>
            {% endifnotequal %}
            {% endfor %}
        </table>

item.transper是我想要排序的关键字。

以下是item和language的定义:

代码语言:javascript
复制
def get_items(request, model, get_last_action, name_func):

    items = []                                                                                          
    if not check_permission('view', request):                                                           
        return items

    for item in model.objects.iterator():                                                               
        stats = item.getquickstats()                                                                    
        stats = add_percentages(stats)                                                                  

        lastact = get_last_action(item)                                                                 
        items.append({
            'code': item.code,
            'name': name_func(item.fullname),
            'lastactivity': lastact,                                                                    
            'trans': stats["translatedsourcewords"],                                                    
            'fuzzy': stats["fuzzysourcewords"],                                                         
            'untrans': stats["untranslatedsourcewords"],                                                
            'total': stats["totalsourcewords"],                                                         
            'transper': stats["translatedpercentage"],
            'fuzzyper': stats["fuzzypercentage"],                                                       
            'untransper': stats["untranslatedpercentage"],                                              
            'completed_title': _("%(percentage)d%% complete",
                                 {'percentage': stats['translatedpercentage']}),
            })
    items.sort(lambda x, y: locale.strcoll(x['name'], y['name']))
    return items        

def getlanguages(request):
    def get_last_action(item):
        try:            
            return Submission.objects.filter(translation_project__language=item).latest()
        except Submission.DoesNotExist:
            return ''   

    return get_items(request, Language, get_last_action, tr_lang) 

我应该如何更改它,才能默认看到按整体完成排序?

非常感谢您的任何建议

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-11 10:37:52

变化

代码语言:javascript
复制
items.sort(lambda x, y: locale.strcoll(x['name'], y['name']))

代码语言:javascript
复制
items.sort(lambda x, y: cmp(x['transper'], y['transper']))

(这与内置的cmp函数配合使用得很好,因为transper字段由nice_percentage函数转换为int,该函数被称为add_percentages的一部分)

如果这不能产生您想要的顺序,只需切换对象xy即可。

如果您需要在模板中对其进行排序(扰乱第三方应用程序的源代码通常不是一个好主意),您可以使用the dictsort filter

代码语言:javascript
复制
{% for item in languages|dictsort:"transper" %}

同样,如果这不是您想要的顺序,请使用dictsortreversed

票数 2
EN

Stack Overflow用户

发布于 2012-09-13 16:03:20

Pootle的最新开发版本,即将成为Pootle 2.2,现在可以记住您选择的排序列。因此,页面重新加载现在将记住您上次使用的顺序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4150571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档