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……



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值