Missing Save button from Form/Web Form/tasks

Made a fresh erpnext install using sudo python install.py --production

No Save button :confused: as indicated here

Where to look for culprit?

ERPNext: v10.0.14 (master)
Frappe Framework: v10.0.14 (master)
OS: Debian GNU/Linux 8.10 (jessie)

Couple of errors fromlogs:

redis-cache.log:[5843] 24 Jan 11:32:42.290 # Redis can’t set maximum open files to 10032 because of OS error: Operation not permitted.

and

Traceback (most recent call last):
File “/usr/lib/python2.7/runpy.py”, line 162, in _run_module_as_main
main”, fname, loader, pkg_name)
File “/usr/lib/python2.7/runpy.py”, line 72, in _run_code
exec code in run_globals
File “/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 94, in
main()
File “/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 18, in main
click.Group(commands=commands)(prog_name=‘bench’)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 722, in call
Traceback (most recent call last):
File “/usr/lib/python2.7/runpy.py”, line 162, in _run_module_as_main
return self.main(*args, **kwargs)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 697, in main
rv = self.invoke(ctx)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 535, in invoke
return callback(*args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/commands/scheduler.py”, line 157, in start_worker
start_worker(queue)
File “/home/frappe/frappe-bench/apps/frappe/frappe/utils/background_jobs.py”, line 139, in start_worker
main”, fname, loader, pkg_name)
File “/usr/lib/python2.7/runpy.py”, line 72, in _run_code
exec code in run_globals
File “/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 94, in
main()
File “/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 18, in main
click.Group(commands=commands)(prog_name=‘bench’)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 722, in call
return self.main(*args, **kwargs)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 697, in main
rv = self.invoke(ctx)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 535, in invoke
return callback(*args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/commands/scheduler.py”, line 157, in start_worker
Traceback (most recent call last):
File “/usr/lib/python2.7/runpy.py”, line 162, in _run_module_as_main
main”, fname, loader, pkg_name)
File “/usr/lib/python2.7/runpy.py”, line 72, in _run_code
exec code in run_globals
File “/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 94, in
main()
File “/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 18, in main
click.Group(commands=commands)(prog_name=‘bench’)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 722, in call
return self.main(*args, **kwargs)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 697, in main
rv = self.invoke(ctx)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py”, line 535, in invoke
return callback(*args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/commands/scheduler.py”, line 157, in start_worker
start_worker(queue)
File “/home/frappe/frappe-bench/apps/frappe/frappe/utils/background_jobs.py”, line 139, in start_worker
Worker(queues, name=get_worker_name(queue)).work()
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/rq/worker.py”, line 504, in work
start_worker(queue)
File “/home/frappe/frappe-bench/apps/frappe/frappe/utils/background_jobs.py”, line 139, in start_worker
Worker(queues, name=get_worker_name(queue)).work()
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/rq/worker.py”, line 504, in work
Worker(queues, name=get_worker_name(queue)).work()
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/rq/worker.py”, line 504, in work
self.register_death()
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/rq/worker.py”, line 302, in register_death
p.execute()
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/redis/client.py”, line 2894, in execute
self.register_death()
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/rq/worker.py”, line 302, in register_death
p.execute()
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/redis/client.py”, line 2894, in execute
return execute(conn, stack, raise_on_error)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/redis/client.py”, line 2749, in _execute_transaction
connection.send_packed_command(all_cmds)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/redis/connection.py”, line 585, in send_packed_command
return execute(conn, stack, raise_on_error)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/redis/client.py”, line 2749, in _execute_transaction
connection.send_packed_command(all_cmds)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/redis/connection.py”, line 585, in send_packed_command
self.register_death()
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/rq/worker.py”, line 302, in register_death
p.execute()
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/redis/client.py”, line 2894, in execute
return execute(conn, stack, raise_on_error)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/redis/client.py”, line 2749, in _execute_transaction
connection.send_packed_command(all_cmds)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/redis/connection.py”, line 585, in send_packed_command
self.connect()
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/redis/connection.py”, line 489, in connect
raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 111 connecting to localhost:11000. Connection refused.
self.connect()
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/redis/connection.py”, line 489, in connect
raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 111 connecting to localhost:11000. Connection refused.
self.connect()
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/redis/connection.py”, line 489, in connect
raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 111 connecting to localhost:11000. Connection refused.

Maybe somewhat related to this issue .

UPDATE

After fresh install I also can’t change the fieldtype. Mouse cursor apears as no-symbol-hi when hovering over table values (logged in as Administrator or first registered used).

You can’t edit the web form in the production if “is standard” is checked

Can I uncheck “is standard”? Where can I find it?

The save button is only there when in developer mode: open sites/site1.local/site_config.json and add

"developer_mode": 1,

Then, restart bench. Without developer mode, it looks like this

and in developer mode like this:

Hope this helps.

Thanks, that worked.

Hi Iasalesi! this is a bug or is the correct way? Because in production mode the customer if not acces at the save button.

Thanks for advance!

1 Like

Good question :wink: I think it is not a bug, because changing the web forms might be considered dev only (to not expose unwanted contents)…

It sounds strange if this is correct behaviour. Of course you need to build web forms even if you are in production if there comes a need for a form.
I’m also here searching SAVE button to complete a form (ERPNext version 12).

If it is not a bug, it must be extremely illogical architectural planning. What is the point of showing the possibility of the web forms to people in admin if you can’t actually save those forms that you can build? We were building web forms, following the guide / manual of ERPNext (that says nothing that you would need some special tricks for the saving process of it) and then realised in the end that there was no SAVE button and lost all the work what we did.

And the other reasoning here is that web forms is something quite universal for many different systems and you definitely need to build those for your business website, ecommerce, marketing & sales, so why it would be a hidden function? It makes absolutely no sense at all. Also it would be mentioned in the manual then, right?

If the purpose would be that people with reduced user permissions should not access it, then it would be possible to just adjust the user permissions accordingly.

EDIT: we have opened an issue / bug report in Github about this:
https://github.com/frappe/erpnext/issues/18800

Hey, this hasn’t been like this since V11.

You can create new forms and save them.

You just have to have the permission to Manage Web Page seems to me.

Greetings

1 Like

Thanks Federico,
we do have ALL the permissions as the main administrator. I just double checked it as well.
Only a “Supplier” missing as a permission that should absolutely not effect on this.

Hi, i am in V11, i dont know if be in V12.

Check the permissions manager for de Web Form doctype, if you have validated save permissions.

1 Like

It shows like this:

Hello!
I made ANOTHER USER with exactly the same permissions, looking side-by-side and it works! So called MAIN user that was done in the installation of the ERPNext was the one that DID NOT work.
This could actually solve some other issues too, need to try. Still it is a mystery why the main user can’t do the same.

resolved my issue, thx

I have added new rule
doctype : web form
role : system manager

level : 0

Permissions: all checked.

without enabling developer mode.

1 Like

We’re experiencing the same issue on our v12.1.6 production install on Ubuntu. I have tried all the fixes mentioned above in the thread. Added and assigned the system manager role, created another user with the same permissions, created another user with only the management level permissions, looked for the “is standard” field but was unable to locate it. Help on this may be the fix :wink: I have verified the web form permissions to be all selected. I will now attempt to switch to development mode to see if this changes the behavior and introduces the “save” button.

Yes only restarting Bench in “Developer_mode” :1, solves this issue.

I agree with the user above that commented on the fact that this is a significant issue that would be very useful to be included with as a “permission” in production mode. Would someone from ERPNext comment on this post to provide some insight?

Cheers

This is “unchecked” on the doc type Web Form. Is this the location you are referring to?
Actually, I was wrong. it was set to “check”.
I was able to resolve the problem in the following way.

1- Restart the server in Developer Mode for that site.
~edit site_config.json, file for that specific site, by adding the following “developer_mode”: 1,
~run the command “Bench Restart” from within the frappe-bench dir

2 -Edit the DocType “Web Form” master doc
~I removed the Field Table Row Label=“Is Standard”, Type=“Check” and saved the DocType

3 - Restart the server in Production Mode for that site.
~edit site config.json file, for that specific site, by removing the “developer_mode”: 1, line.
~run the command “Bench Restart” from within the frappe-bench dir

4 -logged in as all test users and was able to verify that the “Save” button is now available.

Because I’m new to this, I’m not sure if there is a better way than to completely delete the Field Row as I did in step 2. Is there just another type that I can set it too?