فهرست منبع

Merge pull request #2 from meolu/master

sync
flying 6 سال پیش
والد
کامیت
ed190c5ff2

+ 2 - 2
.github/ISSUE_TEMPLATE/bug---.md

@@ -3,7 +3,7 @@ name: Bug-报告
 about: 更详细的描述更利用问题解决
 title: BUG
 labels: bug
-assignees: meolu
+assignees: henyihanwobushi, meolu, aSmallPing, ZouHongxue
 
 ---
 
@@ -27,4 +27,4 @@ error...
 
 **运行环境**
  - OS: [e.g. Centos 7.x]
- - 版本 [e.g. 2.0.0]
+ - 版本 [e.g. aba77b36] walle首页信息处显示

+ 7 - 2
walle/api/passport.py

@@ -16,6 +16,8 @@ from walle.api.api import ApiResource
 from walle.form.user import LoginForm
 from walle.model.user import UserModel
 from walle.service.code import Code
+from walle.service.error import WalleError
+
 
 class PassportAPI(ApiResource):
     actions = ['login', 'logout']
@@ -46,8 +48,11 @@ class PassportAPI(ApiResource):
             user = UserModel.query.filter_by(email=form.email.data).first()
 
             if user is not None and user.verify_password(form.password.data):
-                login_user(user)
-                user.fresh_session()
+                try:
+                    login_user(user)
+                    user.fresh_session()
+                except WalleError as e:
+                    return self.render_json(code=e.code, data=Code.code_msg[e.code])
                 return self.render_json(data=current_user.to_json())
 
         return self.render_json(code=Code.error_pwd, data=form.errors)

+ 6 - 1
walle/api/user.py

@@ -99,7 +99,12 @@ class UserAPI(SecurityResource):
                     <br> <br>Welcome to walle, it cost a lot of time and lock to meet you, enjoy it : )
                     <br><br>name: %s<br>password: %s""" \
                               % (user.username, user.email, form.password.data)
-            emails.send_email(user.email, 'Welcome to walle', message, '')
+
+            try:
+                emails.send_email(user.email, 'Welcome to walle', message, '')
+            except Exception as e:
+                # todo, response error message to the front.
+                current_app.logger.warning(e)
 
             return self.render_json(data=user.item(user_id=user.id))
         return self.render_error(code=Code.form_error, message=form.errors)

+ 6 - 1
walle/form/user.py

@@ -6,6 +6,7 @@
     :created time: 2017-03-19 15:50:07
     :author: wushuiyong@walle-web.io
 """
+
 try:
     from flask_wtf import FlaskForm  # Try Flask-WTF v0.13+
 except ImportError:
@@ -48,7 +49,11 @@ class UserForm(FlaskForm):
 
 
 class RegistrationForm(UserForm):
-    pass
+
+    def validate_username(self, field):
+        """ username muse be unique """
+        if UserModel.query.filter(UserModel.username == field.data, UserModel.username != -1).count():
+            raise ValidationError('此用户名已经被注册')
 
 
 class UserUpdateForm(FlaskForm):

+ 3 - 3
walle/model/environment.py

@@ -10,7 +10,7 @@ from datetime import datetime
 
 from sqlalchemy import String, Integer, DateTime
 from walle import model
-from walle.model.database import db, Model
+from walle.model.database import db, Model, or_
 from walle.service.extensions import permission
 
 
@@ -39,13 +39,13 @@ class EnvironmentModel(Model):
         :param kw:
         :return:
         """
+        SpaceModel = model.space.SpaceModel
         query = self.query.filter(EnvironmentModel.status.notin_([self.status_remove]))
         if kw:
-            query = query.filter(EnvironmentModel.name.like('%' + kw + '%'))
+            query = query.filter(or_(EnvironmentModel.name.like('%' + kw + '%'), SpaceModel.name.like('%' + kw + '%')))
         if space_id:
             query = query.filter(EnvironmentModel.space_id == space_id)
 
-        SpaceModel = model.space.SpaceModel
         query = query.join(SpaceModel, SpaceModel.id == EnvironmentModel.space_id)
         query = query.add_columns(SpaceModel.name)
         count = query.count()

+ 1 - 1
walle/model/member.py

@@ -202,7 +202,7 @@ class MemberModel(SurrogatePK, Model):
 
         count = query.count()
         query = query.order_by(MemberModel.id.asc())
-        if size:
+        if size and size>0:
             query = query.offset(int(size) * int(page)).limit(size)
         data = query.all()
 

+ 3 - 2
walle/service/deployer.py

@@ -278,8 +278,9 @@ class Deployer:
 
             # 1. create a tmp link dir
             current_link_tmp_dir = 'current-tmp-%s' % (self.task_id)
-            command = 'ln -sfn %s %s' % (
-                self.release_version, current_link_tmp_dir)
+            command = 'ln -sfn {library}/{version} {library}/{current_tmp}'.format(
+                library=self.project_info['target_releases'], version=self.release_version,
+                current_tmp=current_link_tmp_dir)
             result = waller.run(command, wenv=self.config())
 
             # 2. make a soft link from release to tmp link

+ 39 - 38
walle/service/git/repo.py

@@ -28,44 +28,45 @@ class Repo:
         self.path = path
 
 
-    def log(self, wenv):
-        '''
-
-        @param wenv:
-
-            @param stage:
-            @param sequence:
-            @param user_id:
-            @param task_id:
-            @param status:
-            @param host:
-            @param user:
-            @param command:
-            @param success:
-            @param error:
-
-        @return:
-        '''
-        RecordModel().save_record(stage=wenv['stage'], sequence=wenv['sequence'], user_id=wenv['user_id'],
-                                  task_id=wenv['task_id'], status=exitcode, host='127.0.0.1', user=getpass.getuser(),
-                                  command=result.command, success=stdout,
-                                  error=stderr)
-
-    def websocket(self):
-        ws_dict = {
-            'user': getpass.getuser(),
-            'host': '127.0.0.1',
-            'cmd': command,
-            'status': exitcode,
-            'stage': wenv['stage'],
-            'sequence': wenv['sequence'],
-            'success': stdout,
-            'error': stderr,
-        }
-        if wenv['console']:
-            emit('console', {'event': 'task:console', 'data': ws_dict}, room=wenv['task_id'])
-
-        pass
+    # What follows is the risk code for flake8.
+    # def log(self, wenv):
+    #     '''
+    #
+    #     @param wenv:
+    #
+    #         @param stage:
+    #         @param sequence:
+    #         @param user_id:
+    #         @param task_id:
+    #         @param status:
+    #         @param host:
+    #         @param user:
+    #         @param command:
+    #         @param success:
+    #         @param error:
+    #
+    #     @return:
+    #     '''
+    #     RecordModel().save_record(stage=wenv['stage'], sequence=wenv['sequence'], user_id=wenv['user_id'],
+    #                               task_id=wenv['task_id'], status=exitcode, host='127.0.0.1', user=getpass.getuser(),
+    #                               command=result.command, success=stdout,
+    #                               error=stderr)
+    #
+    # def websocket(self):
+    #     ws_dict = {
+    #         'user': getpass.getuser(),
+    #         'host': '127.0.0.1',
+    #         'cmd': command,
+    #         'status': exitcode,
+    #         'stage': wenv['stage'],
+    #         'sequence': wenv['sequence'],
+    #         'success': stdout,
+    #         'error': stderr,
+    #     }
+    #     if wenv['console']:
+    #         emit('console', {'event': 'task:console', 'data': ws_dict}, room=wenv['task_id'])
+    #
+    #     pass
 
 
     def is_git_dir(self):