示例#1
0
def menage(request):
    compo = request.session.get('compo', default=None)
    if compo == None:
        compo = Compo()
    if compo.scenario.nbIndiv() == 0:
        compo = Compo()

    if request.method == 'POST':

        if 'reset' in request.POST:
            if 'compo' in request.session:
                del request.session['compo']
            compo = Compo()
            formset = compo.gen_formset()
            request.session['compo'] = compo

        else:
            ScenarioFormSet = formset_factory(IndividualForm, formset = BaseScenarioFormSet)
            formset = ScenarioFormSet(request.POST)
            if formset.is_valid():
                compo.scenario = formset.get_scenario()
        
                if 'add' in request.POST:
                    compo.addPerson()
                    
                elif 'remove' in request.POST:
                    compo.scenario.rmvIndiv(compo.scenario.nbIndiv()-1)

                elif 'validate' in request.POST:
                    print compo.scenario
                
                formset = compo.gen_formset()
                request.session['compo'] = compo
                
                if 'submit' in request.POST:
                    compo.scenario.genNbEnf()
                    simu = Simu(compo.scenario)
                    simu.build()                    
#                    for child in simu.data_courant.children:
#                        for child2 in child.children:
#                            print child2.code
#                            print child2._vals
#    
                    request.session['data'] = simu.data_courant
                    return render(request, 'mahdi/output.html')
            else:
                print 'fromset is not vali in menage' 
            
    else:
        
        formset = compo.gen_formset()
        request.session['compo'] = compo

    units = {'foy': range(1,len(compo.scenario.declar)+1),
             'fam': range(1,len(compo.scenario.famille)+1),
             'ind': range(1,compo.scenario.nbIndiv()+1)}
    
    c = {'formset': formset, 'units' : units}
    c.update(csrf(request))
    return render(request, 'mahdi/menage.html', c)
示例#2
0
def graphBR(request):
    #data = request.session['data']
    
    scenario = Scenario()
    nmen = 11
    simu = Simu(scenario=scenario, nmen = nmen)
    simu.build()
    data = simu.data_courant

    
    if True:
#    if self.mode == 'bareme':
        data['salsuperbrut'].setHidden()
        data['salbrut'].setHidden()
        data['chobrut'].setHidden()
        data['rstbrut'].setHidden()



    codes  = []
    data.setLeavesVisible()
    
    
    def set_visible_level(node, level):
        if level == 0:
            node.visible = True
        else: 
            node.visible = False
        for child in node.children:
            set_visible_level(child, level-1)
    
    set_visible_level(data,5)
    
    
    Barem.objects.all().delete()
    def create_BaremForm(node):
        '''
        Creates waterfall node Forms    
        '''

        for child in node.children:
            create_BaremForm(child)
        index = 0
        if (node.code != 'root') and node.visible:
            for val in node.vals:
                index += 1
                # r,g,b = node.color
                form = BaremForm(data = {'code': node.code, 'val': val, 'desc': node.desc, 'x': index })
                form.save()            
            codes.append(node.code)
        

    create_BaremForm(data)
    print codes

        
#    openfisca_data = DataPool(
#       series=
#        [{'options': {
#            'source': Barem.objects.all(),
#            'categories': ['x']},
#          'terms': [
#            'val',
#            'code',
#            'desc','x']}
#         ])
    



#    cht = Chart(
#        datasource = openfisca_data,
#        series_options = 
#            [{'options':{
#                         'type': 'area',
#                         'stacking': 'normal',
#                         },
#                         
#              'terms':{
#                       'x': [ {'val': {},
#                               }
#                                ]
#                       }}],
#        chart_options =
#          {'title' : {
#               'text': 'Openfisca'},
#           'xAxis' : {'categories': codes}
#           }
#            )
    
    def sortx(x):
        y = x[0][0]
        print y
        return int(round(float(y)*1e6))
    

    openfisca_data = PivotDataPool(
       series=
        [{'options': {
            'source': Barem.objects.all(),
            'categories': ['x'],
            'legend_by': 'code'},
          'terms': { 'val': Sum('val')}, 
            }
         ],
        sortf_mapf_mts = (sortx , lambda x: x,True))
    #Step 2: Create the Chart object

    print openfisca_data.series

    cht = PivotChart(
        datasource = openfisca_data,
        series_options = 
            [{'options':{
                         'type': 'area',
                         'stacking': 'normal',
                         },
                         
              'terms':[{'val': {}},
                        ]
                       }],
        chart_options =
          {'title' : {
               'text': 'Openfisca'},
           'xAxis' : {'categories': codes}
           }
            )



    
    #Step 3: Send the chart object to the template.
    return render_to_response('mahdi/chartit_graph.html', {'chart': cht})
示例#3
0
def graph(request):
    
    ## TODO use low as in http://stackoverflow.com/questions/7969300/highcharts-column-chart
    ## http://fiddle.jshell.net/delfino4747/M8npu/10/
    #data = request.session['data']
    
    scenario = Scenario()
    simu = Simu(scenario=scenario, nmen=1)
    simu.build()
    data = simu.data_courant
    codes  = []    
    
    data.setLeavesVisible()
    
    Node.objects.all().delete()
    
    

    def create_waterfall_NodeForm(node, prv):
        '''
        Creates waterfall node Forms    
        '''
        if node.code == 'nivvie':
            return
        prev = prv + 0
        val = node.vals[0]
        bot = prev
        for child in node.children:
            create_waterfall_NodeForm(child, prev)
            prev += child.vals[0]
        if (val != 0)  and (node.visible) and (node.code != 'root'):
            # r,g,b = node.color
            print node.code
            form = NodeForm(data = {'code': node.code, 'val': val, 'desc': node.desc, 'low': bot })
            form.save()
            codes.append(node.code)
        
    prv = 0
    create_waterfall_NodeForm(data, prv)
    print codes
    
    openfisca_data = DataPool(
       series=
        [{'options': {
            'source': Node.objects.all()},
            'terms': [  'low', 'val', 'code','desc' ]}
         ])
    
    #Step 2: Create the Chart object


    cht = Chart(
        datasource = openfisca_data,
        series_options = 
            [{'options':{
                         'type': 'column',
                          'allowPointSelect': 'true'                         
                         },
              'terms': { 'code' : ['low' , 'val'] }
#                                   {}} , 
#                                {'start': {'showInLegend': False,
#                                           'color' : 'transparent',
#                                           'shadow' : False,
#                                           'borderColor' : 'transparent',
#                                           'borderWidth' : 0,
#                                           #'visible' : False,
#                                           }}
                       }],
        chart_options =
          {'title' : {
               'text': 'Openfisca'},
           }
            )
    
    #Step 3: Send the chart object to the template.
    return render_to_response('mahdi/chartit_graph.html', {'chart': cht})
示例#4
0
def graphBR(request):
    #data = request.session['data']

    scenario = Scenario()
    nmen = 11
    simu = Simu(scenario=scenario, nmen=nmen)
    simu.build()
    data = simu.data_courant

    if True:
        #    if self.mode == 'bareme':
        data['salsuperbrut'].setHidden()
        data['salbrut'].setHidden()
        data['chobrut'].setHidden()
        data['rstbrut'].setHidden()

    codes = []
    data.setLeavesVisible()

    def set_visible_level(node, level):
        if level == 0:
            node.visible = True
        else:
            node.visible = False
        for child in node.children:
            set_visible_level(child, level - 1)

    set_visible_level(data, 5)

    Barem.objects.all().delete()

    def create_BaremForm(node):
        '''
        Creates waterfall node Forms    
        '''

        for child in node.children:
            create_BaremForm(child)
        index = 0
        if (node.code != 'root') and node.visible:
            for val in node.vals:
                index += 1
                # r,g,b = node.color
                form = BaremForm(data={
                    'code': node.code,
                    'val': val,
                    'desc': node.desc,
                    'x': index
                })
                form.save()
            codes.append(node.code)

    create_BaremForm(data)
    print codes

    #    openfisca_data = DataPool(
    #       series=
    #        [{'options': {
    #            'source': Barem.objects.all(),
    #            'categories': ['x']},
    #          'terms': [
    #            'val',
    #            'code',
    #            'desc','x']}
    #         ])

    #    cht = Chart(
    #        datasource = openfisca_data,
    #        series_options =
    #            [{'options':{
    #                         'type': 'area',
    #                         'stacking': 'normal',
    #                         },
    #
    #              'terms':{
    #                       'x': [ {'val': {},
    #                               }
    #                                ]
    #                       }}],
    #        chart_options =
    #          {'title' : {
    #               'text': 'Openfisca'},
    #           'xAxis' : {'categories': codes}
    #           }
    #            )

    def sortx(x):
        y = x[0][0]
        print y
        return int(round(float(y) * 1e6))

    openfisca_data = PivotDataPool(series=[{
        'options': {
            'source': Barem.objects.all(),
            'categories': ['x'],
            'legend_by': 'code'
        },
        'terms': {
            'val': Sum('val')
        },
    }],
                                   sortf_mapf_mts=(sortx, lambda x: x, True))
    #Step 2: Create the Chart object

    print openfisca_data.series

    cht = PivotChart(datasource=openfisca_data,
                     series_options=[{
                         'options': {
                             'type': 'area',
                             'stacking': 'normal',
                         },
                         'terms': [
                             {
                                 'val': {}
                             },
                         ]
                     }],
                     chart_options={
                         'title': {
                             'text': 'Openfisca'
                         },
                         'xAxis': {
                             'categories': codes
                         }
                     })

    #Step 3: Send the chart object to the template.
    return render_to_response('mahdi/chartit_graph.html', {'chart': cht})
示例#5
0
def graph(request):

    ## TODO use low as in http://stackoverflow.com/questions/7969300/highcharts-column-chart
    ## http://fiddle.jshell.net/delfino4747/M8npu/10/
    #data = request.session['data']

    scenario = Scenario()
    simu = Simu(scenario=scenario, nmen=1)
    simu.build()
    data = simu.data_courant
    codes = []

    data.setLeavesVisible()

    Node.objects.all().delete()

    def create_waterfall_NodeForm(node, prv):
        '''
        Creates waterfall node Forms    
        '''
        if node.code == 'nivvie':
            return
        prev = prv + 0
        val = node.vals[0]
        bot = prev
        for child in node.children:
            create_waterfall_NodeForm(child, prev)
            prev += child.vals[0]
        if (val != 0) and (node.visible) and (node.code != 'root'):
            # r,g,b = node.color
            print node.code
            form = NodeForm(data={
                'code': node.code,
                'val': val,
                'desc': node.desc,
                'low': bot
            })
            form.save()
            codes.append(node.code)

    prv = 0
    create_waterfall_NodeForm(data, prv)
    print codes

    openfisca_data = DataPool(series=[{
        'options': {
            'source': Node.objects.all()
        },
        'terms': ['low', 'val', 'code', 'desc']
    }])

    #Step 2: Create the Chart object

    cht = Chart(
        datasource=openfisca_data,
        series_options=[{
            'options': {
                'type': 'column',
                'allowPointSelect': 'true'
            },
            'terms': {
                'code': ['low', 'val']
            }
            #                                   {}} ,
            #                                {'start': {'showInLegend': False,
            #                                           'color' : 'transparent',
            #                                           'shadow' : False,
            #                                           'borderColor' : 'transparent',
            #                                           'borderWidth' : 0,
            #                                           #'visible' : False,
            #                                           }}
        }],
        chart_options={
            'title': {
                'text': 'Openfisca'
            },
        })

    #Step 3: Send the chart object to the template.
    return render_to_response('mahdi/chartit_graph.html', {'chart': cht})
示例#6
0
def menage(request):
    compo = request.session.get('compo', default=None)
    if compo == None:
        compo = Compo()
    if compo.scenario.nbIndiv() == 0:
        compo = Compo()

    if request.method == 'POST':

        if 'reset' in request.POST:
            if 'compo' in request.session:
                del request.session['compo']
            compo = Compo()
            formset = compo.gen_formset()
            request.session['compo'] = compo

        else:
            ScenarioFormSet = formset_factory(IndividualForm,
                                              formset=BaseScenarioFormSet)
            formset = ScenarioFormSet(request.POST)
            if formset.is_valid():
                compo.scenario = formset.get_scenario()

                if 'add' in request.POST:
                    compo.addPerson()

                elif 'remove' in request.POST:
                    compo.scenario.rmvIndiv(compo.scenario.nbIndiv() - 1)

                elif 'validate' in request.POST:
                    print compo.scenario

                formset = compo.gen_formset()
                request.session['compo'] = compo

                if 'submit' in request.POST:
                    compo.scenario.genNbEnf()
                    simu = Simu(compo.scenario)
                    simu.build()
                    #                    for child in simu.data_courant.children:
                    #                        for child2 in child.children:
                    #                            print child2.code
                    #                            print child2._vals
                    #
                    request.session['data'] = simu.data_courant
                    return render(request, 'mahdi/output.html')
            else:
                print 'fromset is not vali in menage'

    else:

        formset = compo.gen_formset()
        request.session['compo'] = compo

    units = {
        'foy': range(1,
                     len(compo.scenario.declar) + 1),
        'fam': range(1,
                     len(compo.scenario.famille) + 1),
        'ind': range(1,
                     compo.scenario.nbIndiv() + 1)
    }

    c = {'formset': formset, 'units': units}
    c.update(csrf(request))
    return render(request, 'mahdi/menage.html', c)