Ejemplo n.º 1
0
 def validate_unit_system(value: str):
     """
     Validate unit system
     :param value: unit system name
     """
     from geocurrency.units.models import UnitSystem
     if not UnitSystem.is_valid(value):
         raise serializers.ValidationError('Invalid unit system')
     return value
Ejemplo n.º 2
0
 def post(self, request, unit_system, *args, **kwargs):
     """
     Validate a formula with parameters
     :param request: HTTP request
     :param unit_system: Unit system to use for validation
     """
     if request.user and request.user.is_authenticated:
         us = UnitSystem(unit_system,
                         user=request.user,
                         key=request.data.get('key', None))
     else:
         us = UnitSystem(unit_system)
     exp = ExpressionSerializer(data=request.data)
     if exp.is_valid(unit_system=us, dimensions_only=True):
         return Response("Valid expression")
     else:
         return Response(json.dumps(exp.errors),
                         status=status.HTTP_406_NOT_ACCEPTABLE,
                         content_type="application/json")
Ejemplo n.º 3
0
 def load(cls,
          id: str,
          user: User = None,
          key: str = None) -> BaseConverter:
     """
     Load converter from batch
     :param id: ID of the batch
     :param user: Users object
     :param key: User defined category
     """
     try:
         uc = super().load(id)
         uc.system = UnitSystem(system_name=uc.unit_system,
                                user=user,
                                key=key)
         return uc
     except (UnitSystemNotFound, KeyError) as e:
         raise ConverterLoadError from e
Ejemplo n.º 4
0
 def __init__(self,
              unit_system: str,
              user: User = None,
              key: str = '',
              id: str = None):
     """
     Initiate ExpressionCalculator
     :param unit_system: unit system name
     :param user: User
     :param key: key of user
     :param id: ID of the batch
     """
     try:
         super().__init__(id=id)
         self.unit_system = unit_system
         self.user = user
         self.key = key
         self.system = UnitSystem(system_name=unit_system,
                                  user=self.user,
                                  key=self.key)
     except UnitSystemNotFound as e:
         raise ExpressionCalculatorInitError from e
Ejemplo n.º 5
0
 def validate_base_system(value: str):
     from geocurrency.units.models import UnitSystem
     if not UnitSystem.is_valid(value):
         raise serializers.ValidationError('Invalid unit system')
     return value
Ejemplo n.º 6
0
 def setUp(self) -> None:
     """
     Setup environment
     """
     self.calculator = ExpressionCalculator(unit_system='SI')
     self.unit_system = UnitSystem(system_name='SI')
     self.expressions = [{
         'expression':
         "3*{a}+15*{b}",
         'operands': [{
             "name": "a",
             "value": 0.1,
             "unit": "kg"
         }, {
             "name": "b",
             "value": 15,
             "unit": "g"
         }]
     }, {
         'expression':
         "3*{a}+15*{b}+1000*{c}",
         'operands': [
             {
                 "name": "a",
                 "value": 0.1,
                 "unit": "kg"
             },
             {
                 "name": "b",
                 "value": 150,
                 "unit": "g"
             },
             {
                 "name": "c",
                 "value": 250,
                 "unit": "mg"
             },
         ]
     }]
     self.expression_to_unit = [{
         'expression':
         "3*{a}+15*{b}",
         'operands': [{
             "name": "a",
             "value": 0.1,
             "unit": "kg"
         }, {
             "name": "b",
             "value": 15,
             "unit": "g"
         }],
         'out_units':
         'ton'
     }, {
         'expression':
         "3*{a}+15*{b}+1000*{c}",
         'operands': [
             {
                 "name": "a",
                 "value": 0.1,
                 "unit": "kg"
             },
             {
                 "name": "b",
                 "value": 150,
                 "unit": "g"
             },
             {
                 "name": "c",
                 "value": 250,
                 "unit": "mg"
             },
         ],
         'out_units':
         'hundredweight'
     }]
Ejemplo n.º 7
0
 def setUp(self) -> None:
     """
     Setup environment
     """
     self.calculator = ExpressionCalculator(unit_system='SI')
     self.unit_system = UnitSystem(system_name='SI')
     self.expressions = [{
         'expression':
         "3*{a}+15*{b}",
         'operands': [{
             "name": "a",
             "value": 0.1,
             "unit": "kg"
         }, {
             "name": "b",
             "value": 15,
             "unit": "g"
         }]
     }, {
         'expression':
         "3*{a}+15*{b}+1000*{c}",
         'operands': [
             {
                 "name": "a",
                 "value": 0.1,
                 "unit": "kg"
             },
             {
                 "name": "b",
                 "value": 150,
                 "unit": "g"
             },
             {
                 "name": "c",
                 "value": 250,
                 "unit": "mg"
             },
         ]
     }]
     self.expression_to_unit = [{
         'expression':
         "3*{a}+15*{b}",
         'operands': [{
             "name": "a",
             "value": 200,
             "unit": "kg"
         }, {
             "name": "b",
             "value": 150000,
             "unit": "g"
         }],
         'out_units':
         'pound'
     }, {
         'expression':
         "3*{a}+15*{b}+1000*{c}",
         'operands': [
             {
                 "name": "a",
                 "value": 0.1,
                 "unit": "kg"
             },
             {
                 "name": "b",
                 "value": 75,
                 "unit": "g"
             },
             {
                 "name": "c",
                 "value": 125,
                 "unit": "mg"
             },
         ],
         'out_units':
         'milligram'
     }]
     self.trash_expressions = [{
         'expression':
         "3*{a}+15*{b}+",
         'operands': [{
             "name": "a",
             "value": 0.1,
             "unit": "kg"
         }, {
             "name": "b",
             "value": 15,
             "unit": "g"
         }]
     }, {
         'expression':
         "3*{a}+15*{b}+1000*{c}",
         'operands': [
             {
                 "name": "a",
                 "value": 0.1,
                 "unit": "kg"
             },
             {
                 "name": "b",
                 "value": 150,
                 "unit": "g"
             },
             {
                 "name": "c",
                 "value": 250,
                 "unit": "s"
             },
         ]
     }, {
         'expression':
         "3*{a}+15*{b}+1000*{c}",
         'operands': [
             {
                 "name": "a",
                 "value": 0.1,
                 "unit": "kg"
             },
             {
                 "name": "b",
                 "value": 75,
                 "unit": "g"
             },
             {
                 "name": "c",
                 "value": 125,
                 "unit": "mg"
             },
         ],
         'out_units':
         'L'
     }]
Ejemplo n.º 8
0
 def setUp(self):
     """
     Setup test environment
     """
     self.us = UnitSystem(system_name='SI')
Ejemplo n.º 9
0
 def setUp(self):
     """
     Setup unit system
     """
     self.us = UnitSystem(system_name='SI')