远行的心 发表于 2018-8-2 10:50:05

Flask+jinja2 开发Puppet用户和节点管理系统

# -*- coding: utf-8 -*-  
"""
  Name: Puppet-Partner
  Author: xnile
  Author-email: xnile@qq.com
  Description: Puppet-Partner is used to manage nodes and users for Puppet.
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  

  
"""
  
from flask import Flask, request, session, redirect, url_for, abort, \
  
   render_template, flash, jsonify
  
from flask.ext.paginate import Pagination
  
from sqlalchemy import create_engine, ForeignKeyConstraint
  
from sqlalchemy.ext.declarative import declarative_base
  
from sqlalchemy.orm import sessionmaker,relationship
  
from jinja2 import Environment, PackageLoader
  
import sys
  
import json
  

  
reload(sys)
  
sys.setdefaultencoding('utf8')
  

  
""" config """
  
DEBUG = True
  
SECRET_KEY = 'somekey'
  
JSONIFY_PRETTYPRINT_REGULAR = False
  

  
app = Flask(__name__)
  
app.config.from_object(__name__)
  

  
"""connecting"""
  
engine = create_engine('mysql+mysqldb://root:@localhost/puppet',echo=True)
  
Base = declarative_base(engine)
  

  
class Group(Base):
  """mapping"""
  __tablename__= 'puppet_groups'
  __table_args__ = {'autoload':True}
  

  
class Users(Base):
  """maping and relationship"""
  __tablename__= 'puppet_users'
  __table_args__ = (
  ForeignKeyConstraint(['gid'], ['puppet_groups.gid']),
  {'autoload':True,}
  )
  onetoone = relationship("Group")
  

  
def loadSession():
  """"""
  metadata = Base.metadata
  Session = sessionmaker(bind=engine)
  session = Session()
  return session
  

  
def CreateConf():
  """ Generate configuration files """
  session = loadSession()
  groups = session.query(Group).all()
  for group in groups:
  session = loadSession()
  users = session.query(Users).filter(Users.gid==group.gid).all()
  env = Environment(loader=PackageLoader('conf','templates'))
  template = env.get_template('user.pp')
  data = template.render(users=users,group=group)
  f = open('conf/' + group.gname + '.pp','w')
  f.write(data)
  f.close()
  
@app.route('/')
  
def index():
  """"""
  CreateConf()
  return render_template('index.html')
  

  
@app.route('/user_add',methods=['POST','GET'])
  
def user_add():
  """Add users"""
  session = loadSession()
  group = session.query(Group).all()
  if request.method == 'POST':
  username = request.form['username']
  password = request.form['password']
  gid = int(request.form['gid'])
  ed_group = Users(username=username,password=password,gid=gid)
  session= loadSession()
  session.add(ed_group)
  session.commit()
  return render_template('user_add.html',groups=group)
  

  
if __name__ == '__main__':
  app.run(host='0.0.0.0',port=8080)
页: [1]
查看完整版本: Flask+jinja2 开发Puppet用户和节点管理系统