def export(request):
    # Modified : Non-admin user can export data 
    #if not request.user.is_staff:
    #    return HttpResponseNotFound() 
    t = loader.get_template('admin/export.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    context['side_list']=['']
    context['current_user'] = request.user
    context['page_export'] = "selected"
    
    start_date=request.GET.get('start','')
    end_date=request.GET.get('end','')
    
    now = dt.datetime.now().isocalendar()
    this_week_start,this_week_end = get_week_days(now[0],now[1])
    if start_date == '':
        start_date=this_week_start.strftime("%Y-%m-%d")
    if end_date == '':
        end_date=this_week_end.strftime("%Y-%m-%d")
    
    context['start_date']=start_date
    context['end_date']=end_date
    
    return HttpResponse(t.render(context))
def detail_event(request, event_id):
    t = loader.get_template('event_detail.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    
    context['page_event'] = "selected"
    context['side_list']=['event_calendar']
    context['user_favorite_topics'] = my_utils.get_favorite_topics(request.user)
    try:
        user = User.objects.get(username=request.user.username)
        username = request.user.username
        username +=","
    except Exception as e:
        print str(e)
        return HttpResponse(t.render(context))
    
    query_type = Q(host=user) | Q(invited_users__contains=username) | Q(is_public=True)
    try:
        events = Event.objects.filter(query_type,is_deleted=False,id=event_id)
        context['event']=process_events(events, user)[0]
    except Exception as e:
        print str(e)
        context['error_message'] = 'You cannot access to this event.'
        pass
    
    return HttpResponse(t.render(context))
def main(request, keyword):
    t = loader.get_template("search.html")
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    keyword = my_utils.remove_special(keyword)
    context["keyword"] = keyword

    if keyword != "":
        context["feeds"] = search_feeds(request, keyword)
        context["topics"] = search_topics(request, keyword)
        context["files"] = search_files(request, keyword)
        context["locations"] = search_locations(request, keyword)
        context["members"] = search_members(request, keyword)
        context["keyword"] = keyword
        context["search_length"] = (
            len(context["feeds"])
            + len(context["topics"])
            + len(context["files"])
            + len(context["locations"])
            + len(context["members"])
        )
    else:
        context["feeds"] = list()
        context["topics"] = list()
        context["files"] = list()
        context["locations"] = list()
        context["members"] = list()
        context["search_length"] = 0
    return HttpResponse(t.render(context))
def overview(request):
    if not request.user.is_staff:
        return HttpResponseNotFound()
    t = loader.get_template('admin/overview.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    context['load_type']='me'
    context['side_list']=['']
    context['current_user'] = request.user
    context['page_overview'] = "selected"
    
    
    now = datetime.now()
    year,month,day = now.year, now.month, now.day
    start_time = dt.date(year, month, day) - dt.timedelta(6)
    end_time = dt.date(year, month, day)  + dt.timedelta(1)
    
    context['user_length'] = UserProfile.objects.filter(is_deactivated=False).count()
    context['feed_length'] = Message.objects.filter(is_deleted=False).count()
    
    today_start = dt.date(year, month, day)
    today_end = dt.date(year, month, day)  + dt.timedelta(1)
    context['feed_today_length'] = Message.objects.filter(is_deleted=False, reg_date__range=(today_start,today_end)).count()
    context['topic_length'] = Topic.objects.filter(topic_name__gt="").count()
    context['file_length'] = File.objects.filter(is_attached=True).count()
    
    
    context['recent_messages'] = Message.objects.filter(is_deleted=False).order_by("-reg_date")[:5]
    context['recent_users'] = UserLoginHistory.objects.all().order_by("-login_date")[:5]
    return HttpResponse(t.render(context))
def tab(request):
    t = loader.get_template("tab.html")
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)

    context["side_list"] = [""]
    context["page_tab_user"] = "******"

    tabs = Tab.objects.all()
    user_tabs = list()
    for tab in tabs:
        try:
            if tab.is_public:
                user_tabs.append(tab)
            tab_user = TabUsers.objects.filter(tab=tab, user=request.user).count()
            if tab_user is not 0:
                user_tabs.append(tab)
        except Exception as e:
            print e
    paginator = Paginator(user_tabs, 10)

    page = request.GET.get("page", 1)
    try:
        context["tabs"] = paginator.page(page)
    except PageNotAnInteger:
        context["tabs"] = paginator.page(1)
    except EmptyPage:
        context["tabs"] = paginator.page(paginator.num_pages)
    context["index_info"] = my_utils.get_index_list(context["tabs"].number, paginator.num_pages)

    return HttpResponse(t.render(context))
def topic(request):
    t = loader.get_template('topic.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    
    context['user_favorite_topics'] = my_utils.get_favorite_topics(request.user)
    
    context['side_list']=['search_topic']
    my_utils.prepare_search_topic(context)
    
    context['page_topic'] = "selected"
    context['topics']=list()
    
    context['popular_topics'] = Topic.objects.filter(reference_count__gt=0,topic_name__gt='').order_by("-reference_count")[:20]
    # try:
#         topics = 
#     except:
#         pass
    
    try:
        keyword = request.GET.get('q', '')
        query_type = Q()
        if keyword is not '':
            print keyword
            query_type = Q(topic_name__istartswith=keyword)
        
        search_index = request.GET.get('index', '')
        print search_index
        if search_index is not '':
            if search_index in map(chr, range(65, 91)):
                query_type = Q(topic_name__istartswith=search_index)
            elif search_index == 'number':
                query_type = Q(topic_name__gt="0",topic_name__lt="9")
            else:
                this_index,next_index=my_utils.next_search_index(search_index)
                query_type = Q(topic_name__gt=this_index, topic_name__lt=next_index)
        
        topics = Topic.objects.filter(query_type, topic_name__gt='',reference_count__gt=0).order_by('topic_name')
        
        
        paginator = Paginator(topics, 15)
        
        page = request.GET.get('page', 1)
        try:
            context['topics'] = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            context['topics'] = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            context['topics'] = paginator.page(paginator.num_pages)
        
        context['index_info'] = my_utils.get_index_list(context['topics'].number, paginator.num_pages)
        
        
    except Exception as e:
        print str(e)
        
    
    return HttpResponse(t.render(context))
def topic_detail(request,topic_id):
    t = loader.get_template('topic_detail.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    
    
    context['user_favorite_topics'] = my_utils.get_favorite_topics(request.user)
    print context['user_favorite_topics']
    context['side_list']=['topic_detail']
    context['topic']=list()
    context['topic'] = get_object_or_404(Topic,id=int(topic_id))
    
    
    context['page_topic'] = "selected"
    context['load_type']='topic#' + str(context['topic'].id)
    context['topic_name']=context['topic'].topic_name
    context['topic_id']=context['topic'].id
    
    context['topic_favorited']=False
    for favorite in context['user_favorite_topics']:
        if context['topic_id'] == favorite['id']:
            context['topic_favorited']=True
    
    context['related_users']=my_utils.get_related_users(context['topic'].topic_name)
    return HttpResponse(t.render(context))
def detail_poll(request, poll_id):
    t = loader.get_template('poll_detail.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    
    context['page_poll'] = "selected"
    context['side_list']=['']
    context['user_favorite_topics'] = my_utils.get_favorite_topics(request.user)
    
    try:
        poll = Poll.objects.filter(is_deleted=False,id=poll_id)[0]
        try:
            member_profile = UserProfile.objects.get(user=poll.author)
            poll.author.profile = member_profile
            try:
                poll.author.picture = member_profile.picture.url
            except:
                poll.author.picture = "/media/default.png"
        except:
            pass
        
        try:
            comments = PollComment.objects.filter(poll=poll, is_deleted=False).order_by('reg_date')
            for comment in comments:
                author_profile = UserProfile.objects.get(user=comment.author)
                try:
                    comment.author_picture = author_profile.picture.url
                except:
                    comment.author_picture = "/media/default.png"
            poll.comments = comments
        except:
            pass
        
        try:
            options = PollItem.objects.filter(poll=poll)
            for option in options:
                try:
                    option.value = PollAnswer.objects.filter(answer=option).count()
                except:
                    pass
                try:
                    option_answered = PollAnswer.objects.filter(answer=option, answerer=request.user).count()
                    if option_answered:
                        option.checked = True
                    else:
                        option.checked = False
                except:
                    pass
            poll.options = options
        except:
            pass
        
        context['poll'] = poll
    except Exception as e:
        print str(e)
        pass
    
    return HttpResponse(t.render(context))
def main(request):
    t = loader.get_template('location.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    
    context['side_list']=['']
    context['page_location'] = "selected"
    
    return HttpResponse(t.render(context))
def new(request):
    t = loader.get_template('event_new.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    
    context['page_event'] = "selected"
    context['side_list']=['event_calendar']
    context['user_favorite_topics'] = my_utils.get_favorite_topics(request.user)
    return HttpResponse(t.render(context))
def user(request, username):
    t = loader.get_template('profile.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    
    context['side_list']=['user_profile']
    my_utils.load_side_profile_info(username, context)
    
    
    return HttpResponse(t.render(context))
def favorite(request):
    t = loader.get_template('favorite.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    
    context['page_favorite']='selected'
    context['side_list']=['user_profile']
    my_utils.load_side_profile_info(request.user.username, context)
    
    return HttpResponse(t.render(context))
def dashboard(request):
    if not request.user.is_staff:
        return HttpResponseNotFound() 
    t = loader.get_template('admin/dashboard.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    context['side_list']=['']
    context['current_user'] = request.user
    context['page_dashboard'] = "selected"
    
    members = User.objects.filter(is_active=True)
    members_list = list()
    
    date_before = request.GET.get('type', 7)
    time = now_datetime()  - dt.timedelta(int(date_before))
    if int(date_before) is 30:
    	context['month'] = 'selected'
    else:
    	context['week'] = 'selected'
    context['queries'] = 'type=' + str(date_before)
    
    failers_list = list()
    for member in members:
    	try:
    	    item = dict()
    	    item['username'] = member.username
    	    item['last_name'] = member.last_name
    	    item['id'] = member.id
    	    count = Message.objects.filter(is_deleted=False,author=member,reg_date__gt=time).count()
    	    item['feeds'] = count
    	    
    	    count2 = Comment.objects.filter(is_deleted=False,author=member,reg_date__gt=time).count()
    	    item['comments'] = count2
    	    item['score'] = count + count2 * 0.5
    	    members_list.append(item)
    	    if item['score'] == 0.0:
    	        failers_list.append(item)
    	except:
    	    pass
    
    members_list = [y for (x,y) in sorted([(i['score'],i) for i in members_list], reverse=True)]
    
    context['failers'] = failers_list
    paginator = Paginator(members_list, 10)
        
    page = request.GET.get('page', 1)
    try:
        context['members'] = paginator.page(page)
    except PageNotAnInteger:
        context['members'] = paginator.page(1)
    except EmptyPage:
        context['members'] = paginator.page(paginator.num_pages)
    context['index_info'] = my_utils.get_index_list(context['members'].number, paginator.num_pages)
    
    return HttpResponse(t.render(context))
def invite(request):
    if not request.user.is_staff:
        return HttpResponseNotFound() 
    t = loader.get_template('admin/invite/invite.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    context['side_list']=['']
    context['current_user'] = request.user
    context['page_invite'] = "selected"
    
    return HttpResponse(t.render(context))
def authority(request):
    if not request.user.is_staff:
        return HttpResponseNotFound() 
    t = loader.get_template('admin/authority.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    context['side_list']=['']
    context['current_user'] = request.user
    context['page_authority'] = "selected"
    
    try:
        category = request.GET.get('category','')
        query_type = Q()
        
        if category == '1':
            context['show_staff']='selected'
            query_type = Q(user__is_staff=True, is_deactivated=False)
        elif category == '2':
            context['show_deactivated']='selected'
            query_type = Q(is_deactivated=True)
        else:
            context['show_user']='******'
            query_type = Q(user__is_staff=False, is_deactivated=False)
        
        members = UserProfile.objects.filter(query_type & ~Q(user = request.user), user__is_active=True).order_by('user__username')
        members_list = list()
        for member in members:
            try:
                try:
                    member.picture = member_profile.picture.url
                except:
                    member.picture = "/media/default.png"
                members_list.append(member)
            except:
                pass
        
        paginator = Paginator(members_list, 10)
        
        page = request.GET.get('page', 1)
        try:
            context['members'] = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            context['members'] = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            context['members'] = paginator.page(paginator.num_pages)
        
        context['index_info'] = my_utils.get_index_list(context['members'].number, paginator.num_pages)
        
    except Exception as e:
        print str(e)
    
    return HttpResponse(t.render(context))   
def main(request):
    t = loader.get_template('message.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
#   user = get_object_or_404(User,username=request.user.username)
    
    context['page_dm'] = "selected"
    context['type'] = 'all'
    if request.GET.get('type',False):
        context['type'] = request.GET['type']
    
    return HttpResponse(t.render(context))
def feed(request):
    t = loader.get_template('feed.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    context['load_type']='me'
    context['user_favorite_topics'] = my_utils.get_favorite_topics(request.user)
    context['side_list']=['']
    
    
    context['current_user'] = request.user
    context['page_feed'] = "selected"
    context['user_favorite_topics'] = my_utils.get_favorite_topics(request.user)
    return HttpResponse(t.render(context))
def setting(request):
    t = loader.get_template('setting.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    
    context['page_setting'] = "selected"
    user = get_object_or_404(User,username=request.user.username)
    user_profile = get_object_or_404(UserProfile,user=user)
    context['user'] = user
    context['user_profile'] = user_profile
    context['user_picture_url'] = '/media/default.png'
    if user_profile.picture:
        context['user_picture_url']=user_profile.picture.url
    return HttpResponse(t.render(context))
def stats_favorite(request):
    if not request.user.is_staff:
        return HttpResponseNotFound()
        
    t = loader.get_template('admin/stats_favorite.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    
    context['page_stats_by_favorite'] = 'selected'
    
    start_date=request.GET.get('start','')
    end_date=request.GET.get('end','')
    
    now = dt.datetime.now().isocalendar()
    this_week_start,this_week_end = get_week_days(now[0],now[1])
    if start_date == '':
        start_date=this_week_start.strftime("%Y-%m-%d")
    if end_date == '':
        end_date=this_week_end.strftime("%Y-%m-%d")
    
    context['start_date']=start_date
    context['end_date']=end_date
    
    start_date=time.strptime(start_date,'%Y-%m-%d')
    start_date=dt.datetime.fromtimestamp(time.mktime(start_date))
    end_date=time.strptime(end_date,'%Y-%m-%d')
    end_date=dt.datetime.fromtimestamp(time.mktime(end_date))
    end_date=end_date+dt.timedelta(1)
    
    #print start_date,end_date
    
    messages = UserFavorite.objects.filter(reg_date__range=(start_date,end_date), message__is_deleted=False).values('message').annotate(count = Count('message')).order_by('-count')
    items=list()
    for message in messages:
        feed_id = message['message']
        try:
            feed= Message.objects.get(id=feed_id)
            feed.count = message['count']
            comments = Comment.objects.filter(message=feed,reg_date__range=(start_date,end_date), is_deleted=False)
            feed.comments = comments
            items.append(feed)
        except:
            pass
    
    
    context['items']=items
    return HttpResponse(t.render(context)) 
def read(request):
    t = loader.get_template('notifications.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    context['load_type']='read'
    context['unread_selected']=''
    context['read_selected']='selected'
    context['user_favorite_topics'] = my_utils.get_favorite_topics(request.user)
    context['side_list']=['']
    
    
    context['current_user'] = request.user
    context['page_feed'] = "selected"
    context['user_favorite_topics'] = my_utils.get_favorite_topics(request.user)
    
    print context['user_favorite_topics']
    
    return HttpResponse(t.render(context))
def message_detail(request, message_id):
    t = loader.get_template('message_detail.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    
    try:
        user = User.objects.get(username=request.user.username)
        username = request.user.username
        username +=","
    except Exception as e:
        print str(e)
        return HttpResponseRedirect('signin')
    
    query_type = Q(author=user) | Q(receivers__contains=username)  
    try:
        d_message = DirectMessage.objects.filter(query_type,is_deleted=False,id=message_id)[0]
        context['message']=d_message
        context['message'].author_profile=UserProfile.objects.get(user=d_message.author)
        context['message'].contents=parser.parse_text(d_message.contents)
        context['message'].receivers=context['message'].receivers.replace(",", ", ")[:-2]
        context['message'].reg_date = d_message.reg_date.strftime('%Y-%m-%d %H:%M:%S')
        #2011-06-14 22:23:10
        context['type'] = 'all'
        if request.GET.get('type',False):
            context['type'] = request.GET['type']
    except Exception as e:
        print str(e)
        context['message']=None
        context['error_message'] = 'You cannot access to this message.'
        return HttpResponse(t.render(context))
        
    try:
        replies = DirectMessageReply.objects.filter(direct_message=d_message, is_deleted=False).order_by('reg_date')
        for reply in replies:
            reply.author_profile = UserProfile.objects.get(user=reply.author)
            reply.reg_date = reply.reg_date.strftime('%Y-%m-%d %H:%M:%S')
        context['replies']= replies
        print replies
    except Exception as e:
        print str(e)
    
    return HttpResponse(t.render(context))
def main(request):
    t = loader.get_template('poll.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    
    context['page_poll'] = "selected"
    context['side_list']=['']
    context['user_favorite_topics'] = my_utils.get_favorite_topics(request.user)
    
    try:
        polls = Poll.objects.filter(is_deleted=False).order_by('-reg_date')
        polls_list = list()
        for poll in polls:
            try:
                member_profile = UserProfile.objects.get(user=poll.author)
                try:
                    poll.author.picture = member_profile.picture.url
                except:
                    poll.author.picture = "/media/default.png"
                polls_list.append(poll)
            except:
                pass
        
        paginator = Paginator(polls_list, 15)
        
        page = request.GET.get('page', 1)
        try:
            context['polls'] = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            context['members'] = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            context['polls'] = paginator.page(paginator.num_pages)
        
        context['index_info'] = my_utils.get_index_list(context['polls'].number, paginator.num_pages)
        
    except Exception as e:
        print str(e)
    
    return HttpResponse(t.render(context))
def tab_detail(request, tab_id):
    t = loader.get_template("tab_detail.html")
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    context["side_list"] = [""]
    context["current_user"] = request.user
    context["page_tab_user"] = "******"

    print tab_id
    print tab_id
    tab = get_object_or_404(Tab, id=tab_id)

    context["tab"] = tab
    context["tab_name"] = tab.name
    context["tab_id"] = tab.id

    related_users = list()
    if not tab.is_public:
        tab_users = TabUsers.objects.filter(tab=tab)
        for tab_users in tab_users:
            user = tab_users.user
            if not user.is_active:
                continue
            try:
                user_profile = UserProfile.objects.get(user=user)
                user.picture_url = user_profile.picture.url
            except Exception as e:
                print str(e)
                user.picture_url = "/media/default.png"
            related_users.append(user)

    context["related_users"] = related_users

    context["side_list"] = ["tab_info"]
    context["page_tab"] = "selected"

    return HttpResponse(t.render(context))
def tab_admin(request):
    if not request.user.is_staff:
        return HttpResponseNotFound()
    t = loader.get_template("admin/tab.html")
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    context["side_list"] = [""]
    context["current_user"] = request.user
    context["page_tab"] = "selected"

    tab_name = request.POST.get("tab_name", "")
    is_public = request.POST.get("is_public", False)

    if tab_name is not "":
        ## create tab
        try:
            new_tab = Tab(name=tab_name, is_public=is_public)
            new_tab.save()
            context["tab_message"] = "Tab '" + tab_name + "' is created."
        except Exception as e:
            print e
            context["tab_message"] = "Tab '" + tab_name + "' is not created. Check again."

    tabs = Tab.objects.all()
    paginator = Paginator(tabs, 10)

    page = request.GET.get("page", 1)
    try:
        context["tabs"] = paginator.page(page)
    except PageNotAnInteger:
        context["tabs"] = paginator.page(1)
    except EmptyPage:
        context["tabs"] = paginator.page(paginator.num_pages)
    context["index_info"] = my_utils.get_index_list(context["tabs"].number, paginator.num_pages)

    return HttpResponse(t.render(context))
def tab_manage(request, tab_id):
    if not request.user.is_staff:
        return HttpResponseNotFound()

    t = loader.get_template("admin/tab_manage.html")
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    context["side_list"] = [""]
    context["current_user"] = request.user
    context["page_tab"] = "selected"

    tab = get_object_or_404(Tab, id=tab_id, is_public=False)

    context["tab_name"] = tab.name
    context["tab_id"] = tab.id

    if request.POST.get("add_user", False):
        try:
            username = request.POST.get("add_user", "")
            new_user = User.objects.get(username=username)
            new_relation = TabUsers.objects.get_or_create(tab=tab, user=new_user)[0]
            new_relation.save()
        except:
            print "add failed"

    if request.POST.get("delete_user", False):
        try:
            username = request.POST.get("delete_user", "")
            user = User.objects.get(username=username)
            relation = TabUsers.objects.get(tab=tab, user=user)
            relation.delete()
        except:
            print "add failed"

    tab_users = TabUsers.objects.filter(tab=tab).order_by("-reg_date")

    paginator_tab = Paginator(tab_users, 5)

    tab_page = request.GET.get("tab_page", 1)

    try:
        context["tab_users"] = paginator_tab.page(tab_page)
    except PageNotAnInteger:
        context["tab_users"] = paginator_tab.page(1)
    except EmptyPage:
        context["tab_users"] = paginator_tab.page(paginator_tab.num_pages)
    context["index_info_tab"] = my_utils.get_index_list(context["tab_users"].number, paginator_tab.num_pages)

    users = UserProfile.objects.filter(is_deactivated=False, user__is_active=True)

    paginator = Paginator(users, 10)
    page = request.GET.get("page", 1)
    try:
        context["users"] = paginator.page(page)
    except PageNotAnInteger:
        context["users"] = paginator.page(1)
    except EmptyPage:
        context["users"] = paginator.page(paginator.num_pages)
    context["index_info"] = my_utils.get_index_list(context["users"].number, paginator.num_pages)

    context["tab_page"] = tab_page
    context["index"] = page

    return HttpResponse(t.render(context))
def stats_topic(request):
    if not request.user.is_staff:
        return HttpResponseNotFound()
    
    t = loader.get_template('admin/stats_topic.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    
    context['page_stats_by_topic'] = 'selected'
    
    context['side_list']=['search_topic']
    my_utils.prepare_search_topic(context)
    
    
    
    now = dt.datetime.now().isocalendar()
    this_week_start,this_week_end = get_week_days(now[0],now[1])
    this_week_end = this_week_end + dt.timedelta(1)
    last_week_start,last_week_end = this_week_start - dt.timedelta(7),this_week_end - dt.timedelta(7)
    
    this_week_topics = Topic.objects.filter(reg_date__range=(this_week_start,this_week_end), topic_name__gt="")
    for topic in this_week_topics:
        try:
            topic.recent_message=''
            recent_message = TopicTimeline.objects.filter(topic=topic).order_by('-update_date')[:1][0]
            topic.recent_message=recent_message.message.contents
        except Exception as e:
            print str(e)
            pass
    context['this_week_topics'] = this_week_topics     
    context['this_week_length'] = Topic.objects.filter(reg_date__range=(this_week_start,this_week_end), topic_name__gt="").count()
    context['last_week_length'] = Topic.objects.filter(reg_date__range=(last_week_start,last_week_end), topic_name__gt="").count()
    if context['last_week_length'] == 0:
        context['increase_rate'] = 100.0
    else:
        context['increase_rate'] = (float(context['this_week_length']) - context['last_week_length'])/context['last_week_length'] * 100
    
    
    try:
        keyword = request.GET.get('q', '')
        query_type = Q()
        if keyword is not '':
            print keyword
            query_type = Q(topic_name__istartswith=keyword)
        
        search_index = request.GET.get('index', '')
        print search_index
        if search_index is not '':
            if search_index in map(chr, range(65, 91)):
                query_type = Q(topic_name__istartswith=search_index)
            elif search_index == 'number':
                query_type = Q(topic_name__gt="0",topic_name__lt="9")
            else:
                this_index,next_index=my_utils.next_search_index(search_index)
                query_type = Q(topic_name__gt=this_index, topic_name__lt=next_index)
        
        topics = Topic.objects.filter(query_type, topic_name__gt='').order_by('topic_name')
        for topic in topics:
            try:
                topic.recent_message=''
                recent_message = TopicTimeline.objects.filter(topic=topic).order_by('-update_date')[:1][0]
                topic.recent_message=recent_message.message.contents
            except Exception as e:
                print str(e)
                pass
                
        paginator = Paginator(topics, 5)
        
        page = request.GET.get('page', 1)
        try:
            context['topics'] = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            context['topics'] = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            context['topics'] = paginator.page(paginator.num_pages)
        
        context['index_info'] = my_utils.get_index_list(context['topics'].number, paginator.num_pages)
        
        
    except Exception as e:
        print str(e)
    
    
    return HttpResponse(t.render(context))
def main(request):
    t = loader.get_template('member.html')
    context = RequestContext(request)
    my_utils.load_basic_info(request, context)
    
    context['side_list']=['search_member']
    context['page_member'] = "selected"
    my_utils.prepare_search_topic(context)
    
    try:
        keyword = request.GET.get('q', '')
        search_index = request.GET.get('index', '')
        query_type = Q()
        if keyword is not '':
            print keyword
            query_type = Q(username__icontains=keyword) | Q(last_name__icontains=keyword)
        
        if search_index is not '':
            if search_index in map(chr, range(65, 91)):
                query_type = Q(username__istartswith=search_index)
            elif search_index == 'number':
                query_type = Q(username__gt="0",username__lt="9")
            else:
                this_index,next_index=my_utils.next_search_index(search_index)
                query_type = Q(username__gt=this_index, username__lt=next_index)
        
        members = User.objects.filter(query_type, is_active=True).order_by('username')
        members_list = list()
        for member in members:
            try:
                member_profile = UserProfile.objects.get(user=member)
                member.profile = member_profile
                try:
                    member.picture = my_utils.get_user_thumbnail(member)
                except:
                    member.picture = "/media/default.png"
                if not member_profile.is_deactivated:
                    members_list.append(member)
            except:
                pass
        
        paginator = Paginator(members_list, 15)
        
        page = request.GET.get('page', 1)
        try:
            context['members'] = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            context['members'] = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            context['members'] = paginator.page(paginator.num_pages)
        
        context['index_info'] = my_utils.get_index_list(context['members'].number, paginator.num_pages)
        
    except Exception as e:
        print str(e)
        
    
    
    return HttpResponse(t.render(context))