Esempio n. 1
0
    def get(self, scenario_id=None):
        if not scenario_id:
            scenario_list = Scenario.read_all()
            return Response(scenario_list).to_dict()

        scenario = Scenario.read(scenario_id)
        return Response(scenario).to_dict()
    def tearDown(self):

        for g in glob.glob('test-*'):
            os.remove(g)
        try:
            Scenario.drop_collection()
        except:
            pass
Esempio n. 3
0
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('name', location='json', required=True)
        parser.add_argument('description', location='json')
        data = parser.parse_args()

        scenario = Scenario(data['name'], data['description'])
        scenario.create()
        return Response(scenario, 201).to_dict()
Esempio n. 4
0
    def put(self, scenario_id):
        parser = reqparse.RequestParser()
        parser.add_argument('name', location='json')
        parser.add_argument('description', location='json')
        data = parser.parse_args()
        Functions.validate_params(data)

        data.update({'id': scenario_id})
        scenario = Scenario(data['name'], data['description'], data['id'])
        scenario.update()
        return Response(scenario, 200, 'Successfuly updated').to_dict()
    def setUp(self):

        try:
            Scenario.drop_collection()
        except:
            pass

        self.client = app.test_client()

        # send requests to server that will edit test/data/parameter.nc
        raw_data = '''
            {
                "name": "test-scenario-1",
                "veg_map_by_hru": {
                    "bare_ground": [0, 1, 2, 3, 5, 10, 11],
                    "grasses": [4, 6, 7, 17, 18, 19],
                    "shrubs": [9, 12, 13],
                    "trees": [8, 14, 15, 16],
                    "conifers": []
                }
            }
        '''

        raw_data2 = '''
            {
                "name": "test-scenario-2",
                "veg_map_by_hru": {
                    "bare_ground": [0, 10, 11],
                    "grasses": [2, 3, 5, 7, 17, 18, 19],
                    "shrubs": [9, 12, 13],
                    "trees": [8, 14, 15, 16],
                    "conifers": [4, 6, 1]
                }
            }
        '''

        self.res1 = self.client.post('/api/scenarios', data=raw_data,
                                     headers={
                                        'Content-Type': 'application/json',
                                        'Origin': '*'}
                                     )

        self.res2 = self.client.post('/api/scenarios', data=raw_data2,
                                     headers={
                                         'Content-Type': 'application/json',
                                         'Origin': '*'}
                                     )

        self.r1_scenario = json.loads(json.loads(self.res1.data)['scenario'])
        self.r2_scenario = json.loads(json.loads(self.res2.data)['scenario'])

        self.id1 = self.r1_scenario['id']
        self.id2 = self.r2_scenario['id']
Esempio n. 6
0
def add_scenario():
    checked_title = check_title(request.form['title'])
    if float(request.form['mezz_debt']) > 0:
        is_intr_only = to_boolean(request.form['mezz_interest_only'])
        is_secured = to_boolean(request.form['mezz_secured'])
        mezz_rate = float(request.form['mezz_rate'])
        mezz_amort = float(request.form['mezz_amort'])
    else:
        is_intr_only = to_boolean('no')
        is_secured = to_boolean('no')
        mezz_rate = 1
        mezz_amort = 1
    scenario = Scenario(checked_title,
                        float(request.form['cash_on_cash']),
                        float(request.form['target_ltv']),
                        float(request.form['mezz_debt']),
                        float(request.form['transfer_cost']),
                        float(request.form['transfer_buyer_share']),
                        float(request.form['recordation_cost']),
                        float(request.form['recordation_buyer_share']),
                        float(request.form['finance']),
                        float(request.form['interest']),
                        float(request.form['amort']),
                        mezz_rate,
                        is_intr_only,
                        is_secured,
                        mezz_amort,
                        float(request.form['income_appr']),
                        float(request.form['apprec_depr']),
                        float(request.form['holding_period']),
                        current_user.id)

    form = ScenarioForm(obj=scenario)

    if form.validate():
        c = CalcCapRate(scenario.__dict__)
        result = c.iterate_computation()
        cap_rate = result['cap_rate']
        #print "===cap rate: " + str(cap_rate)
        scenario.cap_rate = cap_rate

        db.session.add(scenario)
        db.session.commit()
        #flash('New scenario was successfully posted', 'alert alert-info')
        return redirect(url_for('show_scenarios') + '#results-column')
    else:
        print "Advanced calc input not validated."
        print form.errors
        return redirect(url_for('show_scenarios'))
Esempio n. 7
0
def seed_scenarios(data):
    for exp in data:
        expansion = Expansion.query.get(exp)
        for scn in data[exp].get("scenarios"):
            scenario = Scenario.query.get(scn) or Scenario()
            scenario.id = scn
            scenario.name = data[exp]["scenarios"][scn].get("name")
            scenario.difficulty = data[exp]["scenarios"][scn].get("difficulty")
            scenario.rules_changes = data[exp]["scenarios"][scn].get(
                "rules-changes")
            scenario.setup_changes = data[exp]["scenarios"][scn].get(
                "setup-changes")
            expansion.scenarios.append(scenario)
            for s in data[exp]["scenarios"][scn].get("spirit-handicaps"):
                spirit = Spirit.query.get(s)
                spirit_handicap = (SpiritScenarioHandicap.query.filter_by(
                    spirit_id=s).filter_by(scenario_id=scn).first()
                                   or SpiritScenarioHandicap())
                spirit_handicap.spirit = spirit
                spirit_handicap.scenario = scenario
                spirit_handicap.handicap = data[exp]["scenarios"][scn][
                    "spirit-handicaps"][s]
                spirit.scenario_handicaps.append(spirit_handicap)
            for a in data[exp]["scenarios"][scn].get("adversary-handicaps"):
                adversary = Adversary.query.get(a)
                adversary_handicap = (
                    ScenarioAdversaryHandicap.query.filter_by(
                        adversary_id=a).filter_by(scenario_id=scn).first()
                    or ScenarioAdversaryHandicap())
                adversary_handicap.scenario = scenario
                adversary_handicap.adversary = adversary
                adversary_handicap.handicap = data[exp]["scenarios"][scn][
                    "adversary-handicaps"][a]
                scenario.adversary_handicaps.append(adversary_handicap)
            db.session.add(scenario)
Esempio n. 8
0
def scenario_add(name, desc, creation_date, update_date, last_run):
    now = datetime.datetime.now()
    creation_date = now
    scenario = Scenario(name=name,
                        description=desc,
                        creation_date=creation_date)
    db.session.add(scenario)
    db.session.commit()
Esempio n. 9
0
def test_DB():

    player = Player()
    player.login = '******'
    scenario = Scenario()
    scenario.name = 'scenario 1'
    scenario.leadtime = 10
    scenario.duration = 20
    gameboard = GameBoard()
    gameboard.period = 1
#    T = TableDict(10)
#    T.set_cell('order', 5, 1000)
#    T.set_cell('forecast', 8, 10)

    gameboard.data = TableDict(10)
    gameboard.data.set_cell('order', 5, 1000)
    gameboard.data.set_cell('forecast', 8, 10)

    scenario_counter = ScenarioCounter()

    player.gameboards.append(gameboard)
    player.played_scenario.append(scenario)
    player.scenario_counters.append(scenario_counter)
    scenario.gameboards.append(gameboard)
    scenario.counters.append(scenario_counter)

    db.session.add(player)
    db.session.add(scenario)
    db.session.add(gameboard)
    db.session.add(scenario_counter)

    db.session.commit()

    pl = db.session.query(Player).first()
    assert_equal('Pippo', pl.login)
    assert_equal('scenario 1', pl.played_scenario[0].name)
    d = pl.gameboards.filter(GameBoard.scenario_id==scenario.id).first()

    assert_in('<table', d.data.get_HTML())
    assert_equal(d.data.get_cell('order', 5), 1000)
    assert_equal(d.data.get_cell('order', 8), 0)
    assert_equal(d.data.get_cell('forecast', 8), 10)
    assert_equal(d.data.get_cell('forecast', 1), 0)
    assert_equal(d.data.get_cell('forecast', 15), None)
Esempio n. 10
0
def scenario_submit():
    if request.method == 'POST':
        user_id = current_user.get_id()
        new_id =str(uuid.uuid4())
        new_scenario = Scenario(id=new_id)

        db.session.add(new_scenario)
        db.session.commit()

    return render_template('new-scenario.html', scenario_id=new_scenario.id)
Esempio n. 11
0
def basic_calc():
    scenario = Scenario("basic",  # title
                        float(request.form['cash_on_cash']),
                        float(request.form['target_ltv']),
                        0,  # mezz_debt
                        0,  # transfer_cost
                        50,  # transfer_buyer_share
                        0,  # recordation_cost
                        50,  # recordation_buyer_share
                        0,  # finance
                        float(request.form['interest']),
                        float(request.form['amort']),
                        8,  # mezz_rate
                        False,  # mezz_interest_only
                        False,  # mezz_secured
                        30,  # mezz_amort
                        0,  # income_appr
                        0,  # apprec_depr
                        5)  # holding_period

    form = ScenarioForm(obj=scenario)
    form.title.data = "basic"  # For some reason, not picking this up from scenario

    if form.validate():
        c = CalcCapRate(scenario.__dict__)
        result = c.iterate_computation()
        # Convert to percentages for output
        result.update((i, j*100) for i, j in result.items())
        cap_rate = result['cap_rate']
        scenario.cap_rate = cap_rate
        return render_template('basic.html',
                               form=form,
                               scenario=scenario,
                               result=result)
    else:
        print "Not Validated."
        print form.errors
        return redirect(url_for('basic'))
Esempio n. 12
0
def test_serialization():
    content = \
"""
[products]
P001 Banana 1kg
P002 Orange 2kg
P004 Lemon 4kg

[services]
Shipping

[dates]
"""
    scenario = Scenario(id="ID001",
                        title="Simple Scenario",
                        description="Simple Description",
                        content=content)

    dict_data = scenario.to_dict()

    assert dict_data["id"] == "ID001"
    assert dict_data["title"] == "Simple Scenario"
    assert dict_data["description"] == "Simple Description"
Esempio n. 13
0
def test_serialization():
    content = \
"""
[products]
P001 Banana 1kg
P002 Lemon 2kg
P003 Orange 5kg

[services]
S001 Shipping

[dates]
order = 2017-01-01T00:00:00Z
"""
    scenario = Scenario(id="ID001",
                        title="Simple Scenario",
                        description="Simple Description",
                        content=content)
    
    dict_data = scenario.to_dict()
    
    assert dict_data["id"] == "ID001"
    assert dict_data["title"] == "Simple Scenario"
    assert dict_data["description"] == "Simple Description"
Esempio n. 14
0
def test_instantiation():
    content = \
"""
[products]
P001 Banana 1kg
P002 Orange 2kg
P004 Lemon 4kg

[services]
Shipping

[dates]
"""
    scenario = Scenario(id="ID001",
                        title="Simple Scenario",
                        description="Simple Description",
                        content=content)

    assert scenario.id == "ID001"
    assert scenario.title == "Simple Scenario"
    assert scenario.description == "Simple Description"
Esempio n. 15
0
def test_instantiation():
    content = \
"""
[products]
P001 Banana 1kg
P002 Lemon 2kg
P003 Orange 5kg

[services]
S001 Shipping

[dates]
order = 2017-01-01T00:00:00Z
"""
    scenario = Scenario(id="ID001",
                        title="Simple Scenario",
                        description="Simple Description",
                        content=content)
    
    assert scenario.id == "ID001"
    assert scenario.title == "Simple Scenario"
    assert scenario.description == "Simple Description"
    assert scenario.content == content
    def tearDown(self):

        try:
            Scenario.drop_collection()
        except:
            pass
Esempio n. 17
0
 def delete(self, scenario_id):
     result = Scenario.delete(scenario_id)
     return Response(result, 200, 'Successfuly deleted').to_dict()