Просмотр исходного кода

后台管理

关注还有一些问题
honmaple 8 лет назад
Родитель
Сommit
1eb440c926

+ 3 - 2
maple/__init__.py

@@ -6,7 +6,7 @@
 # Author: jianglin
 # Email: xiyang0807@gmail.com
 # Created: 2016-05-20 12:35:52 (CST)
-# Last Update:星期一 2016-6-27 14:49:34 (CST)
+# Last Update:星期一 2016-6-27 15:0:21 (CST)
 #          By:jianglin
 # Description:
 # **************************************************************************
@@ -75,6 +75,7 @@ register(app)
 
 @app.before_request
 def before_request():
-    from maple.forums.forms import SortForm
+    from maple.forums.forms import SortForm, SearchForm
     g.user = current_user
     g.sort_form = SortForm()
+    g.search_form = SearchForm()

+ 1 - 1
maple/extensions.py

@@ -6,7 +6,7 @@
 # Author: jianglin
 # Email: xiyang0807@gmail.com
 # Created: 2016-05-20 13:02:50 (CST)
-# Last Update:星期一 2016-6-27 14:49:53 (CST)
+# Last Update:星期一 2016-6-27 17:17:11 (CST)
 #          By:
 # Description:
 # **************************************************************************

+ 7 - 2
maple/forums/forms.py

@@ -6,12 +6,13 @@
 # Author: jianglin
 # Email: xiyang0807@gmail.com
 # Created: 2016-06-03 19:27:58 (CST)
-# Last Update:星期五 2016-6-3 19:31:13 (CST)
+# Last Update:星期一 2016-6-27 14:59:44 (CST)
 #          By:
 # Description:
 # **************************************************************************
 from flask_wtf import Form
-from wtforms import SelectField
+from wtforms import SelectField, StringField
+from wtforms.validators import DataRequired
 from flask_babel import lazy_gettext as _
 
 
@@ -27,3 +28,7 @@ class SortForm(Form):
     st = SelectField('Up and Down',
                      coerce=int,
                      choices=[(0, 'down'), (1, 'up')])
+
+
+class SearchForm(Form):
+    search = StringField(_('search'), validators=[DataRequired()])

+ 15 - 2
maple/forums/models.py

@@ -6,7 +6,7 @@
 # Author: jianglin
 # Email: xiyang0807@gmail.com
 # Created: 2016-05-20 13:24:19 (CST)
-# Last Update:星期二 2016-6-14 23:20:14 (CST)
+# Last Update:星期二 2016-6-28 1:4:23 (CST)
 #          By:
 # Description:
 # **************************************************************************
@@ -21,10 +21,11 @@ class Board(db.Model):
     board = db.Column(db.String(81), nullable=False)
     parent_board = db.Column(db.String(81), nullable=False)
     description = db.Column(db.Text(), nullable=False)
+
     count_id = db.Column(db.Integer,
                          db.ForeignKey('counts.id',
                                        ondelete="CASCADE"))
-    count = db.relationship("Count",
+    count = db.relationship('Count',
                             backref="board",
                             cascade='all,delete-orphan',
                             single_parent=True,
@@ -32,6 +33,9 @@ class Board(db.Model):
 
     __mapper_args__ = {"order_by": rank.desc()}
 
+    def __str__(self):
+        return self.board
+
     def __repr__(self):
         return '<Board %r>' % self.board
 
@@ -54,6 +58,15 @@ class Count(db.Model):
     topics = db.Column(db.Integer, default=0)
     all_topics = db.Column(db.Integer, default=0)
 
+    # board_id = db.Column(db.Integer,
+    #                      db.ForeignKey(Board.id,
+    #                                    ondelete="CASCADE"))
+    # board = db.relationship(Board,
+    #                         backref=db.backref("count", lazy="dynamic"),
+    #                         cascade='all,delete-orphan',
+    #                         single_parent=True,
+    #                         uselist=False)
+
     def __repr__(self):
         return '<Count %r>' % self.id
 

+ 3 - 1
maple/static/assets/home.js

@@ -15,7 +15,9 @@ else
 else
 {$("#showerror").show();$("#error").text(result.error);$("#changeCode").attr("src",url.captcha+"?code="+Math.random());}}});});});function loadFile(event){var _file=document.getElementById("avatar");var i=_file.value.lastIndexOf('.');var len=_file.value.length;var extEndName=_file.value.substring(i+1,len);var extName="JPG,PNG";if(extName.indexOf(extEndName.toUpperCase())==-1){alert("您只能上传"+extName+"格式的文件");$('#avatar').val('');}else{var reader=new FileReader();reader.onload=function(){var icon='<i class="icon-exchange"></i>'+'\n';var img='<img src="'+reader.result+'" title="avatar" class="avatar img-circle">';$("#show-avatar").html(icon+img);};reader.readAsDataURL(event.target.files[0]);}}
 function SortFuntion(){var data=JSON.stringify({display:$('#display').val(),sort:$('#sort').val(),st:$('#st').val(),type:sortData.type,uid:sortData.uid,page:sortData.page});$.ajax({type:"POST",url:"/order",data:data,contentType:'application/json;charset=UTF-8',success:function(result){$('div.topiclist').html(result);}});}
-$(document).ready(function(){$('#display').change(function(){SortFuntion();});$('#sort').change(function(){SortFuntion();});$('#st').change(function(){SortFuntion();});});function Follow(obj,data){if(obj.hasClass('active'))
+$(document).ready(function(){$('#display').change(function(){SortFuntion();});$('#sort').change(function(){SortFuntion();});$('#st').change(function(){SortFuntion();});});function dispatch(){var q=document.getElementById("search");if(q.value!==""){var url='https://www.google.com/search?q=site:forums.honmaple.org%20'+q.value;if(navigator.userAgent.indexOf('iPad')>-1||navigator.userAgent.indexOf('iPod')>-1||navigator.userAgent.indexOf('iPhone')>-1){location.href=url;}else{window.open(url,"_blank");}
+return false;}else{return false;}}
+function Follow(obj,data){if(obj.hasClass('active'))
 {$.ajax({type:"DELETE",url:"/user/follow",data:data,contentType:'application/json;charset=UTF-8',success:function(result){if(result.judge===true)
 {obj.text('关注').removeClass('active');}
 else

+ 14 - 0
maple/static/styles/order.js → maple/static/styles/forums.js

@@ -28,3 +28,17 @@ $(document).ready(function(){
     SortFuntion();
   });
 });
+function dispatch() {
+  var q = document.getElementById("search");
+  if (q.value !== "") {
+    var url = 'https://www.google.com/search?q=site:forums.honmaple.org%20' + q.value;
+    if (navigator.userAgent.indexOf('iPad') > -1 || navigator.userAgent.indexOf('iPod') > -1 || navigator.userAgent.indexOf('iPhone') > -1) {
+      location.href = url;
+    } else {
+      window.open(url, "_blank");
+    }
+    return false;
+  } else {
+    return false;
+  }
+}

+ 7 - 1
maple/templates/base/base.html

@@ -10,7 +10,7 @@
             <a class="navbar-brand" href="{{ url_for('forums.index')}}" style="padding:0px">
                 <img alt="Brand" src="{{url_for('static',filename='images/header.png')}}" style="width:42px;">
             </a>
-            <div class="navbar-brand" style="padding-top:2;padding-left:30px">
+            <div class="navbar-brand" style="padding-top:2;padding-left:16px">
                 <span style="font-size:20px;color:#EB5424"><b class="text-capitalize">{{ Title.title}}</b></span>
                 <br/>
                 <small style="font-size:10px">{{ Title.description}}</small>
@@ -27,6 +27,12 @@
                 <li><a href="#">注册</a></li>
                 <li><a href="#">登陆</a></li>
             </ul>
+            <form onsubmit="return dispatch()" class="navbar-form navbar-right" style="margin-top:10px;" >
+                <div class="form-group has-feedback">
+                    {{ g.search_form.search(class="form-control input-sm",placeholder="搜索内容")}}
+                    <i class="icon-search form-control-feedback"></i>
+                </div>
+            </form>
         </div>
     </div>
 </nav>

+ 4 - 1
maple/topic/models.py

@@ -6,7 +6,7 @@
 # Author: jianglin
 # Email: xiyang0807@gmail.com
 # Created: 2016-05-20 13:32:12 (CST)
-# Last Update:星期一 2016-6-27 12:13:37 (CST)
+# Last Update:星期一 2016-6-27 23:1:42 (CST)
 #          By:
 # Description:
 # **************************************************************************
@@ -70,6 +70,9 @@ class Topic(db.Model):
 
     __mapper_args__ = {"order_by": publish.desc()}
 
+    def __str__(self):
+        return self.title
+
     def __repr__(self):
         return "<Topic %r>" % self.title
 

+ 6 - 3
maple/user/models.py

@@ -6,7 +6,7 @@
 # Author: jianglin
 # Email: xiyang0807@gmail.com
 # Created: 2016-05-20 13:24:19 (CST)
-# Last Update:星期六 2016-6-25 0:13:28 (CST)
+# Last Update:星期一 2016-6-27 22:46:38 (CST)
 #          By:
 # Description:
 # **************************************************************************
@@ -94,7 +94,7 @@ class User(db.Model, UserMixin):
                            db.ForeignKey('usersetting.id',
                                          ondelete="CASCADE"))
     setting = db.relationship("UserSetting",
-                              backref="users",
+                              backref="user",
                               cascade='all,delete',
                               uselist=False)
 
@@ -102,10 +102,13 @@ class User(db.Model, UserMixin):
                          db.ForeignKey('userinfor.id',
                                        ondelete="CASCADE"))
     infor = db.relationship("UserInfor",
-                            backref="users",
+                            backref=db.backref('user', lazy='joined'),
                             cascade='all,delete',
                             uselist=False)
 
+    def __str__(self):
+        return self.username
+
     def __repr__(self):
         return '<User %r>' % self.username
 

+ 1 - 0
requirements.txt

@@ -39,6 +39,7 @@ Flask-Script==2.0.5
 Flask-SocketIO==2.2
 Flask-SQLAlchemy==2.1
 Flask-Themes2==0.1.4
+flask-util-js==0.2.25
 Flask-WhooshAlchemy==0.56
 Flask-WTF==0.12
 gevent==1.1.1