Forráskód Böngészése

加入登陆页面

James Iter 9 éve
szülő
commit
5c73d93378
4 módosított fájl, 143 hozzáadás és 1 törlés
  1. 2 0
      main.py
  2. 97 0
      templates/login.html
  3. 41 0
      views/misc.py
  4. 3 1
      views_route_table.py

+ 2 - 0
main.py

@@ -42,6 +42,7 @@ from api.host_performance import blueprints as host_performance_blueprints
 
 from views.error_pages import *
 from views.config import blueprint as view_config_blueprint
+from views.misc import blueprint as view_misc_blueprint
 from views.dashboard import blueprint as view_dashboard_blueprint
 from views.guest import blueprint as view_guest_blueprint
 from views.guest import blueprints as view_guest_blueprints
@@ -147,6 +148,7 @@ try:
     app.register_blueprint(host_performance_blueprints)
 
     app.register_blueprint(view_config_blueprint)
+    app.register_blueprint(view_misc_blueprint)
     app.register_blueprint(view_dashboard_blueprint)
     app.register_blueprint(view_guest_blueprint)
     app.register_blueprint(view_guest_blueprints)

+ 97 - 0
templates/login.html

@@ -0,0 +1,97 @@
+{% extends "layout.html" %}
+{% block head %}
+    {{ super() }}
+
+    <style type="text/css">
+
+        label>span {
+            color: deepskyblue;
+        }
+
+        .btn,
+        .form-group>div>div,
+        .form-control {
+            border-radius: 0;
+        }
+
+        .form-horizontal > .form-group {
+            margin: 0;
+        }
+
+        html,body {
+            height: 100%;
+        }
+
+        .page-box .server-message {
+            padding: 35px 0;
+        }
+        body {
+            overflow: hidden;
+        }
+    </style>
+{% endblock head %}
+{% block body %}
+<div class="center-vertical">
+    <div class="center-content row wow">
+        <form action="" id="login-validation" class="col-md-4 col-sm-5 col-xs-11 col-lg-3 center-margin" method="POST">
+            <h3 class="text-center pad25B font-primary" style="font-family: 'Baskerville'; opacity: 0.83; font-size: -webkit-xxx-large;">JimV<span style="font-family: 'serif';"> Admin</span></h3>
+            <div id="login-form" class="content-box bg-default">
+                <div class="content-box-wrapper pad20A">
+                    <img class="mrg25B center-margin radius-all-100 display-block" src="../../assets/image-resources/gravatar.jpg" alt="">
+                    <div class="form-group">
+                        <div class="input-group">
+                            <span class="input-group-addon addon-inside bg-gray">
+                                <i class="glyph-icon icon-envelope-o"></i>
+                            </span>
+                            <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email">
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <div class="input-group">
+                            <span class="input-group-addon addon-inside bg-gray">
+                                <i class="glyph-icon icon-unlock-alt"></i>
+                            </span>
+                            <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <button type="submit" class="btn btn-block btn-primary">Login</button>
+                    </div>
+                    <div class="row">
+                        <div class="checkbox-primary col-md-6" style="height: 20px;">
+                            <label>
+                                <input type="checkbox" id="loginCheckbox1" class="custom-checkbox">
+                                Remember me
+                            </label>
+                        </div>
+                        <div class="text-right col-md-6">
+                            <a href="#" class="switch-button" switch-target="#login-forgot" switch-parent="#login-form" title="Recover password">Forgot your password?</a>
+                        </div>
+                    </div>
+                </div>
+            </div>
+
+            <div id="login-forgot" class="content-box bg-default hide">
+                <div class="content-box-wrapper pad20A">
+
+                    <div class="form-group">
+                        <label for="exampleInputEmail2">Email address:</label>
+                        <div class="input-group">
+                            <span class="input-group-addon addon-inside bg-gray">
+                                <i class="glyph-icon icon-envelope-o"></i>
+                            </span>
+                            <input type="email" class="form-control" id="exampleInputEmail2" placeholder="Enter email">
+                        </div>
+                    </div>
+                </div>
+                <div class="button-pane text-center">
+                    <button type="submit" class="btn btn-md btn-primary">Recover Password</button>
+                    <a href="#" class="btn btn-md btn-link switch-button" switch-target="#login-form" switch-parent="#login-forgot" title="Cancel">Cancel</a>
+                </div>
+            </div>
+
+        </form>
+
+    </div>
+</div>
+{% endblock body %}

+ 41 - 0
views/misc.py

@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+
+import json
+from flask import Blueprint, render_template, url_for, request
+import requests
+
+
+__author__ = 'James Iter'
+__date__ = '2017/9/12'
+__contact__ = 'james.iter.cn@gmail.com'
+__copyright__ = '(c) 2017 by James Iter.'
+
+
+blueprint = Blueprint(
+    'v_misc',
+    __name__,
+    url_prefix='/'
+)
+
+
+def login():
+    host_url = request.host_url.rstrip('/')
+
+    if request.method == 'POST':
+        payload = {
+            'jimv_edition': int(request.form.get('jimv_edition', 0))
+        }
+
+        url = host_url + '/api/config'
+        headers = {'content-type': 'application/json'}
+        config_ret = requests.post(url, data=json.dumps(payload), headers=headers)
+        config_ret = json.loads(config_ret.content)
+        return render_template('success.html', go_back_url='/', timeout=5000, title='提交成功',
+                               message_title='初始化 JimV 请求已被接受',
+                               message='JimV 已被初始化。页面将在5秒钟后自动跳转到实例列表页面!')
+
+    else:
+        return render_template('login.html')
+

+ 3 - 1
views_route_table.py

@@ -3,7 +3,7 @@
 
 
 from models.utils import add_rule_views
-from views import guest, disk, log, os_template, boot_job, operate_rule, host, dashboard, config
+from views import guest, disk, log, os_template, boot_job, operate_rule, host, dashboard, config, misc
 
 
 __author__ = 'James Iter'
@@ -15,6 +15,8 @@ __copyright__ = '(c) 2017 by James Iter.'
 add_rule_views(config.blueprint, '', views_func='config.show', methods=['GET'])
 add_rule_views(config.blueprint, '/create', views_func='config.create', methods=['GET', 'POST'])
 
+add_rule_views(misc.blueprint, 'login', views_func='misc.login', methods=['GET', 'POST'])
+
 add_rule_views(dashboard.blueprint, '', views_func='dashboard.show', methods=['GET'])
 
 add_rule_views(guest.blueprints, '', views_func='guest.show', methods=['GET'])