예제 #1
0
파일: tests.py 프로젝트: microlin/rapidpro
 def get_flow(self, filename, substitutions=None, flow_type=Flow.FLOW):
     flow = Flow.create(self.org,
                        self.admin,
                        name=filename,
                        flow_type=flow_type)
     self.update_flow(flow, filename, substitutions)
     return flow
예제 #2
0
    def create_flow(self):
        start = int(time.time()*1000) % 1000000

        definition = dict(action_sets=[dict(uuid=uuid(start + 1), x=1, y=1, destination=uuid(start + 5),
                                            actions=[dict(type='reply', msg='What is your favorite color?')]),
                                       dict(uuid=uuid(start + 2), x=2, y=2, destination=None,
                                            actions=[dict(type='reply', msg='I love orange too!')]),
                                       dict(uuid=uuid(start + 3), x=3, y=3, destination=None,
                                            actions=[dict(type='reply', msg='Blue is sad. :(')]),
                                       dict(uuid=uuid(start + 4), x=4, y=4, destination=None,
                                            actions=[dict(type='reply', msg='That is a funny color.')])
                                       ],
                          rule_sets=[dict(uuid=uuid(start + 5), x=5, y=5,
                                          label='color',
                                          response_type='C',
                                          rules=[
                                              dict(uuid=uuid(start + 12), destination=uuid(start + 2), test=dict(type='contains', test='orange'), category="Orange"),
                                              dict(uuid=uuid(start + 13), destination=uuid(start + 3), test=dict(type='contains', test='blue'), category="Blue"),
                                              dict(uuid=uuid(start + 14), destination=uuid(start + 4), test=dict(type='true'), category="Other"),
                                              dict(uuid=uuid(start + 15), test=dict(type='true'), category="Nothing")]) # test case with no destination
                                    ],
                          entry=uuid(start + 1))

        flow = Flow.create(self.org, self.admin, "Color Flow")
        flow.update(definition)
        return flow
예제 #3
0
    def create_flow(self):
        start = int(time.time() * 1000) % 1000000

        definition = dict(
            action_sets=[
                dict(uuid=uuid(start + 1),
                     x=1,
                     y=1,
                     destination=uuid(start + 5),
                     actions=[
                         dict(type='reply', msg='What is your favorite color?')
                     ]),
                dict(uuid=uuid(start + 2),
                     x=2,
                     y=2,
                     destination=None,
                     actions=[dict(type='reply', msg='I love orange too!')]),
                dict(uuid=uuid(start + 3),
                     x=3,
                     y=3,
                     destination=None,
                     actions=[dict(type='reply', msg='Blue is sad. :(')]),
                dict(
                    uuid=uuid(start + 4),
                    x=4,
                    y=4,
                    destination=None,
                    actions=[dict(type='reply', msg='That is a funny color.')])
            ],
            rule_sets=[
                dict(uuid=uuid(start + 5),
                     x=5,
                     y=5,
                     label='color',
                     response_type='C',
                     rules=[
                         dict(uuid=uuid(start + 12),
                              destination=uuid(start + 2),
                              test=dict(type='contains', test='orange'),
                              category="Orange"),
                         dict(uuid=uuid(start + 13),
                              destination=uuid(start + 3),
                              test=dict(type='contains', test='blue'),
                              category="Blue"),
                         dict(uuid=uuid(start + 14),
                              destination=uuid(start + 4),
                              test=dict(type='true'),
                              category="Other"),
                         dict(uuid=uuid(start + 15),
                              test=dict(type='true'),
                              category="Nothing")
                     ])  # test case with no destination
            ],
            entry=uuid(start + 1))

        flow = Flow.create(self.org, self.admin, "Color Flow")
        flow.update(definition)
        return flow
예제 #4
0
    def create_flow(self, uuid_start=None, **kwargs):
        if 'org' not in kwargs:
            kwargs['org'] = self.org
        if 'user' not in kwargs:
            kwargs['user'] = self.user
        if 'name' not in kwargs:
            kwargs['name'] = "Color Flow"

        flow = Flow.create(**kwargs)
        flow.update(self.create_flow_definition(uuid_start))
        return Flow.objects.get(pk=flow.pk)
예제 #5
0
    def create_flow(self, uuid_start=None, **kwargs):
        if 'org' not in kwargs:
            kwargs['org'] = self.org
        if 'user' not in kwargs:
            kwargs['user'] = self.user
        if 'name' not in kwargs:
            kwargs['name'] = "Color Flow"

        flow = Flow.create(**kwargs)
        flow.update(self.create_flow_definition(uuid_start))
        return Flow.objects.get(pk=flow.pk)
예제 #6
0
    def setUp(self):

        User.objects.create_user(username="******",
                                 password="******",
                                 email="*****@*****.**")
        user = User.objects.get(username="******")

        weni = Org.objects.create(name="Weni",
                                  timezone="America/Maceio",
                                  created_by=user,
                                  modified_by=user)

        Flow.create(name="Test Temba", user=user, org=weni, is_active=False)
        Flow.create(name="Test flow name", user=user, org=weni)
        Flow.create(name="Test Weni flow name", user=user, org=weni)

        Classifier.objects.create(org=weni,
                                  config="",
                                  created_by=user,
                                  modified_by=user,
                                  is_active=False)
        Classifier.objects.create(org=weni,
                                  config="",
                                  created_by=user,
                                  modified_by=user)
        Classifier.objects.create(org=weni,
                                  config="",
                                  created_by=user,
                                  modified_by=user)

        super().setUp()

        self.stub = grpc_gen.statistic_pb2_grpc.OrgStatisticControllerStub(
            test_grpc.Channel())
예제 #7
0
    def test_icon(self):
        from temba.campaigns.models import Campaign
        from temba.triggers.models import Trigger
        from temba.flows.models import Flow
        from temba.utils.templatetags.temba import icon

        campaign = Campaign.create(self.org, self.admin, 'Test Campaign', self.create_group('Test group', []))
        flow = Flow.create(self.org, self.admin, 'Test Flow')
        trigger = Trigger.objects.create(org=self.org, keyword='trigger', flow=flow, created_by=self.admin, modified_by=self.admin)

        self.assertEquals('icon-instant', icon(campaign))
        self.assertEquals('icon-feed', icon(trigger))
        self.assertEquals('icon-tree', icon(flow))
        self.assertEquals("", icon(None))
예제 #8
0
파일: base.py 프로젝트: iamfip/rapidpro
    def create_flow(self, definition=None, **kwargs):
        if "org" not in kwargs:
            kwargs["org"] = self.org
        if "user" not in kwargs:
            kwargs["user"] = self.user
        if "name" not in kwargs:
            kwargs["name"] = "Color Flow"

        flow = Flow.create(**kwargs)
        if not definition:
            # if definition isn't provided, generate simple single message flow
            node_uuid = str(uuid4())
            definition = {
                "version":
                "10",
                "flow_type":
                "F",
                "base_language":
                "eng",
                "entry":
                node_uuid,
                "action_sets": [{
                    "uuid":
                    node_uuid,
                    "x":
                    0,
                    "y":
                    0,
                    "actions": [{
                        "msg": {
                            "eng": "Hey everybody!"
                        },
                        "media": {},
                        "send_all": False,
                        "type": "reply"
                    }],
                    "destination":
                    None,
                }],
                "rule_sets": [],
            }

        flow.version_number = definition["version"]
        flow.save()

        json_flow = FlowRevision.migrate_definition(
            definition, flow, to_version=Flow.FINAL_LEGACY_VERSION)
        flow.update(json_flow)

        return flow
예제 #9
0
    def test_icon(self):
        from temba.campaigns.models import Campaign
        from temba.triggers.models import Trigger
        from temba.flows.models import Flow
        from temba.utils.templatetags.temba import icon

        campaign = Campaign.create(self.org, self.admin, 'Test Campaign', self.create_group('Test group', []))
        flow = Flow.create(self.org, self.admin, 'Test Flow')
        trigger = Trigger.objects.create(org=self.org, keyword='trigger', flow=flow, created_by=self.admin, modified_by=self.admin)

        self.assertEquals('icon-instant', icon(campaign))
        self.assertEquals('icon-feed', icon(trigger))
        self.assertEquals('icon-tree', icon(flow))
        self.assertEquals("", icon(None))
예제 #10
0
    def create_flow(self,
                    name="Test Flow",
                    *,
                    flow_type=Flow.TYPE_MESSAGE,
                    nodes=None,
                    is_system=False,
                    org=None):
        org = org or self.org
        flow = Flow.create(org,
                           self.admin,
                           name,
                           flow_type=flow_type,
                           is_system=is_system)
        if not nodes:
            nodes = [{
                "uuid":
                "f3d5ccd0-fee0-4955-bcb7-21613f049eae",
                "actions": [{
                    "uuid": "f661e3f0-5148-4397-92ef-925629ad444d",
                    "type": "send_msg",
                    "text": "Hey everybody!"
                }],
                "exits": [{
                    "uuid": "72a3f1da-bde1-4549-a986-d35809807be8"
                }],
            }]
        definition = {
            "uuid": str(uuid4()),
            "name": name,
            "type": Flow.GOFLOW_TYPES[flow_type],
            "revision": 1,
            "spec_version": "13.1.0",
            "expire_after_minutes": Flow.DEFAULT_EXPIRES_AFTER,
            "language": "eng",
            "nodes": nodes,
        }

        flow.version_number = definition["spec_version"]
        flow.save()

        json_flow = Flow.migrate_definition(definition, flow)
        flow.save_revision(self.admin, json_flow)

        return flow
예제 #11
0
파일: tests.py 프로젝트: songea/rapidpro
    def create_flow(self, definition=None, **kwargs):
        if 'org' not in kwargs:
            kwargs['org'] = self.org
        if 'user' not in kwargs:
            kwargs['user'] = self.user
        if 'name' not in kwargs:
            kwargs['name'] = "Color Flow"

        flow = Flow.create(**kwargs)
        if not definition:
            # if definition isn't provided, generate simple single message flow
            node_uuid = str(uuid4())
            definition = {
                "version":
                10,
                "flow_type":
                "F",
                "base_language":
                "eng",
                "entry":
                node_uuid,
                "action_sets": [{
                    "uuid":
                    node_uuid,
                    "x":
                    0,
                    "y":
                    0,
                    "actions": [{
                        "msg": {
                            "eng": "Hey everybody!"
                        },
                        "media": {},
                        "send_all": False,
                        "type": "reply"
                    }],
                    "destination":
                    None
                }],
                "rule_sets": [],
            }
        flow.update(definition)
        return flow
예제 #12
0
파일: base.py 프로젝트: mxabierto/rapidpro
    def create_flow(self, definition=None, **kwargs):
        if "org" not in kwargs:
            kwargs["org"] = self.org
        if "user" not in kwargs:
            kwargs["user"] = self.user
        if "name" not in kwargs:
            kwargs["name"] = "Color Flow"

        flow = Flow.create(**kwargs)
        if not definition:
            # if definition isn't provided, generate simple single message flow
            node_uuid = str(uuid4())
            definition = {
                "version": 10,
                "flow_type": "F",
                "base_language": "eng",
                "entry": node_uuid,
                "action_sets": [
                    {
                        "uuid": node_uuid,
                        "x": 0,
                        "y": 0,
                        "actions": [
                            {"msg": {"eng": "Hey everybody!"}, "media": {}, "send_all": False, "type": "reply"}
                        ],
                        "destination": None,
                    }
                ],
                "rule_sets": [],
            }

        flow.version_number = definition["version"]
        flow.save()

        json_flow = FlowRevision.migrate_definition(definition, flow)
        flow.update(json_flow)

        return flow
예제 #13
0
    def setUp(self):

        User.objects.create_user(username="******",
                                 password="******",
                                 email="*****@*****.**")

        user = User.objects.first()

        temba = Org.objects.create(name="Temba",
                                   timezone="America/Maceio",
                                   created_by=user,
                                   modified_by=user)
        weni = Org.objects.create(name="Weni",
                                  timezone="America/Maceio",
                                  created_by=user,
                                  modified_by=user)

        Flow.create(name="Test Temba", user=user, org=temba)
        Flow.create(name="Test flow name", user=user, org=weni)
        Flow.create(name="Test Weni flow name", user=user, org=weni)

        super().setUp()

        self.stub = flow_pb2_grpc.FlowControllerStub(self.channel)
예제 #14
0
 def get_flow(self, filename, substitutions=None):
     flow = Flow.create(self.org, self.admin, name=filename)
     self.update_flow(flow, filename, substitutions)
     return flow
예제 #15
0
파일: tests.py 프로젝트: mbanje/rapidpro
 def create_flow(self, uuid_start=None):
     flow = Flow.create(self.org, self.admin, "Color Flow")
     flow.update(self.create_flow_definition(uuid_start))
     return Flow.objects.get(pk=flow.pk)
예제 #16
0
 def create_flow(self, uuid_start=None):
     flow = Flow.create(self.org, self.admin, "Color Flow")
     flow.update(self.create_flow_definition(uuid_start))
     return Flow.objects.get(pk=flow.pk)