honmaple 8 лет назад
Родитель
Сommit
833d88b26f

+ 8 - 3
forums/api/forums/views.py

@@ -6,7 +6,7 @@
 # Author: jianglin
 # Email: xiyang0807@gmail.com
 # Created: 2016-12-17 20:45:08 (CST)
-# Last Update:星期日 2017-4-9 12:43:42 (CST)
+# Last Update:星期五 2017-4-21 17:35:51 (CST)
 #          By:
 # Description:
 # **************************************************************************
@@ -81,10 +81,15 @@ class BoardView(MethodView):
         order_by = gen_topic_orderby(query_dict, keys)
         filter_dict = gen_topic_filter(query_dict, keys)
         if has_children:
+            o = []
+            for i in order_by:
+                if i.startswith('-'):
+                    o.append(getattr(Topic, i.split('-')[1]).desc())
+                else:
+                    o.append(getattr(Topic, i))
             topics = Topic.query.outerjoin(Board).filter_by(**filter_dict).or_(
                 Board.parent_id == boardId,
-                Board.id == boardId).order_by(*order_by).paginate(page, number,
-                                                                  True)
+                Board.id == boardId).order_by(*o).paginate(page, number, True)
         else:
             filter_dict.update(board_id=boardId)
             topics = Topic.query.filter_by(

+ 4 - 2
forums/api/search/views.py

@@ -6,7 +6,7 @@
 # Author: jianglin
 # Email: xiyang0807@gmail.com
 # Created: 2017-03-31 17:26:28 (CST)
-# Last Update:星期日 2017-4-16 15:4:55 (CST)
+# Last Update:星期四 2017-4-20 17:19:6 (CST)
 #          By:
 # Description:
 # **************************************************************************
@@ -19,6 +19,7 @@ from forums.extension import search
 class SearchView(MethodView):
     def get(self):
         query_dict = request.data
+        page, number = self.page_info
         keyword = query_dict.pop('keyword', None)
         include = query_dict.pop('include', '0')
         if keyword and len(keyword) >= 2:
@@ -29,7 +30,8 @@ class SearchView(MethodView):
                 fields = ['title']
             elif include == '2':
                 fields = ['content']
-            results = search.whoosh_search(Topic, keyword, fields=fields)
+            results = Topic.query.whoosh_search(
+                keyword, fields=fields).paginate(page, number, True)
             data = {'title': 'Search', 'results': results, 'keyword': keyword}
             return render_template('search/result.html', **data)
         data = {'title': 'Search'}

+ 3 - 6
forums/api/upload/views.py

@@ -6,7 +6,7 @@
 # Author: jianglin
 # Email: xiyang0807@gmail.com
 # Created: 2016-12-21 21:56:41 (CST)
-# Last Update:星期四 2017-3-30 21:50:30 (CST)
+# Last Update:星期五 2017-4-21 17:48:26 (CST)
 #          By:
 # Description:
 # **************************************************************************
@@ -38,7 +38,7 @@ class AvatarView(MethodView):
         size = 150, 150
         img.thumbnail(size, Image.ANTIALIAS)
         current_app.config.setdefault('AVATAR_FOLDER', os.path.join(
-            current_app.static_folder, 'avatars/'))
+            current_app.static_folder, 'avatars'))
         avatar_path = current_app.config['AVATAR_FOLDER']
         avatar = os.path.join(avatar_path, filename + '.png')
         if not os.path.exists(avatar_path):
@@ -59,12 +59,9 @@ class AvatarView(MethodView):
 class AvatarFileView(MethodView):
     def get(self, filename):
         current_app.config.setdefault('AVATAR_FOLDER', os.path.join(
-            current_app.static_folder, 'avatars/'))
+            current_app.static_folder, 'avatars'))
         avatar_path = current_app.config['AVATAR_FOLDER']
-        print(avatar_path)
         if not os.path.exists(os.path.join(avatar_path, filename)):
             filename = filename.split('-')[0]
             return redirect(url_for('avatar', text=filename))
-            # avatar_path = os.path.join(current_app.static_folder, 'images/')
-            # filename = 'Moo.png'
         return send_from_directory(avatar_path, filename)

+ 3 - 2
forums/api/utils.py

@@ -6,7 +6,7 @@
 # Author: jianglin
 # Email: xiyang0807@gmail.com
 # Created: 2017-03-29 13:33:03 (CST)
-# Last Update:星期日 2017-4-9 12:42:56 (CST)
+# Last Update:星期五 2017-4-21 17:25:11 (CST)
 #          By:
 # Description:
 # **************************************************************************
@@ -43,7 +43,8 @@ def gen_topic_filter(query_dict=dict(), keys=[], equal_key=[], user=None):
 
 def gen_topic_orderby(query_dict=dict(), keys=[], date_key=True):
     keys.append('id')
-    order_by = ['id']
+    # order_by = ['id']
+    order_by = ['-is_top', 'id']
     orderby = query_dict.pop('orderby', None)
     desc = query_dict.pop('desc', None)
     if orderby == '0':

+ 2 - 3
forums/common/views.py

@@ -6,7 +6,7 @@
 # Author: jianglin
 # Email: xiyang0807@gmail.com
 # Created: 2017-03-13 13:29:37 (CST)
-# Last Update:星期六 2017-4-1 22:15:52 (CST)
+# Last Update:星期五 2017-4-21 17:54:23 (CST)
 #          By:
 # Description:
 # **************************************************************************
@@ -18,8 +18,7 @@ from forums.extension import cache
 
 
 def cache_key():
-    key = request.url
-    return 'view:%s' % key
+    return 'view:{}:{}'.format(request.remote_addr, request.url)
 
 
 def is_confirmed(func):

+ 2 - 2
forums/extension.py

@@ -6,7 +6,7 @@
 # Author: jianglin
 # Email: xiyang0807@gmail.com
 # Created: 2016-10-25 21:57:10 (CST)
-# Last Update:星期日 2017-4-16 17:37:40 (CST)
+# Last Update:星期五 2017-4-21 17:49:34 (CST)
 #          By:
 # Description:
 # **************************************************************************
@@ -101,4 +101,4 @@ principal = Principal()
 login_manager = register_login()
 maple_app = App(json=CustomJSONEncoder)
 middleware = Middleware()
-search = Search()
+search = Search(db=db)

+ 3 - 3
manager.py

@@ -6,7 +6,7 @@
 # Author: jianglin
 # Email: xiyang0807@gmail.com
 # Created: 2016-10-25 22:08:39 (CST)
-# Last Update:星期日 2017-4-16 15:38:22 (CST)
+# Last Update:星期五 2017-4-21 17:56:42 (CST)
 #          By:
 # Description:
 # **************************************************************************
@@ -47,11 +47,11 @@ def delete_index():
 def test_index():
     from forums.extension import search
     from forums.api.topic.models import Topic
-    results = search.whoosh_search(Topic, '河海大学', ['title'], 3)
+    results = search.whoosh_search(Topic, '河海', ['title'], 1)
     print('results:')
     print(results)
     for i in results:
-        print(i)
+        print(i['title'])
         print(i.highlights("title"))  # 高亮标题中的检索词
 
 

+ 6 - 3
templates/search/result.html

@@ -8,14 +8,17 @@
     <div class="panel-body" style="border-bottom:1px solid #eee">
       {% include "search/form.html" %}
     </div>
-    {% for result in results %}
+    {% for result in results.items %}
       <div class="panel-body text-center" style="padding:6px;border-bottom:1px solid #eee">
-        <a href="{{ url_for('topic.topic',topicId=result['id']) }}">{{ result['title'] }}</a>
+        <a href="{{ url_for('topic.topic',topicId=result.id) }}">{{ result.title }}</a>
       </div>
     {% else %}
       <div class="panel-body text-center">
         您的搜索没有返回结果。
       </div>
-    {% endfor %}
+      {% endfor %}
+      {% set params = request.args.to_dict() %}
+      {% set page = params.pop('page',None) %}
+      {{ p_footer(results,'search.search',params)}}
   </div>
 {% endblock %}

+ 1 - 1
templates/topic/reply/itemlist.html

@@ -20,7 +20,7 @@
     </div>
     <div class="media-body">
       <small class="media-heading" style="color:#999">
-        <span>{{ link.user(reply.author.username)}}</span>
+        <span>{{ link.user(reply.author)}}</span>
         <span>{{ reply.created_at | timesince }}</span>
         <a name="reply{{ reply.id }}" class="anchor" href="#reply{{ num }}" aria-hidden="true">#{{ num }}</a>
       </small>