Example #1
0
def follower(request, user_pk):
    user = get_object_or_404(User, pk=user_pk)
    profile = user.get_profile()
    profile.visit_count = F("visit_count") + 1
    profile.save()

    follow_list = user.followers.all()

    if request.user.is_authenticated():
        is_following = Follow.objects.filter(follower=request.user, followee=user).exists()
    else:
        is_following = False

    page = int(request.GET.get("page", 1))

    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    new_query_parts = []
    for qp in query_part:
        if not qp.startswith("page="):
            new_query_parts.append(qp)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(follow_list, 30)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string

    return render_to_response("person/follower.html", {
        "follow_list": follow_list,
        "show_user": user,
        "pages": pages,
        "is_following": is_following,
    }, context_instance=RequestContext(request))
Example #2
0
def my_article(request):
    """我的文章"""
    q = request.GET.get("q", "")
    page = request.GET.get("page", 1)
    filter = Q(title__icontains=q)
    if q:
        articles = request.user.person.article_set.filter(filter).order_by("-dtcreated")
    else:
        articles = request.user.person.article_set.order_by("-dtcreated")

    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    new_query_parts = []
    for qp in query_part:
        if not qp.startswith("page="):
            new_query_parts.append(qp)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(articles, 10)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string

    return render_to_response("article/my_article.xhtml", {
        "articles": pages.cur_page.object_list,
        "pages":  pages,
        "q": q,
    }, context_instance = RequestContext(request))
Example #3
0
def show_hot(request):
    """最热门的Show"""
    q = request.GET.get("q", "")
    page = int(request.GET.get("page", 1))

    #show_list = Show.objects.all().order_by("-like_count", "-comment_count", "-dtcreated")
    #流行度的计算参考如下链接
    #http://stackoverflow.com/questions/1965341/implementing-a-popularity-algorithm-in-django

    show_list = Show.objects.filter(is_valid=True).select_related().extra(
        select = {
            #"popularity": '(like_count - 1) / POW(TIMESTAMPDIFF(HOUR, dtcreated, CURRENT_TIMESTAMP()) + 2, 1.5)',
            #如果不对like_count 强制数据类型转换, 由int型转为decimal, 当0 -1 的时候,得到的結果不是 -1 而是2^64 -1
            "popularity": '(CAST(like_count AS DECIMAL) - 1) / POW(TIMESTAMPDIFF(HOUR, dtcreated, CURRENT_TIMESTAMP()) + 2, 1.5)',
        },
        order_by = ['-popularity', "-hits", "-dtcreated"]
    )
    if q:
        show_list = show_list.filter(title__icontains=q)

    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    new_query_parts = []
    for qp in query_part:
        if not qp.startswith("page="):
            new_query_parts.append(qp)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(show_list, 10)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string
    return render_to_response("show/index.xhtml", locals(), context_instance=RequestContext(request))
Example #4
0
def show_tags(request):
    """显示Show tags """
    page = int(request.GET.get("page", 1))

    #show_list = Show.objects.all().order_by("-like_count", "-comment_count", "-dtcreated")
    #流行度的计算参考如下链接
    #http://stackoverflow.com/questions/1965341/implementing-a-popularity-algorithm-in-django
    from tagging.models import Tag
    tag_list = Tag.objects.cloud_for_model(Show)

    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    new_query_parts = []
    for qp in query_part:
        if not qp.startswith("page="):
            new_query_parts.append(qp)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(tag_list, 200)
    pages.cur_page = pages.page(page)

    #增加tag count 分等级段, 以便以tag cloud 形式展示不同tag 显示大小
    import math
    tag_level_num = 7
    tag_max_count = max([t.count for t in pages.cur_page.object_list])
    tag_step = math.ceil(float(tag_max_count) / tag_level_num)

    for t in pages.cur_page.object_list:
        tag_level = t.count / int(tag_step) 
        setattr(t, "level", tag_level)

    pages.page_prefix_link = request.path + "?"+ no_page_query_string
    return render_to_response("show/tags.html", locals(), context_instance=RequestContext(request))
Example #5
0
def bedchamber_list(request, template=None):
    q = request.GET.get("q", "")
    page = request.GET.get("page", 1)

    filter = Q()
    if q:
        filter = filter & Q(uuid=q)
    bedchamber_list = Bedchamber.objects.filter(filter)
    years = Bedchamber.objects.dates("dtcreated", "month")

    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    print query_part
    new_query_parts = []
    for qp in query_part:
        if not qp.startswith("page="):
            new_query_parts.append(qp)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(bedchamber_list, 20)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string

    return {
        "bedchamber_list": pages.cur_page.object_list, 
        "years": years,
        "q": q,
        "pages":  pages,
    }, template
Example #6
0
def my_attachment(request, template=None):
    """我的附件管理"""
    q = request.GET.get("q", "")
    page = request.GET.get("page", 1)

    filter = Q(user=request.user)
    if q:
        filter = Q(article__title__icontains=q) | Q(file__icontains=q) & filter
    attachment_list = Attachment.objects.filter(filter)

    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    new_query_parts = []
    for qp in query_part:
        if not qp.startswith("page="):
            new_query_parts.append(qp)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(attachment_list, 20)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string
    return {
        "attachment_list": pages.cur_page.object_list,
        "pages": pages,
        "q": q,
    }, template
Example #7
0
def view_category(request, category_pk=None, author_pk=None):
    """浏览用户某一日志分类文章"""
    page = request.GET.get("page", 1)
    if category_pk:
        category = get_object_or_404(ArticleCategory, pk=category_pk)
        author  = category.author
        articles = category.article_set.filter(category=category_pk).order_by("-dtcreated")
    elif author_pk:
        author = get_object_or_404(User, pk=author_pk)
        articles = Article.objects.filter(category__isnull=True, author=author).order_by("-dtcreated")

    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    new_query_parts = []
    for q in query_part:
        if not q.startswith("page="):
            new_query_parts.append(q)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(articles, 10)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string

    if category_pk is not None:
        category_pk = int(category_pk)

    return render_to_response("article/view_article_category.xhtml", {
        "articles": pages.cur_page.object_list,
        "pages":  pages,
        "author": author,
        "category_pk": category_pk,
    }, context_instance = RequestContext(request))
Example #8
0
def search(request):
    """搜索页面"""
    if not request.user.is_authenticated():
        messages.error(request, u"只有登陆的用户才有搜索用户")

    context = request.GET.get("context")
    q = request.GET.get("q","")
    page = request.GET.get("page", 1)
    filters = request.GET.get("filters", "").split(",")

    import time
    qstart = time.time()
    if context == "article":
        from article.views import search
        return search(request)
    if context == "person":
        filter = Q(name__icontains=q) | \
                 Q(username__icontains=q) |\
                 Q(abbr_name__icontains=q) |\
                 Q(uuid__icontains=q) |\
                 Q(spell_name__icontains=q)
        if "Staff" in filters and "Student" not in filters:
            filter = filter & Q(identity=Person.IDENTITY_STAFF)
        if "Student" in filters and "Staff" not in filters:
            filter = filter & Q(identity=Person.IDENTITY_STUDENT)
        if "Male" in filters and "Female" not in filters:
            filter = filter & Q(gender=Person.GENDER_MALE)
        if "Female" in filters and "Male" not in filters:
            filter = filter & Q(gender=Person.GENDER_FEMALE)
        #persons = Person.objects.filter(Q(name__icontains=p) | Q(spell_name__icontains=p))
        persons = Person.objects.filter(filter)
        
        search_result = []
        for r in persons:
            search_result.append(r)
    qend = time.time()
    qtime = qend - qstart
    
    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    print query_part
    new_query_parts = []
    for qp in query_part:
        if not qp.startswith("page="):
            new_query_parts.append(qp)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(search_result, 20)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string
    
    return render_to_response("index/search.html", {
        "site": u"搜索",
        "search_result": pages.cur_page.object_list,
        "q": q,
        "qtime": qtime,
        "pages":  pages,
        "filters": filters,
    }, context_instance=RequestContext(request))
Example #9
0
def check_index(request, template=None):
    page = request.GET.get("page", 1)
    q = request.GET.get("q", "")

    if not q:
        filter = Q()
    else:
        filter = Q(klass__uuid=q) | \
                 Q(klass__name__icontains=q) | \
                 Q(klass__master__username__icontains=q)  | \
                 Q(klass__master__name__icontains=q)  | \
                 Q(klass__master__uuid__icontains=q)  | \
                 Q(checker__name__icontains=q)  | \
                 Q(checker__username__icontains=q)  | \
                 Q(checker__uuid__icontains=q)

    #check_list = Check.objects.filter(filter).extra(
        #{"ranking": 'early_morning_ranking + morning_ranking + afternoon_ranking + evening_ranking + \
                     #student_attendance_ranking + school_uniform_ranking +  \
                     #classroom_order_ranking + hairstyle_finery_ranking + smoke_drink_ranking + \
                     #game_ranking + classroom_discipline_ranking + home_visiting_ranking + other_ranking '
        #} 
    #).order_by("-dtchecked", "-ranking")

    check_list = Check.objects.filter(filter).order_by("-dtchecked", "-sum_ranking")

    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    print query_part
    new_query_parts = []
    for qp in query_part:
        if not qp.startswith("page="):
            new_query_parts.append(qp)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(check_list, 20)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string

    return {
        "check_list": pages.cur_page.object_list,
        "pages":  pages,
        "q": q,
    }, template
Example #10
0
def check_list(request, template=None):
    bedchamber_pk = request.GET.get("bedchamber_pk", None)
    year = request.GET.get("year", None)
    month = request.GET.get("month", None)
    page = request.GET.get("page", 1)

    title = u""
    filter = Q()
    if bedchamber_pk:
        filter = filter & Q(bedchamber__uuid=bedchamber_pk)
        bedchamber = get_object_or_404(Bedchamber, pk=bedchamber_pk)
        title += u" %s 寝室" % unicode(bedchamber)
    if year:
        filter = filter & Q(dtchecked__year=year)
        title += u" %s 年" % unicode(year)
    if month:
        filter = filter & Q(dtchecked__month=month)
        title += u" %s 月份" % unicode(month)
    check_list = Check.objects.filter(filter)


    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    print query_part
    new_query_parts = []
    for qp in query_part:
        if not qp.startswith("page="):
            new_query_parts.append(qp)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(check_list, 20)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string

    return {
        "check_list": pages.cur_page.object_list, 
        "title": title, 
        "bedchamber_pk": bedchamber_pk, 
        "pages": pages,
    }, template
Example #11
0
def hottest_article(request):
    """最热门的日志列表"""
    q = request.GET.get("q", "")
    page = request.GET.get("page", 1)
    filter = Q(title__icontains=q)

    filter = Q(status=Article.STATUS_PUBLISH)
    if q:
        filter = filter & Q(title__icontains=q)

    articles = Article.objects.filter(filter).order_by("-read_count")

    #作者排行榜
    SHOW_HOTTEST_AUTHORS_NUMBER = 20
    hottest_authors = Article.objects.values("author").annotate(article_count=Count("author"))
    hottest_persons = Person.objects.in_bulk(list(hottest_authors.values_list("author", flat=True)))
    hottest_authors = hottest_authors.order_by("-article_count")[:SHOW_HOTTEST_AUTHORS_NUMBER] # 注意, order_by 返回一个新的排序的結果,并不改变原結果
    print hottest_authors
    for a in hottest_authors:
        a["author"] = hottest_persons.get(a["author"])

    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    new_query_parts = []
    for qp in query_part:
        if not qp.startswith("page="):
            new_query_parts.append(qp)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(articles, 10)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string

    return render_to_response("article/hottest_article.html", {
        "articles": pages.cur_page.object_list,
        "pages":  pages,
        "q": q,
        "hottest_authors": hottest_authors,
    }, context_instance = RequestContext(request))
Example #12
0
def index(request):
    return HttpResponseRedirect(reverse("show_hot"))

    q = request.GET.get("q", "")
    page = int(request.GET.get("page", 1))

    show_list = Show.objects.all().order_by("-like_count", "-comment_count", "-dtcreated")
    if q:
        show_list = show_list.filter(title__icontains=q)

    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    new_query_parts = []
    for qp in query_part:
        if not qp.startswith("page="):
            new_query_parts.append(qp)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(show_list, 5)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string
    return render_to_response("show/index.xhtml", locals(), context_instance=RequestContext(request))
Example #13
0
def admin_staff(request):
    person = Person.objects.get(pk=request.user.pk)
    try:
        school = person.get_identity_group()
    except e:
        school = None
        print e

    filter = Q(school=school) & Q(identity="School.Staff")
    q = request.GET.get("q", "")
    if q:
        filter = filter & \
                 Q(name__icontains=q) |\
                 Q(spell_name__icontains=q) |\
                 Q(id_no__icontains=q) | \
                 Q(uuid__icontains=q) | \
                 Q(spell_name__icontains=q) |\
                 Q(user__username__icontains=q)
    staffs = Staff.objects.filter(filter)

    #搜索分页结合
    page = request.REQUEST.get("page", 1)
    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    new_query_parts = []
    for qs in query_part:
        if not qs.startswith("page="):
            new_query_parts.append(qs)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(staffs, 20)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string

    return render_to_response("school/admin_staff.xhtml", {
        "staffs": pages.cur_page.object_list,
        "q": q,
        "pages":  pages,
    }, context_instance=RequestContext(request))
Example #14
0
def show_user(request, user_pk=None):
    """某个用户Show Space"""
    if user_pk is None:
        user = request.user
    else:
        user = get_object_or_404(User, pk=user_pk)

        profile = user.get_profile()
        profile.visit_count = F("visit_count") + 1
        profile.save()

    if request.user.is_authenticated():
        is_following = Follow.objects.filter(follower=request.user, followee=user).exists()
    else:
        is_following = False

    q = request.GET.get("q", "")
    page = int(request.GET.get("page", 1))

    show_list = user.show_set.all()
    if q:
        show_list = show_list.filter(title__icontains=q)

    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    new_query_parts = []
    for qp in query_part:
        if not qp.startswith("page="):
            new_query_parts.append(qp)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(show_list, 10)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string
    return render_to_response("show/show_user.html", {
        "pages": pages,
        "show_user": user,
        "is_following": is_following,
    }, context_instance=RequestContext(request))
Example #15
0
def search(request):
    """搜索页面"""
    context = request.GET.get("context")
    q = request.GET.get("q","")
    page = request.GET.get("page", 1)

    import time
    qstart = time.time()
    if context == "article":
        filter = Q(title__icontains=q)
        #filter = Q(title__icontains=q) | \
                 #Q(author__user__username__icontains=q) |\
                 #Q(author__name__icontains=q) |\
                 #Q(author__spell_name__icontains=q)
        articles = Article.objects.filter(filter)
        
    qend = time.time()
    qtime = qend - qstart
    
    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    new_query_parts = []
    for qp in query_part:
        if not qp.startswith("page="):
            new_query_parts.append(qp)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(articles, 20)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string

    return render_to_response("article/search.html", {
        "site": u"搜索",
        "articles": pages.cur_page.object_list,
        "q": q,
        "qtime": qtime,
        "pages":  pages,
        "context": context,
    }, context_instance=RequestContext(request))
Example #16
0
def draft(request):
    """列出草稿文章"""
    categories = request.user.person.articlecategory_set.all()
    articles = request.user.person.article_set.filter(status=Article.STATUS_DRAFT).order_by("-dtmodified")

    page = request.GET.get("page", 1)
    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    new_query_parts = []
    for q in query_part:
        if not q.startswith("page="):
            new_query_parts.append(q)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(articles, 10)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string
    return render_to_response("article/drafts.xhtml", {
        "categories": categories,
        "articles": pages.cur_page.object_list,
        "pages":  pages,
    }, context_instance = RequestContext(request))
Example #17
0
def my_publish(request):
    """我发表的文章列表"""
    categories = ArticlePublicCategory.objects.all()
    query = Q(status = Article.STATUS_PUBLISH) & Q(public_category__isnull=False)
    articles = request.user.person.article_set.filter(query).order_by("-dtmodified")

    page = request.GET.get("page", 1)
    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    new_query_parts = []
    for q in query_part:
        if not q.startswith("page="):
            new_query_parts.append(q)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(articles, 10)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string
    return render_to_response("article/my_publish_article.xhtml", {
        "categories": categories,
        "articles": pages.cur_page.object_list,
        "pages":  pages,
    }, context_instance = RequestContext(request))
Example #18
0
def manage_student(request):
    """管理学生的基本信息模块"""
    p = request.REQUEST.get("p","")
    page = request.REQUEST.get("page", 1)

    person = request.user.person

    query = (Q(identity="School.Student") & \
            Q(identity_group=person.identity_group)) & \
            (Q(name__icontains=p) | \
            Q(id_no__icontains=p) | \
            Q(uuid__icontains=p) | \
            Q(spell_name__icontains=p))

    persons = Person.objects.filter(query)


    query_string = request.META.get("QUERY_STRING", u"")
    query_part = query_string.split("&")
    new_query_parts = []
    for q in query_part:
        if not q.startswith("page="):
            new_query_parts.append(q)
    no_page_query_string = u"&".join(new_query_parts)

    pages = Paginator(persons, 20)
    pages.cur_page = pages.page(page)
    pages.page_prefix_link = request.path + "?"+ no_page_query_string

    return render_to_response("school/manage_student.html", {
        "site": u"搜索",
        "persons": pages.cur_page.object_list,
        "pages":  pages,
        "p": p,
    }, context_instance=RequestContext(request))
    return HttpResponse("manage_student")