Skip to content

Commit 2e68eea

Browse files
committed
Finish 0.3.3
2 parents c9a9261 + 090fbb0 commit 2e68eea

File tree

6 files changed

+39
-1
lines changed

6 files changed

+39
-1
lines changed

business_logic/blockly/build.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,13 @@ def visit_constant(self, node, parent_xml):
6767
NumberConstant: 'math_number',
6868
StringConstant: 'text',
6969
BooleanConstant: 'logic_boolean',
70+
DateConstant: 'business_logic_date',
7071
}
7172
field_name = {
7273
NumberConstant: 'NUM',
7374
StringConstant: 'TEXT',
7475
BooleanConstant: 'BOOL',
76+
DateConstant: 'DATE',
7577
}
7678
content_object = node.content_object
7779
cls = content_object.__class__

business_logic/blockly/parse.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# -*- coding: utf-8 -*-
22
from __future__ import unicode_literals
3-
3+
import datetime
44
from lxml import etree, objectify
55

66
from django.utils.six import StringIO
@@ -213,12 +213,18 @@ def visit_field_text(self, node):
213213
def visit_field_bool(self, node):
214214
return self._visit_field(BooleanConstant, value=node.text.lower() == 'true')
215215

216+
def visit_field_date(self, node):
217+
return self._visit_field(DateConstant, value=datetime.datetime.strptime(node.text, '%Y-%m-%d').date())
218+
216219
def visit_value(self, node):
217220
return self._visit_single_child(node)
218221

219222
def visit_statement(self, node):
220223
return self._visit_single_child(node)
221224

225+
def visit_block_business_logic_date(self, node):
226+
return self._visit_single_child(node)
227+
222228
def visit_block_business_logic_reference(self, node):
223229
data = {
224230
'data': {

tests/blockly/test_build.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,22 @@ def test_block_if_sequence(self):
159159
block = block[0]
160160
self.assertEqual('controls_if', block.get('type'))
161161

162+
class BlocklyXmlDateTest(TestCase):
163+
def test_block_date(self):
164+
today = datetime.date.today()
165+
root = Node.add_root(content_object=DateConstant(value=today))
166+
xml_str = BlocklyXmlBuilder().build(root)
167+
xml = etree.parse(StringIO(xml_str))
168+
169+
block = xml.xpath('/xml/block')
170+
self.assertEqual(1, len(block))
171+
block = block[0]
172+
self.assertEqual('business_logic_date', block.get('type'))
173+
174+
field = block.find('field')
175+
self.assertEqual('DATE', field.get('name'))
176+
self.assertEqual(today.strftime('%Y-%m-%d'), field.text)
177+
162178

163179
class BlocklyXmlBuilderBinaryOperatorTest(TestCase):
164180
def _test_math_binary_operator(self, operator, block_type, operator_field_value):

tests/blockly/test_create.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,16 @@ def test_create_reference_constant(self):
114114
self.assertIsNot(tree1, tree2)
115115
self.assertFalse(self.tree_diff(tree1, tree2))
116116

117+
def test_create_date(self):
118+
today = datetime.date.today()
119+
tree1 = variable_assign_value(value=DateConstant(value=today))
120+
dict1 = self.build_dict(tree1)
121+
122+
tree2 = NodeTreeCreator().create(dict1)
123+
124+
self.assertIsInstance(tree2, Node)
125+
self.assertIsNot(tree1, tree2)
126+
self.assertFalse(self.tree_diff(tree1, tree2))
117127

118128
def test_create_function(self):
119129
function_definition = PythonCodeFunctionDefinition.objects.create(title='xxx')

tests/blockly/test_parse.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ def test_boolean_constant(self):
9393
for value in (True, False):
9494
self._test_constant(BooleanConstant, value)
9595

96+
def test_date_constantant(self):
97+
self._test_constant(DateConstant, datetime.date.today())
98+
9699

97100
class BlocklyXmlParserReferenceConstantTest(BlocklyXmlParserTestCase):
98101
def setUp(self):

tests/common.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# -*- coding: utf-8 -*-
22

33
import unittest
4+
import datetime
45

56
from decimal import Decimal
67
from pprint import pprint

0 commit comments

Comments
 (0)