def process_params(self,page_name):
        data = dict((key, flask.request.form.getlist(key)[0]) for key in flask.request.form.keys())
        autopark_type = flask.request.form['submit']
        logger.info("autopark_type\n%s" % (autopark_type,))
        # logger.info("data\n%s" % (data,))
        params_dict, comments_dict = ct.get_and_store_params(load_from_dropbox=False)

        for key in params_dict.keys():
            try:
                if key in data.keys():
                    params_dict[key] = float(data[key])
                else:
                    params_dict[key] = float(params_dict[key])
            except Exception as e:
                logger.info("ERROR on params_dict['%s']\n%s" % (key,params_dict[key],))
                logger.info("ERROR: %s" % (e))
                logger.info("type(params_dict[key])\n%s" % (type(params_dict[key])))
                logger.info("type(data[key])\n%s" % (type(data[key])))

        results_dict = egrix_calc.compare(params_dict, autopark_type)
        results_keys = [key for key in results_dict.keys() if key in results_dict]
        results_vals = [results_dict[key] for key in results_keys if key in results_dict]

        res_d = collections.OrderedDict([])
        res_d['workout_expenditure_per_month']=u'Затраты на эксплуатацию в мес, руб'
        res_d['work__cost_by_workout_per_month']=u'Доходы от эксплуатации в мес, руб'
        res_d['workout_profit_per_month']=u'Чистая прибыль в мес, руб'
        res_d['monitoring__additional_profit_per_month']=u'Экономия за счет мониторинга в месяц, руб'
        res_d['car_efficiency']=u'Эффективность ТС'
        res_d['monitoring__setup_cost']=u'Стоимость установки системы, руб'
        res_d['monitoring__recoupment']=u'Срок окупаемости системы, мес'
        res_d['monitoring__dut_additional_profit_per_month']=u'Экономия за счет ДУТ-а в мес, руб'
        res_d['monitoring__monitoring_additional_profit']=u'Экономия за счет контроля перемещений и моточасов в мес, руб'
        res_d['monitoring__pp_additional_profit']=u'Экономия за счет контроля пассажиропотока в мес, руб'
        res_d['flagDut']=u'Отлдка'
        headers = [res_d[key] for key in res_d.keys() if key in results_dict.keys()]
        values = [results_dict[key] for key in res_d.keys() if key in results_dict.keys()]

        full_messages_list = [headers,values]
        return full_messages_list, ''
Exemple #2
0
    def post(self):
        output_list = []

        data = dict((key, flask.request.form.getlist(key)) for key in flask.request.form.keys())
        data_keys = [key for key in data.keys()]
        data_vals = [flask.request.form.getlist(key) for key in  data_keys]
        # flask.flash(data_keys)
        # flask.flash(data_vals)
        logger.info("data_keys\n%s" % (data_keys,))
        logger.info("data_vals\n%s" % (data_vals,))

        params_dict = ct.get_and_store_params(load_from_dropbox=False)
        # params_keys = [key for key in params_dict.keys() if key in params_dict]
        # params_vals = [params_dict[key] for key in  params_keys if key in params_dict]

        if 'firm.cars_quantity' in data.keys():
            if data['firm.cars_quantity'][0] != '':
                params_dict['cars_quantity'] =  int(data['firm.cars_quantity'][0])

        if 'firm.average_run_time' in data.keys():
            if data['firm.average_run_time'][0] != '':
                motorhours_per_day = float(data['firm.average_run_time'][0])
                params_dict['motorhours_per_day'] =  float(data['firm.average_run_time'][0])
                if motorhours_per_day > 24:
                    flask.flash(['Неверно заданы параметры.'])
                    flask.flash(['Введите параметры верно.'])
                    return self.get()

        # необходимо реализовать чтение-вывод всех парамтеров из файла настроек
        # на отдельную "экспертную" вкладку


        # ниже - изменение параметров
        # общих для всех автопарков
        try:
            car_type = [key for key in flask.request.form.keys() if 'type_' in key][0].split('_')[-1]
            if car_type == '':
                car_type = 'arbitary'  #  тип автопарка по умолчанию - неопределенный
        except KeyError:
            car_type = 'arbitary'  #  тип автопарка по умолчанию - неопределенный
        

        if car_type+'.dut' in data.keys():  # теперь нужно так же переделать все регулруемые параметры
        # лучше бы это было автоматизированно т.к. парамтеров много
        #    лучше бы ключи-name-ы в форме назывались так же как параметры в файле настроек,
        # если это возможно
            if data[car_type+'.dut'][0] == 'on':
                params_dict['flagDut'] = 1.
        if 'firm.fridge' in data.keys():
            if data['firm.fridge'][0] == 'on':
                params_dict['flagFrLoss'] = 1.
                if 'equip.temp' in data.keys():
                    if data['equip.temp'][0] == 'on':
                        params_dict['flagThermo'] = 1.
        if 'firm.passengers' in data.keys():
            if data['firm.passengers'][0] == 'on':
                params_dict['flag_passengers'] = 1.
                if 'equip.pp' in data.keys():
                    if data['equip.pp'][0] == 'on':
                        params_dict['flagPP'] = 1.
        if 'equip.pp' in data.keys():
            if data['equip.pp'][0] == 'on':
                params_dict['flagPP'] = 1.
        if 'equip.block_eng' in data.keys():
            if data['equip.block_eng'][0] == 'on':
                params_dict['flag_block_eng'] = 1.
        if 'equip.alarm_btn' in data.keys():
            if data['equip.alarm_btn'][0] == 'on':
                params_dict['flag_alarm_btn'] = 1.


        results_dict = egrix_calc.compare(params_dict)
        results_keys = [key for key in results_dict.keys() if key in results_dict]
        results_vals = [results_dict[key] for key in results_keys if key in results_dict]

        headers = ['','','','','','','']
        values = [0.,0.,0.,0.,0.,0.,0.]
        for key in results_keys:
            if key == 'workout_expenditure_per_month':
                values[0] = "%.1f" % (results_dict['workout_expenditure_per_month'])
                headers[0] = 'Затраты на эксплуатацию в мес, руб'
            if key == 'work__cost_by_workout':
                values[1] = "%.1f" % (results_dict['work__cost_by_workout'])
                headers[1] = 'Доходы от эксплуатации в мес, руб'
            if key == 'workout_profit_per_month':
                values[2] = "%.1f" % (results_dict['workout_profit_per_month'])
                headers[2] = 'Чистая прибыль в мес, руб'
            if key == 'workout_profit_per_month':
                values[3] = "%.1f" % (results_dict['monitoring__additional_profit_per_month'])
                headers[3] = 'Экономия за счет мониторинга в месяц, руб'
            if key == 'car_efficiency':
                values[4] = "%.3f" % (results_dict['car_efficiency'])
                headers[4] = 'Эффективность ТС'
            if key == 'monitoring__setup_cost':
                values[5] = "%.1f" % (results_dict['monitoring__setup_cost'])
                headers[5] = 'Стоимость установки системы, руб'
            if key == 'monitoring__recoupment':
                values[6] = "%.1f" % (results_dict['monitoring__recoupment'])
                headers[6] = 'Срок окупаемости системы, мес'

        # print in russian on jinja2 - use "|safe" option
        # flask.flash(['Русский язык'])

        flask.flash(headers)
        flask.flash(values)
        flask.flash(flask.request.form.keys())
        flask.flash(flask.request.form.values())

        # flask.flash(results_keys)
        # flask.flash(results_vals)

        # return flask.redirect(flask.url_for('index'))
        return self.get()
    par_dict["flagFrLoss"] = 0.0  # портится ли товар без холодильника
    par_dict["flagI"] = 0.0  # есть ли контроль простоев (Idle)
    par_dict["flagPP"] = 0.0  # есть ли контроль пассажиропотока
    results_wo_monitoring = calc(par_dict)

    logger.debug("results_wo_monitoring['workout_profit']\n%s" % (results_wo_monitoring["workout_profit"],))
    logger.debug("results_wo_monitoring['car_efficiency']\n%s" % (results_wo_monitoring["car_efficiency"],))

    srok = results_with_monitoring["srok"]

    monitoring__additional_profit = results_with_monitoring["workout_profit"] - results_wo_monitoring["workout_profit"]
    monitoring__additional_profit_per_month = monitoring__additional_profit / (12 * srok)

    if monitoring__additional_profit != 0.0:
        monitoring__recoupment = (
            results_wo_monitoring["monitoring__cost_by_workout"] / monitoring__additional_profit_per_month
        )
    else:
        monitoring__recoupment = 0.0
    results_with_monitoring["monitoring__recoupment"] = monitoring__recoupment
    results_with_monitoring["monitoring__additional_profit_per_month"] = monitoring__additional_profit_per_month
    # results_with_monitoring[''] =
    return results_with_monitoring


if __name__ == "__main__":
    ct.setup_logging()
    d = ct.get_and_store_params()
    # d = read_params_dict(from_dropbox=True)
    print(d)
Exemple #4
0
# -*- coding: utf-8 -*-
import flask, flask.views
import calc_tools as ct
import params_processor as proc
import logging

logger = logging.getLogger(__name__)

app = flask.Flask(__name__)
app.debug = True
app.secret_key = "bacon"

default_params, params_comments = ct.get_and_store_params(load_from_dropbox=True)

class Main(proc.EgrixCalcView):
    def get(self):
        return flask.render_template('index.html',d = default_params, c = params_comments)

    def post(self):
        logger.info("post request in Main")

        messages_to_flash, html_path = self.process_params('index')
        
        logger.info("html_path\n%s" % (html_path,))
        flask.flash(messages_to_flash[0])
        flask.flash(messages_to_flash[1])

        return flask.redirect(flask.url_for('index'))

class AllParams(proc.EgrixCalcView):
    def get(self):