-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
- Loading branch information
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
[default] | ||
projectname = | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
#coding=utf-8 | ||
|
||
from flask import Flask,abort | ||
from extensions import db,login_manager | ||
from flask.ext import restful | ||
from app.views import audit, flow, users,site,agent,auth,role_auth,role | ||
from app.services import Product, Whois, Audit | ||
import logging | ||
from util.logger import logfile | ||
from logging import getLogger | ||
from logging.handlers import TimedRotatingFileHandler | ||
DEFAULT_APP_NAME = 'app' | ||
DEFAULT_MODULES = { | ||
|
||
'web_modules': [ | ||
(site, "/"), | ||
(users, "/users"), | ||
(audit, "/audit"), | ||
(flow, "/admin"), | ||
(agent, "/agent"), | ||
(auth, "/auth"), | ||
(role, "/role"), | ||
(role_auth, "/roleauth"), | ||
|
||
], | ||
'service_moudles': [ | ||
(Product, '/api/product'), | ||
(Whois, '/api/whois'), | ||
(Audit, '/api/audit'), | ||
] | ||
|
||
} | ||
|
||
|
||
def create_app(config=None): | ||
app = Flask(DEFAULT_APP_NAME) | ||
api = restful.Api(app) | ||
app.config.from_object(config) | ||
configure_extensions(app) | ||
configure_modules(app, api, DEFAULT_MODULES) | ||
# configure_logging(app) | ||
return app | ||
|
||
|
||
def configure_modules(app, api, moudles): | ||
|
||
if 'web_modules' in moudles: | ||
|
||
for module, url_prefix in moudles['web_modules']: | ||
app.register_blueprint(module, url_prefix=url_prefix) | ||
if 'service_moudles' in moudles: | ||
for module, url_prefix in moudles['service_moudles']: | ||
api.add_resource(module, url_prefix) | ||
|
||
def configure_extensions(app): | ||
db.init_app(app) | ||
login_manager.init_app(app) | ||
@app.after_request | ||
def after_request(response): | ||
try: | ||
db.session.commit() | ||
|
||
except Exception,e: | ||
|
||
db.session.rollback() | ||
abort(500) | ||
return response | ||
|
||
def configure_logging(app): | ||
loggers = [app.logger] | ||
for logger in loggers: | ||
file_handler = TimedRotatingFileHandler("mark", when='S', interval=1, backupCount=40) | ||
file_handler.suffix = "%Y%m%d.log" | ||
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') | ||
file_handler.setLevel(logging.DEBUG) | ||
file_handler.setFormatter(formatter) | ||
|
||
logger.setLevel(logging.DEBUG) | ||
logger.addHandler(file_handler) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
#!/usr/bin/env python | ||
# -*- coding:utf-8 -*- | ||
__author__ = 'zhuhuijie' | ||
__email__ = "[email protected]" | ||
__copyright__ = "Copyright 2014,Cnnic" | ||
__version__ = "1.0.0" | ||
__deprecated__ = False | ||
__date__ = "2014-09-18" | ||
""" | ||
extends moudles | ||
""" | ||
from flask.ext.sqlalchemy import SQLAlchemy | ||
from flask.ext.login import LoginManager | ||
|
||
|
||
__all__ = ['db', 'login_manager'] | ||
db = SQLAlchemy() | ||
login_manager = LoginManager() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
#coding=utf-8 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# -*- coding: utf-8 -*- | ||
""" agent forms | ||
""" | ||
from gettext import gettext | ||
from app.models import DomainPrice, AgentInfo | ||
|
||
__author__ = "XiaoQian" | ||
__email__ = "[email protected]" | ||
__copyright__ = "Copyright 2007, Cnnic" | ||
__version__ = "1.0.0" | ||
__deprecated__ = False | ||
__date__ = "2014-8-18 10:22:57" | ||
|
||
from flask.ext.wtf import Form | ||
from wtforms import StringField, PasswordField, SelectField, DecimalField, ValidationError,FloatField | ||
from wtforms.validators import DataRequired, Email, URL,NumberRange | ||
|
||
|
||
class AgentForm(Form): | ||
comp_name = StringField(u'注册商公司名', validators=[DataRequired(message=u'请输入注册商公司名')]) | ||
email = StringField(u'邮箱', validators=[DataRequired(message=u'请输入邮箱地址'), Email(message=u'请输入正确的邮箱格式')]) | ||
phone = StringField(u'联系电话', validators=[DataRequired(message=u'请输入联系电话')]) | ||
url = StringField(u'注册商网址', validators=[DataRequired(message=u'请输入注册商网址')]) | ||
abuse_email = StringField(u'紧急联系邮箱', validators=[DataRequired(message=u'请输入邮箱地址'), Email(message=u'请输入正确的邮箱格式')]) | ||
abuse_phone = StringField(u'紧急联系电话', validators=[DataRequired(message=u'请输入紧急联系电话')]) | ||
|
||
class AddAgentForm(AgentForm): | ||
agent_name = StringField(u'注册商用户名', validators=[DataRequired(message=u'请输入注册商用户名')]) | ||
password = PasswordField(u'密码', validators=[DataRequired(message=u'请输入密码')]) | ||
balance_remind = DecimalField(u'余额提醒值', validators=[DataRequired(u'请输入余额提醒值'),NumberRange(min=0,message=u'金额必须大于0')]) | ||
# domain_price_id = SelectField(u'域名价格', coerce=int, | ||
# choices=[(p.id, str(p.price) + '/' + u'年' if p.pay_type == 1 else str(p.price) + '/' + u'月') | ||
# for p in DomainPrice.query.all()]) | ||
|
||
def validate_agent_name(self, field): | ||
ai = AgentInfo.query.filter_by(agent_name=field.data).first() | ||
if ai: | ||
raise ValidationError, gettext(u'该注册商名已存在') | ||
|
||
class UpdateRemindForm(Form): | ||
agent_name = StringField(u'注册商', validators=[DataRequired()]) | ||
balance_remind = FloatField(u'余额提醒值', validators=[DataRequired(message=u'请正确输入金额数字'),NumberRange(min=0,message=u'金额必须大于0')]) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
# -*- coding: utf-8 -*- | ||
""" Permission form. | ||
Contains add permissions, update permissions, check permissions. | ||
""" | ||
__author__ = "WangChuang" | ||
__email__ = "[email protected]" | ||
__copyright__ = "Copyright 2014, Cnnic" | ||
__version__ = "1.0.0" | ||
__deprecated__ = False | ||
__date__ = "2014-8-27 11:18:20" | ||
|
||
|
||
from app.models.auth_info import AuthInfo | ||
from flask.ext.wtf import Form | ||
from wtforms import StringField,SelectField,RadioField | ||
from wtforms.validators import DataRequired | ||
from wtforms.validators import ValidationError | ||
|
||
|
||
class AuthForm(Form): | ||
""" Permission form, setting roles have permission.""" | ||
auth_name = StringField(u'权限名称',validators=[DataRequired(message=u'请输入权限名')]) | ||
auth_code = StringField(u'权限代码',validators=[DataRequired(message=u'请输入权限代码')]) | ||
auth_url = StringField(u'权限Url') | ||
auth_desc = StringField(u'权限说明') | ||
auth_leave = SelectField(u'菜单等级', choices=[('1', u'一级菜单'), ('2', u'二级菜单')], validators=[DataRequired(message=u'请选择')]) | ||
# parent_auth_id = SelectField(u'上级菜单', coerce=int, choices=[(auth.id, auth.auth_name) for auth in AuthInfo.query.filter(AuthInfo.auth_leave==1).all()]) | ||
nav_display = RadioField(u'是否导航栏显示', choices=[('1', u'是'), ('0', u'否')], validators=[DataRequired(message=u'请选择')]) | ||
|
||
def validate_auth_code(form, field): | ||
""" Verify auth_code value exists, auth_code value is unique. | ||
Args: | ||
form: Fixed form | ||
field: Fixed Field | ||
""" | ||
auth = AuthInfo.query.filter_by(auth_code=field.data).first() | ||
if auth: | ||
raise ValidationError(u'权限代码已存在,请更换。') | ||
|
||
|
||
class AuthUpdateForm(Form): | ||
""" Permission form, setting roles have permission.""" | ||
auth_name = StringField(u'权限名称',validators=[DataRequired(message=u'请输入权限名')]) | ||
auth_url = StringField(u'权限Url') | ||
auth_desc = StringField(u'权限说明') |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
# -*- coding: utf-8 -*- | ||
""" Role form, including add role, change role.""" | ||
__author__ = "WangChuang" | ||
__email__ = "[email protected]" | ||
__copyright__ = "Copyright 2014, Cnnic" | ||
__version__ = "1.0.0" | ||
__deprecated__ = False | ||
__date__ = "2014-8-27 11:18:20" | ||
|
||
|
||
from app.models.role_info import RoleInfo | ||
from flask.ext.wtf import Form | ||
from wtforms import StringField | ||
from wtforms.validators import DataRequired | ||
from wtforms.validators import ValidationError | ||
|
||
class RoleForm(Form): | ||
""" Role form. Add Roles and modify the role to use.""" | ||
role_name = StringField(u'角色名称', validators = [DataRequired(message=u'请输入角色名')]) | ||
role_code = StringField(u'角色代码', validators = [DataRequired(message=u'请输入角色代码')]) | ||
role_desc = StringField(u'角色说明') | ||
|
||
def validate_role_code(form, field): | ||
""" Verify role_code value exists, role_code value is unique. | ||
Args: | ||
form: Fixed form | ||
field: Fixed Field | ||
""" | ||
role = RoleInfo.query.filter_by(role_code=field.data).first() | ||
if role: | ||
raise ValidationError(u'角色代码已存在,请更换角色代码') | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
# -*- coding: utf-8 -*- | ||
""" Role permissions map form.""" | ||
__author__ = "WangChuang" | ||
__email__ = "[email protected]" | ||
__copyright__ = "Copyright 2014, Cnnic" | ||
__version__ = "1.0.0" | ||
__deprecated__ = False | ||
__date__ = "2014-8-27 11:18:20" | ||
|
||
|
||
from app.models.auth_info import AuthInfo | ||
from app.models.role_auth_info import RoleAuthInfo | ||
from flask.ext.wtf import Form | ||
from flask.ext.login import current_user | ||
from wtforms import SelectMultipleField | ||
from wtforms import IntegerField | ||
from wtforms.validators import DataRequired | ||
from wtforms.validators import ValidationError | ||
from wtforms.widgets import ListWidget | ||
from wtforms.widgets import CheckboxInput | ||
|
||
|
||
class MultiCheckboxField(SelectMultipleField): | ||
""" A multiple-select, except displays a list of checkboxes. | ||
Iterating the field will produce subfields, allowing custom rendering of | ||
the enclosed checkbox fields. | ||
""" | ||
widget = ListWidget(prefix_label=False) | ||
option_widget = CheckboxInput() | ||
|
||
|
||
class RoleAuthForm(Form): | ||
""" Modify role permissions to use.""" | ||
# auth_list = MultiCheckboxField(u'选择权限', choices=[(str(auth.id), auth.auth_name) for auth in AuthInfo.query.filter_by().all()]) | ||
pass |