Bläddra i källkod

Updated login procedure: handle incorrect password and username

Yentl Van Tendeloo 8 år sedan
förälder
incheckning
9ee5f8b1d5
4 ändrade filer med 132 tillägg och 116 borttagningar
  1. 9 2
      classes/main_app.xml
  2. 43 43
      classes/modelverse/modelverse.xml
  3. 1 0
      classes/window/prompt_window.xml
  4. 79 71
      frontend.py

+ 9 - 2
classes/main_app.xml

@@ -139,8 +139,8 @@
                                     </script>
                                 </transition>
 
-                                <transition event="close_window" cond="self.username == None or self.password == None" target="../../prompt_username"/>
-                                <transition event="close_window" cond="self.username != None and self.password != None" target="../../login"/>
+                                <transition event="close_window" cond="self.username == ''" target="../../prompt_username"/>
+                                <transition event="close_window" cond="self.username != ''" target="../../login"/>
                             </state>
 
                             <onexit>
@@ -169,6 +169,13 @@
                                     <parameter expr="'Logging in... OK'"/>
                                 </raise>
                             </transition>
+
+                            <transition event="mv_exception" target="../prompt_username">
+                                <raise event="update_status" scope="narrow" target="self.splash_window">
+                                    <parameter expr="40"/>
+                                    <parameter expr="'Incorrect username or password'"/>
+                                </raise>
+                            </transition>
                         </state>
 
                         <state id="upload_models" initial="upload_MM_render">

+ 43 - 43
classes/modelverse/modelverse.xml

@@ -233,53 +233,53 @@
                     </state>
                 </state>
 
-                <state id="login" initial="wait_prompt_1">
-                    <state id="wait_prompt_1">
-                        <transition cond="self.expect_response('Log on as which user?', pop=True)" target="../wait_prompt_2">
-                            <raise event="request">
-                                <parameter expr="self.parameters[0]"/>
-                            </raise>
-                        </transition>
-                    </state>
+                <state id="operations" initial="model_list">
+                    <history id="history" type="deep"/>
 
-                    <state id="wait_prompt_2">
-                        <transition cond="self.expect_response('Password for existing user?', pop=True)" target="../wait_prompt_existing">
-                            <raise event="request">
-                                <parameter expr="self.parameters[1]"/>
-                            </raise>
-                        </transition>
+                    <state id="login" initial="wait_prompt_1">
+                        <state id="wait_prompt_1">
+                            <transition cond="self.expect_response('Log on as which user?', pop=True)" target="../wait_prompt_2">
+                                <raise event="request">
+                                    <parameter expr="self.parameters[0]"/>
+                                </raise>
+                            </transition>
+                        </state>
 
-                        <transition cond="self.expect_response('This is a new user: please give password!', pop=True)" target="../wait_prompt_existing">
-                            <raise event="request">
-                                <parameter expr="self.parameters[1]"/>
-                            </raise>
-                        </transition>
-                    </state>
+                        <state id="wait_prompt_2">
+                            <transition cond="self.expect_response('Password for existing user?', pop=True)" target="../wait_prompt_existing">
+                                <raise event="request">
+                                    <parameter expr="self.parameters[1]"/>
+                                </raise>
+                            </transition>
 
-                    <state id="wait_prompt_existing">
-                        <transition cond="self.expect_response('Welcome to the Model Management Interface v2.0!', pop=True)" target="../login_ok"/>
-                        <transition cond="self.expect_response('Wrong password!', pop=True)" target="../../wait_for_action/connected">
-                            <raise event="exception">
-                                <parameter expr="'PermissionDenied'"/>
-                                <parameter expr="'Permission denied!'"/>
-                            </raise>
-                        </transition>
-                    </state>
+                            <transition cond="self.expect_response('This is a new user: please give password!', pop=True)" target="../wait_prompt_existing">
+                                <raise event="request">
+                                    <parameter expr="self.parameters[1]"/>
+                                </raise>
+                            </transition>
+                        </state>
 
-                    <state id="login_ok">
-                        <transition cond="self.expect_response('Use the \'help\' command for a list of possible commands', pop=True)" target="../../wait_for_action/megamodelling">
-                            <raise event="request">
-                                <parameter expr="'quiet'"/>
-                            </raise>
-                            <raise event="result">
-                                <parameter expr="None"/>
-                            </raise>
-                        </transition>
-                    </state>
-                </state>
+                        <state id="wait_prompt_existing">
+                            <transition cond="self.expect_response('Welcome to the Model Management Interface v2.0!', pop=True)" target="../login_ok"/>
+                            <transition cond="self.expect_response('Wrong password!', pop=True)" target="../../../wait_for_action/connected">
+                                <raise event="exception">
+                                    <parameter expr="'PermissionDenied'"/>
+                                    <parameter expr="'Permission denied!'"/>
+                                </raise>
+                            </transition>
+                        </state>
 
-                <state id="operations" initial="model_list">
-                    <history id="history" type="deep"/>
+                        <state id="login_ok">
+                            <transition cond="self.expect_response('Use the \'help\' command for a list of possible commands', pop=True)" target="../../../wait_for_action/megamodelling">
+                                <raise event="request">
+                                    <parameter expr="'quiet'"/>
+                                </raise>
+                                <raise event="result">
+                                    <parameter expr="None"/>
+                                </raise>
+                            </transition>
+                        </state>
+                    </state>
 
                     <state id="model_list">
                         <onentry>
@@ -1372,7 +1372,7 @@
                     </state>
 
                     <state id="connected">
-                        <transition cond="self.expect_action(None, 'login')" target="../../login">
+                        <transition cond="self.expect_action(None, 'login')" target="../../operations/login">
                             <script>
                                 self.load_action(None)
                             </script>

+ 1 - 0
classes/window/prompt_window.xml

@@ -77,6 +77,7 @@
                     results = {}
                     for k, v in self.entries.items():
                         results[k] = v.get()
+                    print("SENDING DATA")
                 </script>
 
                 <raise event="prompt_results" scope="narrow" target="'parent'">

+ 79 - 71
frontend.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Mon Oct  2 08:32:40 2017
+Date:   Mon Oct  2 08:54:46 2017
 
 Model author: Yentl Van Tendeloo
 Model name:   Modelverse Visual Editor - Tkinter Version 
@@ -241,6 +241,10 @@ class MainApp(RuntimeClassBase):
         _parallel_behaviour_init_modelverse_logging_in_modelverse_login_0.setAction(self._parallel_behaviour_init_modelverse_logging_in_modelverse_login_0_exec)
         _parallel_behaviour_init_modelverse_logging_in_modelverse_login_0.setTrigger(Event("mv_response", None))
         self.states["/parallel/behaviour/init_modelverse/logging_in_modelverse/login"].addTransition(_parallel_behaviour_init_modelverse_logging_in_modelverse_login_0)
+        _parallel_behaviour_init_modelverse_logging_in_modelverse_login_1 = Transition(self, self.states["/parallel/behaviour/init_modelverse/logging_in_modelverse/login"], [self.states["/parallel/behaviour/init_modelverse/logging_in_modelverse/prompt_username"]])
+        _parallel_behaviour_init_modelverse_logging_in_modelverse_login_1.setAction(self._parallel_behaviour_init_modelverse_logging_in_modelverse_login_1_exec)
+        _parallel_behaviour_init_modelverse_logging_in_modelverse_login_1.setTrigger(Event("mv_exception", None))
+        self.states["/parallel/behaviour/init_modelverse/logging_in_modelverse/login"].addTransition(_parallel_behaviour_init_modelverse_logging_in_modelverse_login_1)
         
         # transition /parallel/behaviour/init_modelverse/logging_in_modelverse/upload_models/upload_MM_render
         _parallel_behaviour_init_modelverse_logging_in_modelverse_upload_models_upload_MM_render_0 = Transition(self, self.states["/parallel/behaviour/init_modelverse/logging_in_modelverse/upload_models/upload_MM_render"], [self.states["/parallel/behaviour/init_modelverse/logging_in_modelverse/upload_models/upload_render_SCD"]])
@@ -405,14 +409,17 @@ class MainApp(RuntimeClassBase):
         self.password = results["password"]
     
     def _parallel_behaviour_init_modelverse_logging_in_modelverse_wait_for_credentials_responsive_1_guard(self, parameters):
-        return self.username == None or self.password == None
+        return self.username == ''
     
     def _parallel_behaviour_init_modelverse_logging_in_modelverse_wait_for_credentials_responsive_2_guard(self, parameters):
-        return self.username != None and self.password != None
+        return self.username != ''
     
     def _parallel_behaviour_init_modelverse_logging_in_modelverse_login_0_exec(self, parameters):
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.splash_window, Event("update_status", None, [70, 'Logging in... OK'])]))
     
+    def _parallel_behaviour_init_modelverse_logging_in_modelverse_login_1_exec(self, parameters):
+        self.big_step.outputEventOM(Event("narrow_cast", None, [self, self.splash_window, Event("update_status", None, [40, 'Incorrect username or password'])]))
+    
     def _parallel_behaviour_init_modelverse_logging_in_modelverse_upload_models_upload_render_SCD_1_exec(self, parameters):
         context = parameters[0]
         self.context = context
@@ -585,26 +592,26 @@ class Modelverse(RuntimeClassBase):
         # state /initialized/behaviour/init/wait_for_taskname_ack
         self.states["/initialized/behaviour/init/wait_for_taskname_ack"] = State(10, "/initialized/behaviour/init/wait_for_taskname_ack", self)
         
-        # state /initialized/behaviour/login
-        self.states["/initialized/behaviour/login"] = State(11, "/initialized/behaviour/login", self)
+        # state /initialized/behaviour/operations
+        self.states["/initialized/behaviour/operations"] = State(11, "/initialized/behaviour/operations", self)
         
-        # state /initialized/behaviour/login/wait_prompt_1
-        self.states["/initialized/behaviour/login/wait_prompt_1"] = State(12, "/initialized/behaviour/login/wait_prompt_1", self)
+        # state /initialized/behaviour/operations/history
+        self.states["/initialized/behaviour/operations/history"] = DeepHistoryState(12, "/initialized/behaviour/operations/history", self)
         
-        # state /initialized/behaviour/login/wait_prompt_2
-        self.states["/initialized/behaviour/login/wait_prompt_2"] = State(13, "/initialized/behaviour/login/wait_prompt_2", self)
+        # state /initialized/behaviour/operations/login
+        self.states["/initialized/behaviour/operations/login"] = State(13, "/initialized/behaviour/operations/login", self)
         
-        # state /initialized/behaviour/login/wait_prompt_existing
-        self.states["/initialized/behaviour/login/wait_prompt_existing"] = State(14, "/initialized/behaviour/login/wait_prompt_existing", self)
+        # state /initialized/behaviour/operations/login/wait_prompt_1
+        self.states["/initialized/behaviour/operations/login/wait_prompt_1"] = State(14, "/initialized/behaviour/operations/login/wait_prompt_1", self)
         
-        # state /initialized/behaviour/login/login_ok
-        self.states["/initialized/behaviour/login/login_ok"] = State(15, "/initialized/behaviour/login/login_ok", self)
+        # state /initialized/behaviour/operations/login/wait_prompt_2
+        self.states["/initialized/behaviour/operations/login/wait_prompt_2"] = State(15, "/initialized/behaviour/operations/login/wait_prompt_2", self)
         
-        # state /initialized/behaviour/operations
-        self.states["/initialized/behaviour/operations"] = State(16, "/initialized/behaviour/operations", self)
+        # state /initialized/behaviour/operations/login/wait_prompt_existing
+        self.states["/initialized/behaviour/operations/login/wait_prompt_existing"] = State(16, "/initialized/behaviour/operations/login/wait_prompt_existing", self)
         
-        # state /initialized/behaviour/operations/history
-        self.states["/initialized/behaviour/operations/history"] = DeepHistoryState(17, "/initialized/behaviour/operations/history", self)
+        # state /initialized/behaviour/operations/login/login_ok
+        self.states["/initialized/behaviour/operations/login/login_ok"] = State(17, "/initialized/behaviour/operations/login/login_ok", self)
         
         # state /initialized/behaviour/operations/model_list
         self.states["/initialized/behaviour/operations/model_list"] = State(18, "/initialized/behaviour/operations/model_list", self)
@@ -984,7 +991,6 @@ class Modelverse(RuntimeClassBase):
         self.states["/initialized"].addChild(self.states["/initialized/queue"])
         self.states["/initialized/http_mapper"].addChild(self.states["/initialized/http_mapper/init"])
         self.states["/initialized/behaviour"].addChild(self.states["/initialized/behaviour/init"])
-        self.states["/initialized/behaviour"].addChild(self.states["/initialized/behaviour/login"])
         self.states["/initialized/behaviour"].addChild(self.states["/initialized/behaviour/operations"])
         self.states["/initialized/behaviour"].addChild(self.states["/initialized/behaviour/wait_for_action"])
         self.states["/initialized/behaviour"].addChild(self.states["/initialized/behaviour/going_manual"])
@@ -993,11 +999,8 @@ class Modelverse(RuntimeClassBase):
         self.states["/initialized/behaviour/init"].addChild(self.states["/initialized/behaviour/init/connect_http_client"])
         self.states["/initialized/behaviour/init"].addChild(self.states["/initialized/behaviour/init/waiting_http_client"])
         self.states["/initialized/behaviour/init"].addChild(self.states["/initialized/behaviour/init/wait_for_taskname_ack"])
-        self.states["/initialized/behaviour/login"].addChild(self.states["/initialized/behaviour/login/wait_prompt_1"])
-        self.states["/initialized/behaviour/login"].addChild(self.states["/initialized/behaviour/login/wait_prompt_2"])
-        self.states["/initialized/behaviour/login"].addChild(self.states["/initialized/behaviour/login/wait_prompt_existing"])
-        self.states["/initialized/behaviour/login"].addChild(self.states["/initialized/behaviour/login/login_ok"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/history"])
+        self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/login"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/model_list"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/model_add"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/model_delete"])
@@ -1047,6 +1050,10 @@ class Modelverse(RuntimeClassBase):
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/define_attribute"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/all_instances"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/save"])
+        self.states["/initialized/behaviour/operations/login"].addChild(self.states["/initialized/behaviour/operations/login/wait_prompt_1"])
+        self.states["/initialized/behaviour/operations/login"].addChild(self.states["/initialized/behaviour/operations/login/wait_prompt_2"])
+        self.states["/initialized/behaviour/operations/login"].addChild(self.states["/initialized/behaviour/operations/login/wait_prompt_existing"])
+        self.states["/initialized/behaviour/operations/login"].addChild(self.states["/initialized/behaviour/operations/login/login_ok"])
         self.states["/initialized/behaviour/operations/model_add"].addChild(self.states["/initialized/behaviour/operations/model_add/send_metadata"])
         self.states["/initialized/behaviour/operations/verify"].addChild(self.states["/initialized/behaviour/operations/verify/waiting"])
         self.states["/initialized/behaviour/operations/model_upload"].addChild(self.states["/initialized/behaviour/operations/model_upload/send_metadata"])
@@ -1101,8 +1108,8 @@ class Modelverse(RuntimeClassBase):
         self.states["/initialized/http_mapper"].default_state = self.states["/initialized/http_mapper/init"]
         self.states["/initialized/behaviour"].default_state = self.states["/initialized/behaviour/wait_for_action"]
         self.states["/initialized/behaviour/init"].default_state = self.states["/initialized/behaviour/init/connect_http_client"]
-        self.states["/initialized/behaviour/login"].default_state = self.states["/initialized/behaviour/login/wait_prompt_1"]
         self.states["/initialized/behaviour/operations"].default_state = self.states["/initialized/behaviour/operations/model_list"]
+        self.states["/initialized/behaviour/operations/login"].default_state = self.states["/initialized/behaviour/operations/login/wait_prompt_1"]
         self.states["/initialized/behaviour/operations/model_add"].default_state = self.states["/initialized/behaviour/operations/model_add/send_metadata"]
         self.states["/initialized/behaviour/operations/verify"].default_state = self.states["/initialized/behaviour/operations/verify/waiting"]
         self.states["/initialized/behaviour/operations/model_upload"].default_state = self.states["/initialized/behaviour/operations/model_upload/send_metadata"]
@@ -1187,42 +1194,42 @@ class Modelverse(RuntimeClassBase):
         _initialized_behaviour_init_wait_for_taskname_ack_0.setGuard(self._initialized_behaviour_init_wait_for_taskname_ack_0_guard)
         self.states["/initialized/behaviour/init/wait_for_taskname_ack"].addTransition(_initialized_behaviour_init_wait_for_taskname_ack_0)
         
-        # transition /initialized/behaviour/login/wait_prompt_1
-        _initialized_behaviour_login_wait_prompt_1_0 = Transition(self, self.states["/initialized/behaviour/login/wait_prompt_1"], [self.states["/initialized/behaviour/login/wait_prompt_2"]])
-        _initialized_behaviour_login_wait_prompt_1_0.setAction(self._initialized_behaviour_login_wait_prompt_1_0_exec)
-        _initialized_behaviour_login_wait_prompt_1_0.setTrigger(None)
-        _initialized_behaviour_login_wait_prompt_1_0.setGuard(self._initialized_behaviour_login_wait_prompt_1_0_guard)
-        self.states["/initialized/behaviour/login/wait_prompt_1"].addTransition(_initialized_behaviour_login_wait_prompt_1_0)
-        
-        # transition /initialized/behaviour/login/wait_prompt_2
-        _initialized_behaviour_login_wait_prompt_2_0 = Transition(self, self.states["/initialized/behaviour/login/wait_prompt_2"], [self.states["/initialized/behaviour/login/wait_prompt_existing"]])
-        _initialized_behaviour_login_wait_prompt_2_0.setAction(self._initialized_behaviour_login_wait_prompt_2_0_exec)
-        _initialized_behaviour_login_wait_prompt_2_0.setTrigger(None)
-        _initialized_behaviour_login_wait_prompt_2_0.setGuard(self._initialized_behaviour_login_wait_prompt_2_0_guard)
-        self.states["/initialized/behaviour/login/wait_prompt_2"].addTransition(_initialized_behaviour_login_wait_prompt_2_0)
-        _initialized_behaviour_login_wait_prompt_2_1 = Transition(self, self.states["/initialized/behaviour/login/wait_prompt_2"], [self.states["/initialized/behaviour/login/wait_prompt_existing"]])
-        _initialized_behaviour_login_wait_prompt_2_1.setAction(self._initialized_behaviour_login_wait_prompt_2_1_exec)
-        _initialized_behaviour_login_wait_prompt_2_1.setTrigger(None)
-        _initialized_behaviour_login_wait_prompt_2_1.setGuard(self._initialized_behaviour_login_wait_prompt_2_1_guard)
-        self.states["/initialized/behaviour/login/wait_prompt_2"].addTransition(_initialized_behaviour_login_wait_prompt_2_1)
-        
-        # transition /initialized/behaviour/login/wait_prompt_existing
-        _initialized_behaviour_login_wait_prompt_existing_0 = Transition(self, self.states["/initialized/behaviour/login/wait_prompt_existing"], [self.states["/initialized/behaviour/login/login_ok"]])
-        _initialized_behaviour_login_wait_prompt_existing_0.setTrigger(None)
-        _initialized_behaviour_login_wait_prompt_existing_0.setGuard(self._initialized_behaviour_login_wait_prompt_existing_0_guard)
-        self.states["/initialized/behaviour/login/wait_prompt_existing"].addTransition(_initialized_behaviour_login_wait_prompt_existing_0)
-        _initialized_behaviour_login_wait_prompt_existing_1 = Transition(self, self.states["/initialized/behaviour/login/wait_prompt_existing"], [self.states["/initialized/behaviour/wait_for_action/connected"]])
-        _initialized_behaviour_login_wait_prompt_existing_1.setAction(self._initialized_behaviour_login_wait_prompt_existing_1_exec)
-        _initialized_behaviour_login_wait_prompt_existing_1.setTrigger(None)
-        _initialized_behaviour_login_wait_prompt_existing_1.setGuard(self._initialized_behaviour_login_wait_prompt_existing_1_guard)
-        self.states["/initialized/behaviour/login/wait_prompt_existing"].addTransition(_initialized_behaviour_login_wait_prompt_existing_1)
-        
-        # transition /initialized/behaviour/login/login_ok
-        _initialized_behaviour_login_login_ok_0 = Transition(self, self.states["/initialized/behaviour/login/login_ok"], [self.states["/initialized/behaviour/wait_for_action/megamodelling"]])
-        _initialized_behaviour_login_login_ok_0.setAction(self._initialized_behaviour_login_login_ok_0_exec)
-        _initialized_behaviour_login_login_ok_0.setTrigger(None)
-        _initialized_behaviour_login_login_ok_0.setGuard(self._initialized_behaviour_login_login_ok_0_guard)
-        self.states["/initialized/behaviour/login/login_ok"].addTransition(_initialized_behaviour_login_login_ok_0)
+        # transition /initialized/behaviour/operations/login/wait_prompt_1
+        _initialized_behaviour_operations_login_wait_prompt_1_0 = Transition(self, self.states["/initialized/behaviour/operations/login/wait_prompt_1"], [self.states["/initialized/behaviour/operations/login/wait_prompt_2"]])
+        _initialized_behaviour_operations_login_wait_prompt_1_0.setAction(self._initialized_behaviour_operations_login_wait_prompt_1_0_exec)
+        _initialized_behaviour_operations_login_wait_prompt_1_0.setTrigger(None)
+        _initialized_behaviour_operations_login_wait_prompt_1_0.setGuard(self._initialized_behaviour_operations_login_wait_prompt_1_0_guard)
+        self.states["/initialized/behaviour/operations/login/wait_prompt_1"].addTransition(_initialized_behaviour_operations_login_wait_prompt_1_0)
+        
+        # transition /initialized/behaviour/operations/login/wait_prompt_2
+        _initialized_behaviour_operations_login_wait_prompt_2_0 = Transition(self, self.states["/initialized/behaviour/operations/login/wait_prompt_2"], [self.states["/initialized/behaviour/operations/login/wait_prompt_existing"]])
+        _initialized_behaviour_operations_login_wait_prompt_2_0.setAction(self._initialized_behaviour_operations_login_wait_prompt_2_0_exec)
+        _initialized_behaviour_operations_login_wait_prompt_2_0.setTrigger(None)
+        _initialized_behaviour_operations_login_wait_prompt_2_0.setGuard(self._initialized_behaviour_operations_login_wait_prompt_2_0_guard)
+        self.states["/initialized/behaviour/operations/login/wait_prompt_2"].addTransition(_initialized_behaviour_operations_login_wait_prompt_2_0)
+        _initialized_behaviour_operations_login_wait_prompt_2_1 = Transition(self, self.states["/initialized/behaviour/operations/login/wait_prompt_2"], [self.states["/initialized/behaviour/operations/login/wait_prompt_existing"]])
+        _initialized_behaviour_operations_login_wait_prompt_2_1.setAction(self._initialized_behaviour_operations_login_wait_prompt_2_1_exec)
+        _initialized_behaviour_operations_login_wait_prompt_2_1.setTrigger(None)
+        _initialized_behaviour_operations_login_wait_prompt_2_1.setGuard(self._initialized_behaviour_operations_login_wait_prompt_2_1_guard)
+        self.states["/initialized/behaviour/operations/login/wait_prompt_2"].addTransition(_initialized_behaviour_operations_login_wait_prompt_2_1)
+        
+        # transition /initialized/behaviour/operations/login/wait_prompt_existing
+        _initialized_behaviour_operations_login_wait_prompt_existing_0 = Transition(self, self.states["/initialized/behaviour/operations/login/wait_prompt_existing"], [self.states["/initialized/behaviour/operations/login/login_ok"]])
+        _initialized_behaviour_operations_login_wait_prompt_existing_0.setTrigger(None)
+        _initialized_behaviour_operations_login_wait_prompt_existing_0.setGuard(self._initialized_behaviour_operations_login_wait_prompt_existing_0_guard)
+        self.states["/initialized/behaviour/operations/login/wait_prompt_existing"].addTransition(_initialized_behaviour_operations_login_wait_prompt_existing_0)
+        _initialized_behaviour_operations_login_wait_prompt_existing_1 = Transition(self, self.states["/initialized/behaviour/operations/login/wait_prompt_existing"], [self.states["/initialized/behaviour/wait_for_action/connected"]])
+        _initialized_behaviour_operations_login_wait_prompt_existing_1.setAction(self._initialized_behaviour_operations_login_wait_prompt_existing_1_exec)
+        _initialized_behaviour_operations_login_wait_prompt_existing_1.setTrigger(None)
+        _initialized_behaviour_operations_login_wait_prompt_existing_1.setGuard(self._initialized_behaviour_operations_login_wait_prompt_existing_1_guard)
+        self.states["/initialized/behaviour/operations/login/wait_prompt_existing"].addTransition(_initialized_behaviour_operations_login_wait_prompt_existing_1)
+        
+        # transition /initialized/behaviour/operations/login/login_ok
+        _initialized_behaviour_operations_login_login_ok_0 = Transition(self, self.states["/initialized/behaviour/operations/login/login_ok"], [self.states["/initialized/behaviour/wait_for_action/megamodelling"]])
+        _initialized_behaviour_operations_login_login_ok_0.setAction(self._initialized_behaviour_operations_login_login_ok_0_exec)
+        _initialized_behaviour_operations_login_login_ok_0.setTrigger(None)
+        _initialized_behaviour_operations_login_login_ok_0.setGuard(self._initialized_behaviour_operations_login_login_ok_0_guard)
+        self.states["/initialized/behaviour/operations/login/login_ok"].addTransition(_initialized_behaviour_operations_login_login_ok_0)
         
         # transition /initialized/behaviour/operations/model_list
         _initialized_behaviour_operations_model_list_0 = Transition(self, self.states["/initialized/behaviour/operations/model_list"], [self.states["/initialized/behaviour/wait_for_action/history"]])
@@ -1782,7 +1789,7 @@ class Modelverse(RuntimeClassBase):
         self.states["/initialized/behaviour/wait_for_action/disconnected"].addTransition(_initialized_behaviour_wait_for_action_disconnected_0)
         
         # transition /initialized/behaviour/wait_for_action/connected
-        _initialized_behaviour_wait_for_action_connected_0 = Transition(self, self.states["/initialized/behaviour/wait_for_action/connected"], [self.states["/initialized/behaviour/login"]])
+        _initialized_behaviour_wait_for_action_connected_0 = Transition(self, self.states["/initialized/behaviour/wait_for_action/connected"], [self.states["/initialized/behaviour/operations/login"]])
         _initialized_behaviour_wait_for_action_connected_0.setAction(self._initialized_behaviour_wait_for_action_connected_0_exec)
         _initialized_behaviour_wait_for_action_connected_0.setTrigger(None)
         _initialized_behaviour_wait_for_action_connected_0.setGuard(self._initialized_behaviour_wait_for_action_connected_0_guard)
@@ -2626,38 +2633,38 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_init_wait_for_taskname_ack_0_guard(self, parameters):
         return self.expect_response('OK', pop=True)
     
-    def _initialized_behaviour_login_wait_prompt_1_0_exec(self, parameters):
+    def _initialized_behaviour_operations_login_wait_prompt_1_0_exec(self, parameters):
         self.raiseInternalEvent(Event("request", None, [self.parameters[0]]))
     
-    def _initialized_behaviour_login_wait_prompt_1_0_guard(self, parameters):
+    def _initialized_behaviour_operations_login_wait_prompt_1_0_guard(self, parameters):
         return self.expect_response('Log on as which user?', pop=True)
     
-    def _initialized_behaviour_login_wait_prompt_2_0_exec(self, parameters):
+    def _initialized_behaviour_operations_login_wait_prompt_2_0_exec(self, parameters):
         self.raiseInternalEvent(Event("request", None, [self.parameters[1]]))
     
-    def _initialized_behaviour_login_wait_prompt_2_0_guard(self, parameters):
+    def _initialized_behaviour_operations_login_wait_prompt_2_0_guard(self, parameters):
         return self.expect_response('Password for existing user?', pop=True)
     
-    def _initialized_behaviour_login_wait_prompt_2_1_exec(self, parameters):
+    def _initialized_behaviour_operations_login_wait_prompt_2_1_exec(self, parameters):
         self.raiseInternalEvent(Event("request", None, [self.parameters[1]]))
     
-    def _initialized_behaviour_login_wait_prompt_2_1_guard(self, parameters):
+    def _initialized_behaviour_operations_login_wait_prompt_2_1_guard(self, parameters):
         return self.expect_response('This is a new user: please give password!', pop=True)
     
-    def _initialized_behaviour_login_wait_prompt_existing_0_guard(self, parameters):
+    def _initialized_behaviour_operations_login_wait_prompt_existing_0_guard(self, parameters):
         return self.expect_response('Welcome to the Model Management Interface v2.0!', pop=True)
     
-    def _initialized_behaviour_login_wait_prompt_existing_1_exec(self, parameters):
+    def _initialized_behaviour_operations_login_wait_prompt_existing_1_exec(self, parameters):
         self.raiseInternalEvent(Event("exception", None, ['PermissionDenied', 'Permission denied!']))
     
-    def _initialized_behaviour_login_wait_prompt_existing_1_guard(self, parameters):
+    def _initialized_behaviour_operations_login_wait_prompt_existing_1_guard(self, parameters):
         return self.expect_response('Wrong password!', pop=True)
     
-    def _initialized_behaviour_login_login_ok_0_exec(self, parameters):
+    def _initialized_behaviour_operations_login_login_ok_0_exec(self, parameters):
         self.raiseInternalEvent(Event("request", None, ['quiet']))
         self.raiseInternalEvent(Event("result", None, [None]))
     
-    def _initialized_behaviour_login_login_ok_0_guard(self, parameters):
+    def _initialized_behaviour_operations_login_login_ok_0_guard(self, parameters):
         return self.expect_response('Use the \'help\' command for a list of possible commands', pop=True)
     
     def _initialized_behaviour_operations_model_list_0_exec(self, parameters):
@@ -3884,6 +3891,7 @@ class PromptWindow(RuntimeClassBase, tk.Toplevel, SCCDWidget):
         results = {}
         for k, v in self.entries.items():
             results[k] = v.get()
+        print("SENDING DATA")
         self.big_step.outputEventOM(Event("narrow_cast", None, [self, 'parent', Event("prompt_results", None, [results])]))
     
     def _root_0_guard(self, parameters):