Exemplo n.º 1
0
Arquivo: tests.py Projeto: pgwthf/TSB
    def test_ParamFormField(self):
        test_dict = {'rule': 'test', 'nd': 5, 'par_type': 'exit'}
        params = params_exit.exit_test(**test_dict)
        parameters = params.parameters

        from django import forms
        class ParamTestForm(forms.Form):
            chars = forms.CharField()
            params = ParamFormField(par_type='exit', parameters=parameters)

        # empty form
        ptf = ParamTestForm()
        self.assertFalse(ptf.is_bound)
        self.assertFalse(ptf.is_valid())
        self.assertFalse(ptf.errors)
        self.assertIn('value="20"', str(ptf['params']))
        self.assertIn('value="test"', str(ptf['params']))
        self.assertNotIn('value="exit"', str(ptf['params']))

        # bound_form
        ptf2 = ParamTestForm({'params_0': 'test', 'params_1': 5, 'chars': 'Hello'})
        self.assertIsInstance(params, _Param)
        self.assertTrue(ptf2.is_bound)
        self.assertTrue(ptf2.is_valid())
        self.assertFalse(ptf2.errors)
        self.assertIsInstance(ptf2.cleaned_data['params'], _Param)
        self.assertEqual(str2dict(unicode(ptf2.cleaned_data['params'])), str2dict(unicode(params)))
Exemplo n.º 2
0
Arquivo: models.py Projeto: pgwthf/TSB
 def make_system(self, parameters):
     '''
     Sets all parameters with variable ranges to fixed values. This turns
     a MetaSystem into a system.
     '''
     self.build_structure()
     self._set_variable_parameters(str2dict(parameters))
     self._traverse_structure('initialise', pool=self.pool)
Exemplo n.º 3
0
Arquivo: tests.py Projeto: pgwthf/TSB
    def test_custom_field(self):
        test_dict = {'rule': 'test', 'nd': 5, 'par_type': 'exit'}
        params = params_exit.exit_test(**test_dict)
        pm = ParamModel.objects.create(params=params)

        self.assertEqual(pm._meta.get_field('params').verbose_name, 'parameters')
        self.assertEqual(pm.params._nd, 5)
        self.assertEqual(pm.params.rule, 'test')
        self.assertEqual(pm.params.par_type, 'exit')

        pm1 = ParamModel.objects.get(pk=pm.pk)
        self.assertIsInstance(pm1.params, _Param)
        self.assertEqual(str2dict(unicode(pm1.params)), {'rule': 'test', 'nd': 5})

        test_dict2 = {'rule': 'test', 'nd': 8, 'par_type': 'exit'}
        params2 = params_exit.exit_test(**test_dict2)
        self.assertQuerysetEqual(ParamModel.objects.filter(
                params__in=[params, params2]), [{'rule': 'test', 'nd': 5}],
                lambda qs: str2dict(unicode(qs.params)))
        self.assertRaises(TypeError, lambda: ParamModel.objects.filter(
                                                        params__lt=params))

        stream = serializers.serialize("json", ParamModel.objects.all())
        self.assertEqual(stream, '[{"pk": %d, "model": "metasystem.parammodel", "fields": {"params": "ccollections\\nOrderedDict\\np1\\n((lp2\\n(lp3\\nS\'rule\'\\np4\\naS\'test\'\\np5\\naa(lp6\\nS\'nd\'\\np7\\naI5\\naatRp8\\n."}}]' % pm1.pk)

        obj = list(serializers.deserialize("json", stream))[0]
        self.assertEqual(obj.object, pm)

        pm.delete()

        test_dict = {'rule': 'test', 'nd': 5, 'par_type': 'exit'}
        params = params_exit.exit_test(**test_dict)
        pm1 = ParamModel.objects.create(params=params)
        test_dict = {'rule': 'test', 'nd': 8, 'par_type': 'exit'}
        params = params_exit.exit_test(**test_dict)
        pm2 = ParamModel.objects.create(params=params)

        self.assertQuerysetEqual(
            ParamModel.objects.all(), [
                {'rule': 'test', 'nd': 5},
                {'rule': 'test', 'nd': 8},
            ],
            lambda qs: str2dict(unicode(qs.params))
        )
Exemplo n.º 4
0
Arquivo: models.py Projeto: pgwthf/TSB
 def get_params(self, method_from=None):
     '''
     Returns a dict with all parameters. If method_from and _to are 
     specified, the method id in the unique parameter name will be translated.
     '''
     param_dict = {}
     for key, value in str2dict(self.params).items():
         key1, unused, key2 = key.partition(' {}'.format(method_from.id))
         param_dict['{} {}'.format(key1, key2)] = value
     return param_dict
Exemplo n.º 5
0
Arquivo: tests.py Projeto: pgwthf/TSB
    def test_ParamFormField_MODEL(self):
        test_dict = {'rule': 'test', 'nd': 5, 'par_type': 'exit'}
        params = params_exit.exit_test(**test_dict)
        pm = ParamModel.objects.create(params=params)
        parameters = params.parameters
        from django import forms
        class ParamTestForm(forms.ModelForm):
            params = ParamFormField(par_type='exit', parameters=parameters)
            class Meta:
                model = ParamModel

        # create an empty form
        ptf = ParamTestForm()
        self.assertFalse(ptf.is_bound)
        self.assertFalse(ptf.is_valid())
        self.assertFalse(ptf.errors)
        self.assertIn('value="20"', str(ptf['params']))
        self.assertIn('value="test"', str(ptf['params']))
        self.assertNotIn('value="exit"', str(ptf['params']))

        # create an unbound form
        pm = ParamModel.objects.get(pk=pm.pk)
        ptf2 = ParamTestForm(instance=pm)
        self.assertFalse(ptf2.is_bound)
        self.assertFalse(ptf2.errors)
        self.assertIn('value="5"', str(ptf2['params']))
        self.assertIn('value="test"', str(ptf2['params']))
        self.assertNotIn('value="exit"', str(ptf2['params']))

        # create an bound form
        ptf2 = ParamTestForm({'params_0': 'test', 'params_1': 5, 'chars': 'Hello'})
        self.assertIsInstance(params, _Param)
        self.assertTrue(ptf2.is_bound)
        self.assertTrue(ptf2.is_valid())
        self.assertFalse(ptf2.errors)
        self.assertIsInstance(ptf2.cleaned_data['params'], _Param)
        self.assertEqual(str2dict(unicode(ptf2.cleaned_data['params'])), str2dict(unicode(params)))
Exemplo n.º 6
0
Arquivo: views.py Projeto: pgwthf/TSB
def export_systems_to_csv(request, metasystem_id):
    '''
    View that returns csv files with all trades for this system/result.
    '''
    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment;filename="results_{}.csv"'.\
                                                        format(metasystem_id)
    results = System.objects.filter(metasystem=metasystem_id).values()
    column_list = [k for k in OUTPUT_FORMATS]
    column_list.extend(str2dict_keys(results[0]['params']))
    writer = csv.DictWriter(response, column_list, extrasaction='ignore')
    writer.writeheader()
    for result in results:
        result.update(str2dict(result['params']))
        writer.writerow(result)
    return response
Exemplo n.º 7
0
Arquivo: views.py Projeto: pgwthf/TSB
def show_market_type(request):
    '''
    Market conditions page
    '''
    rs = None
    message = ''
    startdate = datetime.date(2010,1,1)
    enddate = datetime.date.today()
    data = None
    if request.method == 'POST':
        dateform = DateForm(request.POST, prefix='chart1')
        if dateform.is_valid():
            startdate = dateform.cleaned_data['startdate']
            enddate = dateform.cleaned_data['enddate']
        settingsform = ChartSettingsForm(request.POST)
        if settingsform.is_valid():
            data = settingsform.cleaned_data
            settings = get_settings(data)
            rs.set('market_conditions_settings', settings)
    else:
        settings = str2dict(rs.get('market_conditions_settings'))
        if settings:
            data = get_initial(settings)
            settingsform = ChartSettingsForm(initial=data)
        else:
            settingsform = ChartSettingsForm()
    dateform = DateForm(initial={'startdate': startdate, 'enddate': enddate}, 
            prefix='chart1')
    if data:
        stock = data['symbol']
        today = datetime.date.today()
#        stock.set_prices(last_year(today), today)
        current = '{} {}'.format(*get_market_condition(stock.price, today, 
                                                                    settings))
        if stock.name[0] == '^':
            symbol = '0' + stock.name[1:]
        else:
            symbol = stock.name
    else:
        symbol = None
        current = None
    return render(request, 'show_market.html',
                {'symbol': symbol,
                 'dateform': dateform,
                 'settingsform': settingsform,
                 'current_condition': current,
                 'message': message})
Exemplo n.º 8
0
Arquivo: fields.py Projeto: pgwthf/TSB
 def to_python(self, value):
     '''
     Converts a database value to a python object.
     '''
     if not value:
         return
     if isinstance(value, _Param):
         return value
     elif isinstance(value, unicode) and value.startswith('{'):
         # This is to work with readable dict strings in admin
         param_dict = str2dict(value)
     else:
         try:
             param_dict = pickle.loads(str(value))
         except:
             raise TypeError('unable to process {}'.format(value))
     param_dict['par_type'] = self.par_type
     classname = '{}_{}'.format(self.par_type, param_dict['rule'])
     return getattr(get_module(self.par_type), classname)(**param_dict)
Exemplo n.º 9
0
 def test_str2dict(self):
     self.assertEqual(su.str2dict("{'a':1, 4:'asdf'}"), {'a':1, 4:'asdf'})
     self.assertIsNone(su.str2dict("{'a':1 4:'asdf'}"))
     self.assertIsNone(su.str2dict('raise SystemExit'))
     self.assertIsNone(su.str2dict('(1,2,3)'))