Project

General

Profile

Bug #13917

Erreur lors de l'import d'un wf

Added by Josué Kouka almost 6 years ago. Updated almost 6 years ago.

Status:
Fermé
Priority:
Normal
Assignee:
-
Target version:
Start date:
09 November 2016
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:

Description

Exception:
  type = '<type 'exceptions.AttributeError'>', value = ''NoneType' object has no attribute 'fields''

Stack trace (most recent call first):
  File "/usr/lib/python2.7/dist-packages/wcs/workflows.py", line 239, in __init__
   237         self.workflow = workflow
   238         if workflow.variables_formdef and workflow.variables_formdef.fields:
>  239             self.fields = self.workflow.variables_formdef.fields
   240             self.max_field_id = max([lax_int(x.id) for x in self.fields or []])
   241         else:

  locals: 
     self = <WorkflowVariablesFieldsFormDef 'Nancy en Direct' id:None>
     workflow = <Workflow 'Nancy en Direct' id:None>

  File "/usr/lib/python2.7/dist-packages/wcs/workflows.py", line 606, in import_from_xml_tree
   604             formdef = variables.find('formdef')
   605             imported_formdef = FormDef.import_from_xml_tree(formdef, include_id=True)
>  606             workflow.backoffice_fields_formdef = WorkflowVariablesFieldsFormDef(workflow=workflow)
   607             workflow.backoffice_fields_formdef.fields = imported_formdef.fields
   608 

  locals: 
     status_o = <wcs.workflows.WorkflowStatus object at 0x7f0426763dd0>
     status = <Element 'status' at 0x3502e50>
     level_o = <wcs.workflows.WorkflowCriticalityLevel object at 0x7f041e91f3d0>
     node = <Element 'last_modification' at 0x7f0424af8e90>
     level = <Element 'criticality-level' at 0x50bb550>
     formdef = <Element 'formdef' at 0x47484d0>
     variables = <Element 'backoffice-fields' at 0x4748190>
     workflow = <Workflow 'Nancy en Direct' id:None>
     tree = <Element 'workflow' at 0x3d8b450>
     role_node = <Element 'role' at 0x7f0424af8e50>
     global_actions = <Element 'global_actions' at 0x3502310>
     action_o = <wcs.workflows.WorkflowGlobalAction object at 0x7f042533e150>
     include_id = False
     action = <Element 'action' at 0x7f042563e4d0>
     cls = <class 'wcs.workflows.Workflow'>
     charset = 'utf-8'
     imported_formdef = <FormDef '-' id:None>
     criticality_levels = <Element 'criticality_levels' at 0x50bbf90>

  File "/usr/lib/python2.7/dist-packages/wcs/workflows.py", line 538, in import_from_xml
   536         except:
   537             raise ValueError()
>  538         return cls.import_from_xml_tree(tree, include_id=include_id)
   539 
   540     @classmethod

  locals: 
     fd = <open file '<fdopen>', mode 'w+b' at 0x7f042590af60>
     tree = <xml.etree.ElementTree.ElementTree object at 0x7f042463ac10>
     include_id = False
     cls = <class 'wcs.workflows.Workflow'>

  File "/usr/lib/python2.7/dist-packages/wcs/admin/workflows.py", line 1894, in import_submit
  1892             reason = _(e)
  1893         except ValueError:
> 1894             error = True
  1895 
  1896         if error:

  locals: 
     fp = <open file '<fdopen>', mode 'w+b' at 0x7f042590af60>
     reason = None
     self = <wcs.admin.workflows.WorkflowsDirectory object at 0x23e2550>
     form = <wcs.qommon.form.Form object at 0xa471450>
     error = False

  File "/usr/lib/python2.7/dist-packages/wcs/admin/workflows.py", line 1857, in p_import
  1855                 return self.import_submit(form)
  1856             except ValueError:
> 1857                 pass
  1858 
  1859         get_response().breadcrumb.append( ('workflows/', _('Workflows')) )

  locals: 
     self = <wcs.admin.workflows.WorkflowsDirectory object at 0x23e2550>
     form = <wcs.qommon.form.Form object at 0xa471450>

  File "/usr/lib/pymodules/python2.7/quixote/directory.py", line 67, in _q_traverse
    65                 raise TraversalError
    66         elif hasattr(obj, '__call__'):
>   67             return obj()
    68         else:
    69             return obj

  locals: 
     component = 'import'
     self = <wcs.admin.workflows.WorkflowsDirectory object at 0x23e2550>
     obj = <bound method WorkflowsDirectory.p_import of <wcs.admin.workflows.WorkflowsDirectory object at 0x23e2550>>
     name = 'p_import'
     path = []

  File "/usr/lib/pymodules/python2.7/quixote/directory.py", line 63, in _q_traverse
    61         if path:
    62             if hasattr(obj, '_q_traverse'):
>   63                 return obj._q_traverse(path)
    64             else:
    65                 raise TraversalError

  locals: 
     component = 'workflows'
     self = <modules.backoffice.BackofficeRootDirectory object at 0x337c710>
     obj = <wcs.admin.workflows.WorkflowsDirectory object at 0x23e2550>
     name = None
     path = ['import']

  File "/usr/lib/pymodules/python2.7/quixote/directory.py", line 91, in _q_traverse
    89     def _q_traverse(self, path):
    90         self._q_access()
>   91         return super(AccessControlled, self)._q_traverse(path)
    92 
    93 

  locals: 
     path = ['workflows', 'import']
     self = <modules.backoffice.BackofficeRootDirectory object at 0x337c710>

  File "/usr/lib/python2.7/dist-packages/wcs/backoffice/root.py", line 78, in _q_traverse
    76                 pass
    77         get_response().add_javascript(['jquery.js', 'qommon.js', 'gadjo.js'])
>   78         return super(RootDirectory, self)._q_traverse(path)
    79 
    80     @classmethod

  locals: 
     path = ['workflows', 'import']
     self = <modules.backoffice.BackofficeRootDirectory object at 0x337c710>

  File "/usr/lib/pymodules/python2.7/quixote/directory.py", line 63, in _q_traverse
    61         if path:
    62             if hasattr(obj, '_q_traverse'):
>   63                 return obj._q_traverse(path)
    64             else:
    65                 raise TraversalError

  locals: 
     component = 'backoffice'
     self = <modules.root.AlternateRootDirectory object at 0x2f76590>
     obj = <modules.backoffice.BackofficeRootDirectory object at 0x337c710>
     name = 'backoffice'
     path = ['workflows', 'import']

  File "/usr/lib/pymodules/python2.7/extra-wcs-au-quotidien/modules/root.py", line 844, in _q_traverse
   842                     return redirect('%s%s/%s' % (base_url, f.category.url_name, uri_rest))
   843 
>  844             raise e
   845 
   846 

  locals: 
     path = ['backoffice', 'workflows', 'import']
     self = <modules.root.AlternateRootDirectory object at 0x2f76590>
     response = <qommon.http_response.HTTPResponse instance at 0x81284d0>

  File "/usr/lib/pymodules/python2.7/quixote/publish.py", line 253, in try_publish
   251                 permanent=True)
   252         components = path[1:].split('/')
>  253         output = self.root_directory._q_traverse(components)
   254         # The callable ran OK, commit any changes to the session
   255         self.finish_successful_request()

  locals: 
     path = '/backoffice/workflows/import'
     self = <publisher.WcsPublisher object at 0x2f765d0>
     request = <qommon.http_request.HTTPRequest instance at 0x8128e18>
     components = ['backoffice', 'workflows', 'import']

  File "/usr/lib/python2.7/dist-packages/wcs/qommon/publisher.py", line 623, in try_publish
   621         for extra_source in self.extra_sources:
   622             self.substitutions.feed(extra_source(self, request))
>  623         return Publisher.try_publish(self, request)
   624 
   625     def get_site_language(self):

  locals: 
     extra_source = <class 'modules.abelium_domino_vars.DominoVariables'>
     pystatsd = <module 'qommon.vendor.pystatsd' from '/usr/lib/python2.7/dist-packages/wcs/qommon/vendor/pystatsd.py'>
     request = <qommon.http_request.HTTPRequest instance at 0x8128e18>
     script_name = ''
     prefix = 'm'
     override_template_keys = {'m': 'mobile'}
     canonical_hostname = 'demarches.nancy.fr'
     self = <publisher.WcsPublisher object at 0x2f765d0>

  File "/usr/lib/python2.7/dist-packages/wcs/publisher.py", line 227, in try_publish
   225         if request.get_header('X_WCS_IFRAME_MODE', '') in ('true', 'yes'):
   226             request.response.iframe_mode = True
>  227         return QommonPublisher.try_publish(self, request)
   228 
   229     def get_object_visitors(self, object_key):

  locals: 
     self = <publisher.WcsPublisher object at 0x2f765d0>
     request = <qommon.http_request.HTTPRequest instance at 0x8128e18>

  File "/usr/lib/pymodules/python2.7/quixote/publish.py", line 281, in process_request
   279         except:
   280             # Some other exception, generate error messages to the logs, etc.
>  281             output = self.finish_failed_request()
   282         output = self.filter_output(request, output)
   283         self.logger.log_request(request, start_time)

  locals: 
     start_time = 1478700919.84975
     request = <qommon.http_request.HTTPRequest instance at 0x8128e18>
     self = <publisher.WcsPublisher object at 0x2f765d0>

  File "/usr/lib/python2.7/dist-packages/wcs/qommon/publisher.py", line 932, in process
   930     def process(self, stdin, env):
   931         request = HTTPRequest(stdin, env)
>  932         self.response = self.process_request(request)
   933         return self.response
   934 

  locals: 
     self = <publisher.WcsPublisher object at 0x2f765d0>
     stdin = <open file '<socket>', mode 'r' at 0x31508a0>
     request = <qommon.http_request.HTTPRequest instance at 0x8128e18>
     env = {'HTTP_REFERER': 'https://demarches.nancy.fr/backoffice/workflows/', 'SCRIPT_NAME': '', 'REQUEST_METHOD': 'POST', 'PATH_INFO': '/backoffice/workflows/import', 'SERVER_PROTOCOL': 'HTTP/1.1', 'QUERY_STRING': '', 'CONTENT_LENGTH': '31390', 'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0', 'HTTP_CONNECTION': 'keep-alive', 'HTTP_COOKIE': 'publik_portal_agent_url=https%3A%2F%2Fportail-agent.nancy.fr%2F; publik_portal_agent_title=Portail%20agent; wcs-257271="8f097cc7db958e8b"; A2_OPENED_SESSION=1', 'SERVER_NAME': 'demarches.nancy.fr', 'REMOTE_ADDR': '80.12.92.47', 'SERVER_PORT': '443', 'DOCUMENT_ROOT': '/etc/nginx/html', 'CONTENT_TYPE': 'multipart/form-data; boundary=---------------------------1160534339443424881772538709', 'DOCUMENT_URI': '/backoffice/workflows/import', 'REMOTE_USER': '2', 'HTTP_HOST': 'demarches.nancy.fr', 'HTTPS': 'yes', 'HTTP_CONTENT_TYPE': 'multipart/form-data; boundary=---------------------------116053433944342488177
 2538709', 'HTTP_CONTENT_LENGTH': '31390', 'REQUEST_URI': '/backoffice/workflows/import', 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'REMOTE_PORT': '59420', 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.5', 'SCGI': '1', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate'}

  File "/usr/lib/pymodules/python2.7/quixote/server/scgi_server.py", line 27, in handle_connection
    25             env['PATH_INFO'] = path[len(prefix):] + env.get('PATH_INFO', '')
    26 
>   27         response = self.publisher.process(input, env)
    28         try:
    29             response.write(output)

  locals: 
     output = <open file '<socket>', mode 'w' at 0x47bec90>
     self = <qommon.scgi_server.QommonHandler instance at 0x32875f0>
     conn = <socket object, fd=46, family=2, type=1, protocol=0>
     env = {'HTTP_REFERER': 'https://demarches.nancy.fr/backoffice/workflows/', 'SCRIPT_NAME': '', 'REQUEST_METHOD': 'POST', 'PATH_INFO': '/backoffice/workflows/import', 'SERVER_PROTOCOL': 'HTTP/1.1', 'QUERY_STRING': '', 'CONTENT_LENGTH': '31390', 'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0', 'HTTP_CONNECTION': 'keep-alive', 'HTTP_COOKIE': 'publik_portal_agent_url=https%3A%2F%2Fportail-agent.nancy.fr%2F; publik_portal_agent_title=Portail%20agent; wcs-257271="8f097cc7db958e8b"; A2_OPENED_SESSION=1', 'SERVER_NAME': 'demarches.nancy.fr', 'REMOTE_ADDR': '80.12.92.47', 'SERVER_PORT': '443', 'DOCUMENT_ROOT': '/etc/nginx/html', 'CONTENT_TYPE': 'multipart/form-data; boundary=---------------------------1160534339443424881772538709', 'DOCUMENT_URI': '/backoffice/workflows/import', 'REMOTE_USER': '2', 'HTTP_HOST': 'demarches.nancy.fr', 'HTTPS': 'yes', 'HTTP_CONTENT_TYPE': 'multipart/form-data; boundary=---------------------------116053433944342488177
 2538709', 'HTTP_CONTENT_LENGTH': '31390', 'REQUEST_URI': '/backoffice/workflows/import', 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'REMOTE_PORT': '59420', 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.5', 'SCGI': '1', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate'}
     input = <open file '<socket>', mode 'r' at 0x31508a0>

  File "/usr/lib/python2.7/dist-packages/wcs/qommon/scgi_server.py", line 35, in handle_connection
    33     def handle_connection(self, conn):
    34         self.number_of_connection_handled = self.number_of_connection_handled + 1
>   35         quixote.server.scgi_server.QuixoteHandler.handle_connection(self, conn)
    36         # input, output and conn are closed, long running jobs could be done
    37         # here.

  locals: 
     self = <qommon.scgi_server.QommonHandler instance at 0x32875f0>
     conn = <socket object, fd=46, family=2, type=1, protocol=0>

  File "/usr/lib/pymodules/python2.7/scgi/scgi_server.py", line 71, in serve
    69             conn.setblocking(1)
    70             os.close(fd)
>   71             self.handle_connection(conn)
    72 
    73 

  locals: 
     self = <qommon.scgi_server.QommonHandler instance at 0x32875f0>
     fd = 45
     conn = <socket object, fd=46, family=2, type=1, protocol=0>

  File "/usr/lib/pymodules/python2.7/scgi/scgi_server.py", line 194, in spawn_child
   192                              # the connection in the child
   193             os.close(child_fd)
>  194             self.handler_class(parent_fd).serve()
   195             sys.exit(0)
   196         else:

  locals: 
     self = <qommon.scgi_server.SCGIServer instance at 0x2eae7e8>
     pid = 0
     flags = 2
     child_fd = 33
     parent_fd = 32
     conn = <socket._socketobject object at 0x2fb0830>

  File "/usr/lib/pymodules/python2.7/scgi/scgi_server.py", line 308, in delegate_request
   306             # start more children if we haven't met max_children limit
   307             if len(self.children) < self.max_children:
>  308                 self.spawn_child(conn)
   309 
   310             # Start blocking inside select.  We might have reached

  locals: 
     e = []
     w = []
     self = <qommon.scgi_server.SCGIServer instance at 0x2eae7e8>
     r = [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44]
     timeout = 0
     child_fd = 33
     ready_byte = ''
     conn = <socket._socketobject object at 0x2fb0830>

  File "/usr/lib/pymodules/python2.7/scgi/scgi_server.py", line 327, in serve_on_socket
   325             try:
   326                 conn, addr = self.socket.accept()
>  327                 self.delegate_request(conn)
   328                 conn.close()
   329             except socket.error, e:

  locals: 
     s = <socket._socketobject object at 0x2fb0750>
     addr = ('127.0.0.1', 40597)
     conn = <socket._socketobject object at 0x2fb0830>
     self = <qommon.scgi_server.SCGIServer instance at 0x2eae7e8>

  File "/usr/lib/pymodules/python2.7/scgi/scgi_server.py", line 336, in serve
   334 
   335     def serve(self):
>  336         self.serve_on_socket(self.get_listening_socket())
   337 
   338 

  locals: 
     self = <qommon.scgi_server.SCGIServer instance at 0x2eae7e8>

  File "/usr/lib/python2.7/dist-packages/wcs/qommon/scgi_server.py", line 74, in run
    72     s = SCGIServer(create_handler, host=host, port=port,
    73                                max_children=max_children)
>   74     s.serve()
    75 
    76 

  locals: 
     create_handler = <function create_handler at 0x27e2848>
     handler_connection_limit = -1
     max_children = 16
     create_publisher = <bound method type.create_publisher of <class 'publisher.WcsPublisher'>>
     host = 'localhost'
     script_name = None
     s = <qommon.scgi_server.SCGIServer instance at 0x2eae7e8>
     spawn_cron = True
     port = 3001

  File "/usr/lib/python2.7/dist-packages/wcs/ctl/start.py", line 138, in execute
   136 
   137         try:
>  138             run_function(publisher.WcsPublisher.create_publisher, **run_kwargs)
   139         except socket.error, e:
   140             self.del_pid()

  locals: 
     publisher = <module 'publisher' from '/usr/lib/python2.7/dist-packages/wcs/publisher.pyc'>
     base_app_dir = '/var/lib/wcs-au-quotidien'
     args = []
     tenant_path = '/var/lib/wcs-au-quotidien/demarches.alfortville.fr'
     self = <wcs.ctl.start.CmdStart object at 0x1d0b790>
     hostname = 'demarches.alfortville.fr'
     pub = <publisher.WcsPublisher object at 0x32a0750>
     sub_options = <Values at 0x1d57638: {'http': False, 'silent': False, 'app_dir': None, 'extra': ['/usr/lib/pymodules/python2.7/extra-wcs-au-quotidien/'], 'max_children': None, 'handler_connection_limit': None, 'script_name': None, 'daemonize': False, 'data_dir': None, 'port': 3001, 'pidfile': None}>
     run_function = <function run at 0x1d2a500>
     base_options = <Values at 0x1d0f1b8: {'configfile': '/etc/wcs/wcs-au-quotidien.cfg'}>
     run_kwargs = {'max_children': 16, 'port': 3001, 'spawn_cron': True}

  File "/usr/lib/python2.7/dist-packages/wcs/qommon/ctl.py", line 69, in run
    67             for i, extra in enumerate(sub_options.extra):
    68                 self.config.set("extra", "cmd_line_extra_%d" % i, extra)
>   69         return self.execute(base_options, sub_options, args)
    70 
    71     def parse_args(self, args):

  locals: 
     extra = '/usr/lib/pymodules/python2.7/extra-wcs-au-quotidien/'
     i = 0
     self = <wcs.ctl.start.CmdStart object at 0x1d0b790>
     args = []
     sub_options = <Values at 0x1d57638: {'http': False, 'silent': False, 'app_dir': None, 'extra': ['/usr/lib/pymodules/python2.7/extra-wcs-au-quotidien/'], 'max_children': None, 'handler_connection_limit': None, 'script_name': None, 'daemonize': False, 'data_dir': None, 'port': 3001, 'pidfile': None}>
     base_options = <Values at 0x1d0f1b8: {'configfile': '/etc/wcs/wcs-au-quotidien.cfg'}>

  File "/usr/lib/python2.7/dist-packages/wcs/qommon/ctl.py", line 159, in run
   157         command_class = self.get_commands()[command]
   158         cmd = command_class()
>  159         return cmd.run(args, options)
   160 

  locals: 
     cmd = <wcs.ctl.start.CmdStart object at 0x1d0b790>
     args = ['--extra', '/usr/lib/pymodules/python2.7/extra-wcs-au-quotidien/']
     self = <wcs.qommon.ctl.Ctl object at 0x193f3d0>
     command_class = <class 'wcs.ctl.start.CmdStart'>
     command = 'start'
     cmd_prefix = 'wcs.ctl'
     options = <Values at 0x1d0f1b8: {'configfile': '/etc/wcs/wcs-au-quotidien.cfg'}>

  File "/usr/sbin/wcsctl", line 8, in <module>
     6 
     7 ctl = wcs.qommon.ctl.Ctl(cmd_prefixes=['wcs.ctl'])
>    8 ctl.run(sys.argv[1:])
     9 

  locals: 
     wcs = <module 'wcs' from '/usr/lib/python2.7/dist-packages/wcs/__init__.pyc'>
     __builtins__ = <module '__builtin__' (built-in)>
     __file__ = '/usr/sbin/wcsctl'
     __package__ = None
     sys = <module 'sys' (built-in)>
     ctl = <wcs.qommon.ctl.Ctl object at 0x193f3d0>
     __name__ = '__main__'
     __doc__ = None

Form:
_form_id        'b98f9f8e220d9340'
file            <Upload at 8128ea8: nancy-en-direct.wcs>
submit          'Importer le workflow'
url             ''

Cookies:
A2_OPENED_SESSION '1'
publik_portal_agent_title 'Portail%20agent'
publik_portal_agent_url 'https%3A%2F%2Fportail-agent.nancy.fr%2F'
wcs-257271      '8f097cc7db958e8b'

Environment:
CONTENT_LENGTH  '31390'
CONTENT_TYPE    'multipart/form-data; boundary=---------------------------1160534339443424881772538709'
DOCUMENT_ROOT   '/etc/nginx/html'
DOCUMENT_URI    '/backoffice/workflows/import'
HTTPS           'yes'
HTTP_ACCEPT     'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
HTTP_ACCEPT_ENCODING 'gzip, deflate'
HTTP_ACCEPT_LANGUAGE 'en-US,en;q=0.5'
HTTP_CONNECTION 'keep-alive'
HTTP_CONTENT_LENGTH '31390'
HTTP_CONTENT_TYPE 'multipart/form-data; boundary=---------------------------1160534339443424881772538709'
HTTP_COOKIE     'publik_portal_agent_url=https%3A%2F%2Fportail-agent.nancy.fr%2F; publik_portal_agent_title=Portail%20agent; wcs-257271="8f097cc7db958e8b"; A2_OPENED_SESSION=1'
HTTP_HOST       'demarches.nancy.fr'
HTTP_REFERER    'https://demarches.nancy.fr/backoffice/workflows/'
HTTP_USER_AGENT 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0'
PATH_INFO       '/backoffice/workflows/import'
QUERY_STRING    ''
REMOTE_ADDR     '80.12.92.47'
REMOTE_PORT     '59420'
REMOTE_USER     '2'
REQUEST_METHOD  'POST'
REQUEST_URI     '/backoffice/workflows/import'
SCGI            '1'
SCRIPT_NAME     ''
SERVER_NAME     'demarches.nancy.fr'
SERVER_PORT     '443'
SERVER_PROTOCOL 'HTTP/1.1'

Files

nancy-en-direct.wcs (30.1 KB) nancy-en-direct.wcs Josué Kouka, 09 November 2016 03:25 PM
0001-formdefs-allow-setting-a-workflow-being-imported-139.patch (1008 Bytes) 0001-formdefs-allow-setting-a-workflow-being-imported-139.patch Frédéric Péters (de retour le 10/10), 09 November 2016 03:30 PM

Associated revisions

Revision 7b640d0d (diff)
Added by Frédéric Péters (de retour le 10/10) almost 6 years ago

formdefs: allow setting a workflow being imported (#13917)

When a workflow is being imported it doesn't have an id and couldn't
therefore be attached to a formdef; however there are internal workflow
formdefs (for the workflow variables) and they need to be associated to
the being-imported workflow.

History

#1

Updated by Josué Kouka almost 6 years ago

#3

Updated by Thomas Noël almost 6 years ago

Ack

#4

Updated by Frédéric Péters (de retour le 10/10) almost 6 years ago

  • Status changed from En cours to Résolu (à déployer)
commit 7b640d0dd8f63774a8ac636a4ede3ff3759cabdf
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Wed Nov 9 15:24:48 2016 +0100

    formdefs: allow setting a workflow being imported (#13917)

    When a workflow is being imported it doesn't have an id and couldn't
    therefore be attached to a formdef; however there are internal workflow
    formdefs (for the workflow variables) and they need to be associated to
    the being-imported workflow.
#5

Updated by Frédéric Péters (de retour le 10/10) almost 6 years ago

  • Target version set to v1.65
#6

Updated by Frédéric Péters (de retour le 10/10) almost 6 years ago

  • Status changed from Résolu (à déployer) to Fermé

Also available in: Atom PDF