Pinax源代碼分析12 - tribes, wiki, projects

Pinax源代碼分析12 tribes, wiki, projects

tribes

url

    (r'^tribes/', include('tribes.urls')),

邏輯與模板

urlpatterns = /
    patterns('',
    #
創建小組

        url(r'^create/$', 'tribes.views.create', name="tribe_create"),
    #
當前用戶參加的小組
        url(r'^your_tribes/$', 'tribes.views.your_tribes', name="your_tribes"),

    #
小組列表,採用不同的方式排序
        url(r'^$', 'tribes.views.tribes', name="tribe_list"),
        url(r'^order/topics/least-topics/$', 'tribes.views.tribes',
            {'order': 'least_topics'}, name="tribe_list_least_topics"),
        url(r'^order/topics/most-topics/$', 'tribes.views.tribes',
            {'order': 'most_topics'}, name="tribe_list_most_topics"),
        url(r'^order/members/least-members/$', 'tribes.views.tribes',
            {'order': 'least_members'}, name="tribe_list_least_members"),
        url(r'^order/members/most-members/$', 'tribes.views.tribes',
            {'order': 'most_members'}, name="tribe_list_most_members"),
        url(r'^order/name/ascending/$', 'tribes.views.tribes',
            {'order': 'name_ascending'}, name="tribe_list_name_ascending"),
        url(r'^order/name/descending/$', 'tribes.views.tribes',
            {'order': 'name_descending'}, name="tribe_list_name_descending"),
        url(r'^order/date/oldest/$', 'tribes.views.tribes',
            {'order': 'date_oldest'}, name="tribe_list_date_oldest"),
        url(r'^order/date/newest/$', 'tribes.views.tribes',
            {'order': 'date_newest'}, name="tribe_list_date_newest"),
        
        # tribe-specific
    #
小組的信息,成員,組內的帖子和Tweets。負責更新小組信息,加入和退出小組。
        url(r'^tribe/([-/w]+)/$', 'tribes.views.tribe', name="tribe_detail"),
    #
刪除小組
        url(r'^tribe/([-/w]+)/delete/$', 'tribes.views.delete', name="tribe_delete"),
        
        # topics
    #
顯示小組的帖子列表
        url(r'^tribe/([-/w]+)/topics/$', 'tribes.views.topics', name="tribe_topics"),
    #
顯示wiki文章
        url(r'^topic/(/d+)/edit/$', 'tribes.views.topic', kwargs={"edit": True}, name="tribe_topic_edit"),
    #
刪除帖子
        url(r'^topic/(/d+)/delete/$', 'tribes.views.topic_delete', name="tribe_topic_delete"),
    #
顯示一篇帖子
        url(r'^topic/(/d+)/$', 'tribes.views.topic', name="tribe_topic"),
    #
小組內置wiki
        # wiki
        url(r'^tribe/(?P<group_slug>/w+)/wiki/', include('wiki.urls'), kwargs=wiki_args),
    )

tribes app
應用了 wikiappviews.tribe中有如下幾行:

    articles = Article.objects.filter(
        content_type=get_ct(tribe),
        object_id=tribe.id).order_by('-last_update')

其中 get_ct wiki.views 中定義。

tribe.html
模板使用了wiki 定義的模板標籤:
{% load wiki %}
{% load wikiurl %}

            {% if articles %}
                <table class="topics">
                    {% for article in articles %}
                        {% show_teaser article %}
                    {% endfor %}
                </table>
                <p><a href="{% wikiurl list tribe %}">{% trans "more..." %}</a></p>
            {% else %}
                {% wikiurl list tribe as wiki_url %}
                <p>
                    {% blocktrans %}
                        None yet. Go to the <a href="{{ wiki_url }}" title="wiki">wiki</a> to start a new article.
                    {% endblocktrans %}
                </p>
            {% endif %}

wiki

url

blogurls.py中定義:
wiki_args = {'group_slug_field': 'slug',
             'group_qs': Tribe.objects.filter(deleted=False)}

        url(r'^tribe/(?P<group_slug>/w+)/wiki/', include('wiki.urls'), kwargs=wiki_args),

projectsurls.py中定義:
wiki_args = {
    'group_slug_field': 'slug',
    'group_qs': Project.objects.filter(deleted=False),
    'is_member': (lambda user, group: group.has_member(user)),
    'is_private': (lambda group: group.private),
}

        url(r'^project/(?P<group_slug>/w+)/wiki/', include('wiki.urls'), kwargs=wiki_args),

邏輯與模板

urlpatterns = patterns('',
    #
全部wiki 文章列表

    url(r'^$', views.article_list, name='wiki_index'),
    url(r'^list/$', views.article_list, name='wiki_list'),
    #
搜索
    url(r'^search/$', views.search_article, name="wiki_search"),
    #
整個wiki的歷史,訪問出錯
    url(r'^history/$', views.history, name='wiki_history'),
    #feeds
    url(r'^feeds/(?P<feedtype>/w+)/$', views.history_feed, name='wiki_history_feed'),
    #
單篇文章歷史的feeds
    url(r'^(?P<title>'+ WIKI_URL_RE +r')/feeds/(?P<feedtype>/w+)/$', views.article_history_feed,
        name='wiki_article_history_feed'),
    #
瀏覽文章

    url(r'^(?P<title>'+ WIKI_URL_RE +r')/$', views.view_article, name='wiki_article'),
    #
編輯文章
    url(r'^edit/(?P<title>'+ WIKI_URL_RE +r')/$', views.edit_article, name='wiki_edit'),
    #
關注文章,依賴於notification.models.observe
    url(r'observe/(?P<title>'+ WIKI_URL_RE +r')/$', views.observe_article, name='wiki_observe'),
    #
停止關注文章依賴於
notification.models.stop_observing
    url(r'observe/(?P<title>'+ WIKI_URL_RE +r')/stop/$', views.stop_observing_article,
        name='wiki_stop_observing'),
    #
單篇文章歷史

    url(r'^history/(?P<title>'+ WIKI_URL_RE +r')/$', views.article_history, name='wiki_article_history'),
    #
瀏覽一篇文章的指定歷史版本
    url(r'^history/(?P<title>'+ WIKI_URL_RE +r')/changeset/(?P<revision>/d+)/$', views.view_changeset,
        name='wiki_changeset',),
    #
將文章回退到指定的版本
    url(r'^history/(?P<title>'+ WIKI_URL_RE +r')/revert/$', views.revert_to_revision,
        name='wiki_revert_to_revision'),
)


projects

url

    (r'^projects/', include('projects.urls')),

邏輯與模板

urlpatterns = /
    patterns('',
    #
創建項目,項目列表,……tribes一樣省略若干行
……
    #
查看成員的狀態,負責處理改變自己狀態的請求

        url(r'^project/([-/w]+)/members_status/$', 'projects.views.members_status', name="project_members_status"),
    #
所有的任務
        url(r'^project/([-/w]+)/tasks/$', 'projects.views.tasks', name="project_tasks"),
    #
瀏覽一個任務,負責將任務指派給某人。如果是任務的負責人可以修改狀態、標記解決、開啓和關閉任務。
        url(r'^task/(/d+)/$', 'projects.views.task', name="project_task"),
    #
指定用戶的所有任務
        url(r'^tasks/([-/w]+)/$', 'projects.views.user_tasks', name="project_user_tasks"),
        
        #
帖子、wiki,還是和tribes一樣。

    )

user_tasks.html
模板使用了 shorttimesince_tag 自定義標籤,它是在 misc 中定義的,顯示時間差,和Django內置的timesince不同,使用所寫單位,例如yr = yearmnmonthwkweekdday……



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章