[Frappe App] Google Calendar Integration

@tara_antonius

Seems issue with keyring package.

from frappe-bench ./env/bin/pip install keyring

i did install the keyring by using ./env/bin/pip install keyring
however the problem persists, it shown that my system dont have compatible keyring backend.

for Information i am installing this to ubuntu 14.04 server and installed all the necessary package that you mentioned.
anything that i miss?

Is ERPNext planning on adopting this as an official app? Also, I uninstalled it, and can’t reinstall because it seems like there are entries in my database that halt the re-install process when it’s trying to create new info, I guess?

+1 for this integration. Many thanks for the effort.

1 Like

It will be much better to modify this app to support exporting to any calendar rather than gmail calendar only.
I don’t know if that is possible or not.

Regards,
Ahmed

1 Like

I tried to install and already install dependence like Keyring. However, there is still error: No module named keyring_storage

Traceback (most recent call last):
File “/home/frappe/frappe-bench/apps/frappe/frappe/app.py”, line 55, in application
response = frappe.handler.handle()
File “/home/frappe/frappe-bench/apps/frappe/frappe/handler.py”, line 19, in handle
execute_cmd(cmd)
File “/home/frappe/frappe-bench/apps/frappe/frappe/handler.py”, line 36, in execute_cmd
ret = frappe.call(method, **frappe.form_dict)
File “/home/frappe/frappe-bench/apps/frappe/frappe/init.py”, line 879, in call
return fn(*args, **newargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/desk/page/applications/applications.py”, line 79, in install_app
frappe.installer.install_app(name)
File “/home/frappe/frappe-bench/apps/frappe/frappe/installer.py”, line 131, in install_app
sync_for(name, force=True, sync_everything=True, verbose=verbose)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/sync.py”, line 43, in sync_for
import_file_by_path(doc_path, force=force)
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/import_file.py”, line 54, in import_file_by_path
import_doc(doc, force=force, data_import=data_import, pre_process=pre_process)
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/import_file.py”, line 122, in import_doc
doc.insert()
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 231, in insert
self.run_post_save_methods()
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 728, in run_post_save_methods
self.run_method(“on_update”)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 661, in run_method
return Document.hook(fn)(self, *args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 839, in composer
return composed(self, method, *args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 822, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File “/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py”, line 655, in
fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py”, line 148, in on_update
self.run_module_method(“on_doctype_update”)
File “/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py”, line 157, in run_module_method
module = load_doctype_module(self.name, self.module)
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/init.py”, line 64, in load_doctype_module
doctype_python_modules[key] = frappe.get_module(get_module_name(doctype, module, prefix, suffix))
File “/home/frappe/frappe-bench/apps/frappe/frappe/init.py”, line 643, in get_module
return importlib.import_module(modulename)
File “/usr/lib/python2.7/importlib/init.py”, line 37, in import_module
import(name)
File “/home/frappe/frappe-bench/apps/gcal/gcal/gcal_sync/doctype/sync_configuration/sync_configuration.py”, line 19, in
from oauth2client.keyring_storage import Storage
ImportError: No module named keyring_storage

from frappe-bench run ./env/bin/pip install keyring hopefully this will work

@makarand_b can you check this?

@saurabh6790 I had problems installing your app as well.
I was meaning to get in touch but have been busy with work.
I got the same error message as @Tai_Tran_Hong on my first attempt to install via frappe UI.
On the second attempt I would get a pop up in frappe saying:
Duplicate name Module Def GCal Sync
or
frappe.exceptions.DuplicateEntryError: (u'Module Def', u'GCal Sync', IntegrityError(1062, "Duplicate entry 'GCal Sync' for key 'PRIMARY'"))
via bench command line.
So I would bench uninstall-app gcal and go around in circles.

I would really like to install the app so if anyone else has come across this issue any info on how to resolve the errors would be great.

I tried this several time, including uninstall the whole and install again but the problem still happen.

got the same problem…

hi @saurabh6790, does this app work?
I want to install it but I see many people have problems

is this app based on the standards caldav and carddav?
will this be included in the core?

tx

1 Like

Did we ever get anywhere with this?

Is Google Calendar sync working / tested working?

1 Like

I never managed to get it to work.

Did anybody? It’s such a shame that projects like this often fall by the wayside…

I was thinking that since ERPNext is already running on a server, perhaps the trick would be to run a dedicated Calendar Server (Events and Reminders) and Contacts as well.

Radicale, is an option that could be integrated…
I am working on finding out ways to get this up and going, so that not only is Google Calendar Sync enabled, but supporting any device such as Android or iPhone.

Hi

You may want to see what NextCloud (Owncloud) does in this respect as in their recent versions a calendar and contacts synccable to Android phone etc via caldav, cardav are all present.

Thanks for the heads up! Will look into it

I dont really know if looking at nextclould would really help this issue. Their code is PHP and while we have a few clients using and it works well i think something like radicale would be a better option. It is python the only thing that would have to really be solved is the reverse proxying the server as it most likely will want port 80 or 443.

Yes whether there’s anything that can be reused I dunno. Nextcloud is
builtin mysql and PHP rather than Python but it may still be useful

Julian

It is possible.

Here are other python implementations of radicale.

flask/werkzeug

screenshots : https://apps.sandstorm.io/app/8kr4rvyrggvzfvc160htzdt4u5rfvjc2dgdn27n5pt66mxa40m1h

django

2 Likes