def register_account():
    # auth process
    if current_user.is_authenticated is True:
        account = get_account_info_by_account_id(current_user.account_id)
    else:
        return redirect(url_for('auth.login_view'))
    if account['account_status'] != 'admin':
        return redirect(url_for('auth.home_view'))
    # process end

    # main function process below
    form = RegisterForm()
    # POST method
    if form.validate_on_submit():
        # captcha validate ( get from session )
        if str(form.captcha.data).upper() != session.get('captcha_code'):
            flash('CAPTCHA is not Correct!', 'warning')
            return redirect(url_for('auth.register_view'))
        if form.password.data != form.re_password.data:
            flash('Passwords should be the same.', 'warning')
            return redirect(url_for('auth.register_view'))
        # account info
        account_info = dict()
        account_info['account_email'] = form.email.data
        account_info['account_nickname'] = form.nickname.data
        account_info['password'] = form.re_password.data
        account_info['account_status'] = form.account_status.data
        register_url = 'http://' + Config.ACCOUNT_SERVICE_URL + '/api/account/account-creating'
        result = requests.post(register_url, data=account_info)
        if result.status_code == 200:
            flash('新用户创建成功!', 'success')
            return redirect(url_for('auth.register_view'))
        else:
            flash('该邮箱已被注册。', 'danger')
            return redirect(url_for('auth.register_view'))
def data_submit_post():
    # auth process
    if current_user.is_authenticated is True:
        account = get_account_info_by_account_id(current_user.account_id)
    else:
        return redirect(url_for('auth.login_view'))
    # process end
    form = GasDataRecordForm()
    post_doc_url = 'http://' + Config.DB_OPS_URL + '/api/gas/document'
    doc_dict = dict(request.form)
    doc_dict['boiler_room'] = str(form.boiler_room_and_no.data).split('/')[0]
    doc_dict['boiler_no'] = str(form.boiler_room_and_no.data).split('/')[1]
    doc_dict['employee_no'] = current_user.account_id
    doc_dict['employee_name'] = account['account_nickname']
    doc_dict['datetime'] = get_current_datetime()
    doc_dict['date'] = get_current_date()
    doc_dict['time'] = get_current_time()
    if form.validate_on_submit():
        result = requests.post(post_doc_url, data=doc_dict)
        if result.status_code == 200:
            flash('数据提交成功', 'success')
            return redirect(url_for('gas.gas_data_submit_view'))
        else:
            flash('发生了错误, 数据未成功提交', 'danger')
            return redirect(url_for('gas.gas_data_submit_view'))
def register_view():
    # auth process
    if current_user.is_authenticated is True:
        account = get_account_info_by_account_id(current_user.account_id)
    else:
        return redirect(url_for('auth.login_view'))
    if account['account_status'] != 'admin':
        return redirect(url_for('auth.home_view'))
    # process end

    # main function process below
    form = RegisterForm()
    captcha = dict()
    captcha_url = 'http://' + Config.CAPTCHA_SERVICE_URL + '/api/hash-match/captcha'
    result = requests.get(captcha_url)
    if result.status_code == 200:
        captcha['captcha_code'] = get_api_info(result)[0]['CAPTCHA']
        captcha['hash_code'] = get_api_info(result)[0]['Hash-Code']
        # store the captcha code into session
        session['captcha_code'] = captcha['captcha_code']
        captcha['captcha_url'] = 'http://' + Config.CAPTCHA_SERVICE_URL +\
                                 '/api/hash-match/captcha/' + captcha['hash_code']
    else:
        captcha['captcha_code'] = '0000'
        captcha['captcha_url'] = 'error'
    return render_template('auth/register/register.html', form=form, captcha=captcha, account=account)
def data_download_view():
    # auth process
    if current_user.is_authenticated is True:
        account = get_account_info_by_account_id(current_user.account_id)
    else:
        return redirect(url_for('auth.login_view'))
    # process end
    form = SendCsvFileForm()
    return render_template('dataDownLoad.html',
                           form=form,
                           title='数据下载',
                           account=account)
def gas_data_submit_view():
    # auth process
    if current_user.is_authenticated is True:
        account = get_account_info_by_account_id(current_user.account_id)
    else:
        return redirect(url_for('auth.login_view'))
    # process end
    form = GasDataRecordForm()
    return render_template('gas/gasDataSubmit.html',
                           form=form,
                           title='燃气数据提交',
                           account=account)
def delete_confirm(record_id):
    # auth process
    if current_user.is_authenticated is True:
        account = get_account_info_by_account_id(current_user.account_id)
    else:
        return redirect(url_for('auth.login_view'))
    # process end
    form = DeleteForm()
    # Get record info
    record_url = 'http://' + Config.DB_OPS_URL + \
                 '/api/gas/document/rid/' + str(record_id)
    result = requests.get(record_url)
    # Functional Part
    if form.validate_on_submit():
        if result.status_code == 200:
            user_id = get_api_info(result)[0]['employee_no']

            # check user's authentication by account_id in url whether match current_user.account_id
            # Mention!! Type of current_user.account_id is not string!
            if str(current_user.account_id) != str(user_id):
                # back to detail viewing page
                flash('试图删除不属于自己的数据', 'danger')
                return redirect(
                    url_for('auth.home_view',
                            account_id=current_user.account_id))

            # main function process below
            delete_url = 'http://' + Config.DB_OPS_URL + \
                         '/api/gas/document/' + str(record_id)
            requests.delete(delete_url)
            flash('数据删除成功', 'success')
            return redirect(
                url_for('auth.home_view', account_id=current_user.account_id))
    # View Part
    else:
        if result.status_code == 200:
            user_id = get_api_info(result)[0]['employee_no']

            # check user's authentication by account_id in url whether match current_user.account_id
            # Mention!! Type of current_user.account_id is not string!
            if str(current_user.account_id) != str(user_id):
                # back to detail viewing page
                return redirect(
                    url_for('auth.home_view',
                            account_id=current_user.account_id))

            # main function process below
            competition = get_api_info(result)[0]
            return render_template('recordDelete.html',
                                   form=form,
                                   account=account)
def gas_stats_panel():
    # auth process
    if current_user.is_authenticated is True:
        account = get_account_info_by_account_id(current_user.account_id)
    else:
        return redirect(url_for('auth.login_view'))
    # process end

    form = GasDataStatsForm()
    # functional url
    basic_successive_url = 'http://' + Config.DB_OPS_URL + '/api/gas/calculating/gas-consumption/successive/'
    basic_sum_url = 'http://' + Config.DB_OPS_URL + '/api/gas/calculating/gas-consumption/inexact-date/'

    # post function
    if form.validate_on_submit():
        boiler_room = str(form.boiler_room_and_no.data).split('/')[0]
        boiler_no = str(form.boiler_room_and_no.data).split('/')[1]
        sum_url = basic_sum_url + boiler_room + '/' + boiler_no + '/' +\
                        str(form.start_date.data) + '/' + str(form.end_date.data)
        successive_url = basic_successive_url + boiler_room + '/' + boiler_no + '/' +\
                         str(form.start_date.data) + '/' + str(form.end_date.data)
    # get function
    else:
        today_date = get_current_date()
        last_date = get_last_date()
        form.start_date.data = get_last_date_strftime()
        form.end_date.data = get_current_date_strftime()

        default_boiler_room_and_no = GasInfoClass().get_gas_url_list()[0]
        sum_url = basic_sum_url + default_boiler_room_and_no + '/' + last_date + '/' + today_date
        successive_url = basic_successive_url + default_boiler_room_and_no + '/' + last_date + '/' + today_date
        flash('默认统计"今日与昨日"的燃气消耗量。', 'info')
    # get relative gas data
    # get first with dict type
    consumption_sum_dict = get_api_info_first(requests.get(sum_url))
    # get all with list type
    consumption_successive_list = get_api_info(requests.get(successive_url))
    if consumption_sum_dict['gas_consumption_type'] == '错误' or\
            consumption_sum_dict['gas_consumption_type'] == '日期区间错误':
        flash('无相关数据!', 'danger')
    else:
        flash('数据统计成功!', 'success')
    # render templates
    return render_template(
        'gas/statsPanel.html',
        consumption_sum_dict=consumption_sum_dict,
        account=account,
        consumption_successive_list=consumption_successive_list,
        form=form,
        title='燃气数据统计')
def gas_panel_search():
    # auth process
    if current_user.is_authenticated is True:
        account = get_account_info_by_account_id(current_user.account_id)
    else:
        return redirect(url_for('auth.login_view'))
    # process end
    form = ViewPanelSearchForm()
    basic_doc_url = 'http://' + Config.DB_OPS_URL + '/api/gas/document/boiler-room-and-no/fuzzy/'
    if form.validate_on_submit():
        search_doc_url = basic_doc_url + str(form.boiler_room_and_no.data)
        gas_doc_list = get_api_info(requests.get(search_doc_url))
        flash('数据检索成功!', 'success')
        return render_template('gasPanel.html',
                               documents=gas_doc_list,
                               title='燃气监测',
                               form=form,
                               account=account)
示例#9
0
def competition_inserting_function():
    # auth process
    if current_user.is_authenticated is True:
        account = get_account_info_by_account_id(current_user.account_id)
    else:
        return redirect(url_for('auth.login_view'))
    # process end

    form = CompetitionInsertForm()
    if form.validate_on_submit():
        insert_url = 'http://' + Config.COMPETITION_SERVICE_URL + \
            '/api/competition'
        new_competition = dict()

        new_competition['comp_title'] = form.comp_title.data
        new_competition['comp_subtitle'] = form.comp_subtitle.data
        new_competition['comp_range'] = form.comp_range.data
        new_competition['comp_url'] = form.comp_url.data
        new_competition['prize_currency'] = form.prize_currency.data
        new_competition['prize_amount'] = form.prize_amount.data
        new_competition['deadline'] = form.deadline.data
        new_competition['timezone'] = form.timezone.data
        new_competition['update_time'] = get_current_datetime()
        new_competition['publish_time'] = get_current_datetime()
        new_competition['contributor_id'] = str(current_user.account_id)
        new_competition['contributor_name'] = str(account['account_nickname'])

        new_competition['comp_description'] = form.comp_description.data
        host_list = [{'comp_host_name': form.comp_host_name.data, 'comp_host_url': form.comp_host_url.data}]
        new_competition['comp_host'] = str(host_list)

        comp_scenario_list = str_to_right_type(str(form.comp_scenario.data))
        new_competition['comp_scenario'] = str(comp_scenario_list)
        data_feature = str_to_right_type(str(form.data_feature.data))
        new_competition['data_feature'] = str(data_feature)

        result = requests.post(insert_url, data=new_competition)
        if result.status_code == 200:
            competition = get_api_info(result)[0]
            comp_record_hash = competition['comp_record_hash']
            return redirect(url_for('competition-operator.competition_detail_view', comp_record_hash=comp_record_hash))
        else:
            flash('Something wrong happened! Can not upload competition', 'danger')
            return redirect(url_for('competition-operator.competition_inserting_view'))
def gas_panel_view():
    # auth process
    if current_user.is_authenticated is True:
        account = get_account_info_by_account_id(current_user.account_id)
    else:
        return redirect(url_for('auth.login_view'))
    # process end
    form = ViewPanelSearchForm()
    get_doc_url = 'http://' + Config.DB_OPS_URL + '/api/gas/document/all-documents'
    result = requests.get(get_doc_url)
    if result.status_code == 200:
        document_list = get_api_info(result)
        document_list.reverse()
    else:
        document_list = [{'Error': 'Server Down.'}]
    return render_template('gasPanel.html',
                           documents=document_list,
                           title='燃气监测',
                           form=form,
                           account=account)