Giter VIP home page Giter VIP logo

modoboa-contacts's Introduction

Modoboa (website)

workflow codecov Latest version on Pypi

Modoboa is a mail hosting and management platform including a modern and simplified Web User Interface. It provides useful components such as an administration panel and webmail.

Modoboa integrates with well known software such as Postfix or Dovecot. A SQL database (MySQL, PostgreSQL or SQLite) is used as a central point of communication between all components.

Modoboa is developed with modularity in mind, expanding it is really easy. Actually, all current features are extensions.

It is written in Python 3 and uses the Django, jQuery and Bootstrap frameworks.

Main features

Documentation

A detailed documentation will help you to install, use or extend Modoboa.

Demo Installation

If you want to try out Modoboa, check out our demo installation.

Getting help

Modoboa is a free software and is totally open source BUT you can hire the team if you need professional services. More information here: https://modoboa.org/en/professional-services/.

Contracting a support plan if a good way to ensure your installation stays available and up-to-date and it will help the project to be sustainable :)

Community

If you have any questions, you can get help through the following platforms:

  • Discord
  • Github: open an issue if you found a bug

External code

The following external libraries are provided with Modoboa:

modoboa-contacts's People

Contributors

dborg89 avatar dependabot-preview[bot] avatar dependabot[bot] avatar kryskool avatar sketchni avatar spitfireap avatar tonioo avatar vthg2themax avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

modoboa-contacts's Issues

django-filter version mismatch

During pip install we get warning message:

modoboa-contacts 0.5.0 has requirement django-filter==1.0.4, but you'll have django-filter 1.1.0 which is incompatible.

But another modoboa part needs django-filter 1.1.0

Centralized address book to be imported to per user contacts

Hi,

A company may have multiple departments and teams with email aliases for all sorts of purposes. I'd like to have a company based address book with all member emails and aliases that can be shared to each user(in Modoboa contacts). Not sure how to create a centralized address book yet, but Modoboa contacts seems not able to load contacts from file or query from external source. Just checking in to see if this is even doable? Thx

Cheers,
YiMin

IOError at /contacts/

Hi there,

My first and only user tried to used contacts and got this! What's up?

regards,
JBR


Request Method: | GET
-- | --
https://mail.nerderlands.net/contacts/
1.11.15
IOError
Error reading /srv/modoboa/env/local/lib/python2.7/site-packages/modoboa_contacts/../frontend/webpack-stats.json. Are you sure webpack has generated the file and the path is correct?
/srv/modoboa/env/local/lib/python2.7/site-packages/webpack_loader/loader.py in _load_assets, line 32
/usr/bin/uwsgi-core
2.7.13
['.',  '',  '/srv/modoboa/env/lib/python2.7',  '/srv/modoboa/env/lib/python2.7/plat-x86_64-linux-gnu',  '/srv/modoboa/env/lib/python2.7/lib-tk',  '/srv/modoboa/env/lib/python2.7/lib-old',  '/srv/modoboa/env/lib/python2.7/lib-dynload',  '/usr/lib/python2.7',  '/usr/lib/python2.7/plat-x86_64-linux-gnu',  '/usr/lib/python2.7/lib-tk',  '/srv/modoboa/env/local/lib/python2.7/site-packages',  '/srv/modoboa/env/lib/python2.7/site-packages']
Tue, 7 Aug 2018 16:20:35 +0200


Error when adding a contact via webmail

issue

When i try to add a contact via the webmail, nothing seem happen when i click on save button.

The POST resquest to /api/v1/contacts/ return this 500 error (in debug mode):

500 Server Error: Internal Server Error for url: https://mail.virtit.fr/radicale/user1@XXXXXXXXXXX/contacts/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.vcf

And radicale return :

ERROR: An exception occurred during PUT request on 'user1@XXXXXXXXXXX/contacts/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.vcf': local variable 'vobj' referenced before assignment

Paradoxically, the contact is create in the radicale and appears in the webmail after about 60sec (my synchronization frequency).

It happen only on my account.
I tried to delete the values from the address book in the database and delete the radical contact files, and the problem persists.

Configuration

Modoboa 1.12.1
Amavis frontend 1.2.3
Contacts 0.7.3
DMARC tools 1.1.0
PDF credentials 1.3.1
Postfix autoreply 1.5.1
Radicale management 1.3.6
Sieve filters 1.4.1
Statistics 1.4.1
Webmail 1.5.0

OS : Debian stretch
DB : Mysql

Contacts name with special characters don't work

Impacted versions

  • Modoboa: Latest - 1.13.0
  • installer used: Yes
  • Webserver: Nginx

Steps to reproduce

Create a new contact using the web interface and put this character somewhere in the name "é" , when the page with pull data from the rest API using https://<server_address>/api/v1/address-books/sync_from_cdav/ it will reply with 500 server error.

I enabled debug, browsed to sync_from_cdav and this is what I could see: pastebin

However !

It seems like radicale is doing just fine, I can sync the contact with the special character to my phone and to my other webmail.

Let me know if you need additional info !

Thanks!

Unable to use contacts module

Hi,

setting up the database tables and installing the contacts application for modoboa went fine but an error rises when modifying the setting.py file with
from modoboa_contacts import settings as modoboa_contacts_settings modoboa_contacts_settings.apply(globals())

Here is the output log:

SyntaxError: invalid syntax
Wed Nov  8 15:40:59 2017 - unable to load app 0 (mountpoint='mail.domain.tld|') (callable not found or import error)
Wed Nov  8 15:40:59 2017 - --- no python application found, check your startup logs for errors ---
mail.domin.tld [pid: 22513|app: -1|req: -1/5] 165.225.76.124 () {52 vars in 990 bytes} [Wed Nov  8 15:40:59 2017] GET / => generated 21 bytes in 2 msecs (HTTP/2.0 500) 2 headers in 83 bytes (0 switches on core 0)
Traceback (most recent call last):
  File "./instance/wsgi.py", line 16, in <module>
    application = get_wsgi_application()
  File "/home/modoboa/env/local/lib/python2.7/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
    django.setup(set_prefix=False)
  File "/home/modoboa/env/local/lib/python2.7/site-packages/django/__init__.py", line 22, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/home/modoboa/env/local/lib/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__
    self._setup(name)
  File "/home/modoboa/env/local/lib/python2.7/site-packages/django/conf/__init__.py", line 41, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/modoboa/env/local/lib/python2.7/site-packages/django/conf/__init__.py", line 97, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "./instance/settings.py", line 14
    from modoboa_contacts import settings as modoboa_contacts_settings modoboa_contacts_settings.apply(globals())

Of course removing from modoboa_contacts import settings as modoboa_contacts_settings modoboa_contacts_settings.apply(globals()) make modobo working except contact application.

The import settings were added in top of the file as indicated (which seems very logic for python).

I am running modoboa 1.9.1 and modoboa-contacts 0.4.0, am I missing a dependency ?

CardDAV synchronization

Add the possibility to synchronize contacts with a remote CardDAV address book (using Radicale).

IOError at /contacts/

I already enabled DEBUG. I will first give my server info and then the error that I receive.

screen shot 2017-11-12 at 20 38 13

and here is the error from the copy & paste field:

Environment:

Request Method: GET
Request URL: https://example.com/contacts/

Django Version: 1.10.8
Python Version: 2.7.13
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.sites',
'django.contrib.staticfiles',
'reversion',
'ckeditor',
'ckeditor_uploader',
'rest_framework',
'rest_framework.authtoken',
'modoboa',
'modoboa.core',
'modoboa.lib',
'modoboa.admin',
'modoboa.relaydomains',
'modoboa.limits',
'modoboa.parameters',
'modoboa_pdfcredentials',
'modoboa_postfix_autoreply',
'modoboa_sievefilters',
'modoboa_stats',
'modoboa_webmail',
'modoboa_contacts',
'webpack_loader')
Installed Middleware:
('x_forwarded_for.middleware.XForwardedForMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'modoboa.core.middleware.LocalConfigMiddleware',
'modoboa.lib.middleware.AjaxLoginRedirect',
'modoboa.lib.middleware.CommonExceptionCatcher',
'modoboa.lib.middleware.RequestCatcherMiddleware')

Traceback:

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
42. response = get_response(request)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _legacy_get_response
249. response = self._get_response(request)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
217. response = self.process_exception_by_middleware(e, request)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
215. response = response.render()

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/response.py" in render
109. self.content = self.rendered_content

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/response.py" in rendered_content
86. content = template.render(context, self._request)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/backends/django.py" in render
66. return self.template.render(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/base.py" in render
208. return self._render(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/base.py" in _render
199. return self.nodelist.render(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render
174. return compiled_parent._render(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/base.py" in _render
199. return self.nodelist.render(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render
174. return compiled_parent._render(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/base.py" in _render
199. return self.nodelist.render(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render
70. result = block.nodelist.render(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render
315. return nodelist.render(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/django/template/library.py" in render
203. output = self.func(*resolved_args, **resolved_kwargs)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/webpack_loader/templatetags/webpack_loader.py" in render_bundle
12. tags = utils.get_as_tags(bundle_name, extension=extension, config=config, attrs=attrs)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/webpack_loader/utils.py" in get_as_tags
45. bundle = _get_bundle(bundle_name, extension, config)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/webpack_loader/utils.py" in _get_bundle
23. bundle = get_loader(config).get_bundle(bundle_name)

File "/srv/modoboa/env/local/lib/python2.7/site-packages/webpack_loader/loader.py" in get_bundle
59. assets = self.get_assets()

File "/srv/modoboa/env/local/lib/python2.7/site-packages/webpack_loader/loader.py" in get_assets
38. return self._load_assets()

File "/srv/modoboa/env/local/lib/python2.7/site-packages/webpack_loader/loader.py" in _load_assets
31. self.config['STATS_FILE']))

Exception Type: IOError at /contacts/
Exception Value: Error reading /srv/modoboa/env/local/lib/python2.7/site-packages/modoboa_contacts/../frontend/webpack-stats.json. Are you sure webpack has generated the file and the path is correct?

Is this something known already? I couldn't find any info on it though. I appreciate your help.

Contacts trouble

Modoboa Version: 1.14.0 (up-to-date)
Plugins: up-to-date
OS: debian 9 (stretch)

Hello,

i think i have some trouble with the contacts module.

I have over 300 conntacts on my Phone and my Thunderbird Contacts Plugin.
This work good and the devices are synced.

Problem is the Webinterface. I see only 4 contacts but no longer exist and the other 300 should be there I do not see.

what can I do?

Debug mode is enable and shows no problems and errors.
In the config i have enable the modoboa_app

...
  'modoboa_contacts',
...

and on the end of file:

try:
    from modoboa_contacts import settings as modoboa_contacts_settings
    modoboa_contacts_settings.apply(globals())
except AttributeError:
    from modoboa_contacts.settings import *  # noqa

thanks for any help

Sync issue when contact's email has no type.

Traceback:  

File "/srv/modoboa/env3/lib/python3.5/site-packages/vobject/base.py" in __getattr__
  376.                 return self.params[toVName(name, 6, True)][0]
  
    
      During handling of the above exception ('TYPE'), another exception occurred:
    
  

File "/srv/modoboa/env3/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/srv/modoboa/env3/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/srv/modoboa/env3/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/lib/python3.5/contextlib.py" in inner
  30.                 return func(*args, **kwds)

File "/usr/lib/python3.5/contextlib.py" in inner
  30.                 return func(*args, **kwds)

File "/srv/modoboa/env3/lib/python3.5/site-packages/django/views/decorators/csrf.py" in wrapped_view
  58.         return view_func(*args, **kwargs)

File "/srv/modoboa/env3/lib/python3.5/site-packages/rest_framework/viewsets.py" in view
  90.             return self.dispatch(request, *args, **kwargs)

File "/srv/modoboa/env3/lib/python3.5/site-packages/rest_framework/views.py" in dispatch
  489.             response = self.handle_exception(exc)

File "/srv/modoboa/env3/lib/python3.5/site-packages/rest_framework/views.py" in handle_exception
  449.             self.raise_uncaught_exception(exc)

File "/srv/modoboa/env3/lib/python3.5/site-packages/rest_framework/views.py" in dispatch
  486.             response = handler(request, *args, **kwargs)

File "/srv/modoboa/env3/lib/python3.5/site-packages/modoboa_contacts/viewsets.py" in sync_from_cdav
  41.             tasks.sync_addressbook_from_cdav(request, abook)

File "/srv/modoboa/env3/lib/python3.5/site-packages/modoboa_contacts/tasks.py" in sync_addressbook_from_cdav
  63.                 contact.update_from_vcard(content)

File "/srv/modoboa/env3/lib/python3.5/site-packages/modoboa_contacts/models.py" in update_from_vcard
  142.                 type=email.type_param.lower()

File "/srv/modoboa/env3/lib/python3.5/site-packages/vobject/base.py" in __getattr__
  382.             raise AttributeError(name)

Exception Type: AttributeError at /api/v1/address-books/sync_from_cdav/
Exception Value: type_param

Can't use plugin while sync is disabled

There is a loading error which prevents plugin use.

[Vue warn]: Error in data(): "TypeError: window.userProfile is undefined"

found in

---> <Anonymous>
       <Anonymous>
         <Root>

remove contact categories

Modoboa Version: 1.14.0 (up-to-date)
Plugins: up-to-date
OS: debian 9 (stretch)

Hello,

how can i delete Contact Categories?
I can only find a 'add category' - Button.

Thanks for help

django-webpack-loader breaking changes

After a fresh installation of modoboa-contacts, the contacts page crashes with expected string or bytes-like object in webpack_loader.

django-webpack-loader broke its output file format in 1.0.0 making any up to date dependency installation broken. A quick solution would be to lock the requirement to 0.7.0.


In case anybody hits this bug, django-webpack-loader can be downgraded as a workaround :

pip uninstall django-webpack-loader
pip install -I django-webpack-loader==0.7.0

CardDAV server as backend?

I know this is still WIP, but it would be great if there was an option to use an existing CardDAV server as the backend (specifically: ownCloud/Nextcloud).

/contacts throws webpack error if accessed with DEBUG=True setting

Impacted versions

Modoboa: 1.13.0
Contacts: 0.7.3
Radicale management: 1.3.6
Installer used: Yes
Webserver: Nginx

Steps to reproduce

When I access https://mail.mydomain.de/contacts/ with DEBUG=True in settings.py I get an error.
Because it's only in debug mode, it's not that bad but annoying.

Webpack details

Setting Value
WEBPACK_LOADER {'CALENDAR': {'BUNDLE_DIR_NAME': 'modoboa_radicale/', 'CACHE': False, 'IGNORE': ['.+\.hot-update.js', '.+\.map'], 'STATS_FILE': '/srv/modoboa/env/lib/python2.7/site-packages/modoboa_radicale/../frontend/webpack-stats.json'}, 'CONTACTS': {'BUNDLE_DIR_NAME': 'modoboa_radicale/', 'CACHE': False, 'IGNORE': ['.+\.hot-update.js', '.+\.map'], 'STATS_FILE': '/srv/modoboa/env/lib/python2.7/site-packages/modoboa_contacts/../frontend/webpack-stats.json'}}

I anonymized the log file a bit, replacing the real domain with mail.mydomain.de

IOError at /contacts/
Error reading /srv/modoboa/env/lib/python2.7/site-packages/modoboa_contacts/../frontend/webpack-stats.json. Are you sure webpack has generated the file and the path is correct?
Request Method: GET
Request URL:  https://mail.mydomain.de/contacts/
Django Version: 1.11.18
Exception Type: IOError
Exception Value:  
Error reading /srv/modoboa/env/lib/python2.7/site-packages/modoboa_contacts/../frontend/webpack-stats.json. Are you sure webpack has generated the file and the path is correct?
Exception Location: /srv/modoboa/env/lib/python2.7/site-packages/webpack_loader/loader.py in _load_assets, line 32
Python Executable:  /usr/sbin/uwsgi
Python Version: 2.7.5
Python Path:  
['.',
 '',
 '/srv/modoboa/env/lib64/python27.zip',
 '/srv/modoboa/env/lib64/python2.7',
 '/srv/modoboa/env/lib64/python2.7/plat-linux2',
 '/srv/modoboa/env/lib64/python2.7/lib-tk',
 '/srv/modoboa/env/lib64/python2.7/lib-old',
 '/srv/modoboa/env/lib64/python2.7/lib-dynload',
 '/usr/lib64/python2.7',
 '/usr/lib/python2.7',
 '/srv/modoboa/env/lib/python2.7/site-packages']
Server time:  Fri, 18 Jan 2019 09:03:47 +0100


Environment:

Request Method: GET
Request URL: https://mail.mydomain.de/contacts/

Django Version: 1.11.18
Python Version: 2.7.5
Installed Applications:
(u'django.contrib.auth',
 u'django.contrib.contenttypes',
 u'django.contrib.sessions',
 u'django.contrib.messages',
 u'django.contrib.sites',
 u'django.contrib.staticfiles',
 u'reversion',
 u'ckeditor',
 u'ckeditor_uploader',
 u'rest_framework',
 u'rest_framework.authtoken',
 u'modoboa',
 u'modoboa.core',
 u'modoboa.lib',
 u'modoboa.admin',
 u'modoboa.transport',
 u'modoboa.relaydomains',
 u'modoboa.limits',
 u'modoboa.parameters',
 u'modoboa.dnstools',
 u'modoboa_pdfcredentials',
 u'modoboa_postfix_autoreply',
 u'modoboa_sievefilters',
 u'modoboa_stats',
 u'modoboa_webmail',
 u'modoboa_contacts',
 u'modoboa_radicale',
 'webpack_loader')
Installed Middleware:
(u'x_forwarded_for.middleware.XForwardedForMiddleware',
 u'django.contrib.sessions.middleware.SessionMiddleware',
 u'django.middleware.common.CommonMiddleware',
 u'django.middleware.csrf.CsrfViewMiddleware',
 u'django.contrib.auth.middleware.AuthenticationMiddleware',
 u'django.contrib.messages.middleware.MessageMiddleware',
 u'django.middleware.locale.LocaleMiddleware',
 u'django.middleware.clickjacking.XFrameOptionsMiddleware',
 u'modoboa.core.middleware.LocalConfigMiddleware',
 u'modoboa.lib.middleware.AjaxLoginRedirect',
 u'modoboa.lib.middleware.CommonExceptionCatcher',
 u'modoboa.lib.middleware.RequestCatcherMiddleware')



Traceback:

File "/srv/modoboa/env/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
  217.                 response = self.process_exception_by_middleware(e, request)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
  215.                 response = response.render()

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/response.py" in render
  107.             self.content = self.rendered_content

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/response.py" in rendered_content
  84.         content = template.render(context, self._request)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/backends/django.py" in render
  66.             return self.template.render(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/base.py" in render
  207.                     return self._render(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/base.py" in _render
  199.         return self.nodelist.render(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  177.             return compiled_parent._render(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/base.py" in _render
  199.         return self.nodelist.render(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  177.             return compiled_parent._render(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/base.py" in _render
  199.         return self.nodelist.render(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  72.                 result = block.nodelist.render(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/defaulttags.py" in render
  322.                 return nodelist.render(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/base.py" in render
  990.                 bit = node.render_annotated(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/base.py" in render_annotated
  957.             return self.render(context)

File "/srv/modoboa/env/lib/python2.7/site-packages/django/template/library.py" in render
  203.         output = self.func(*resolved_args, **resolved_kwargs)

File "/srv/modoboa/env/lib/python2.7/site-packages/webpack_loader/templatetags/webpack_loader.py" in render_bundle
  12.     tags = utils.get_as_tags(bundle_name, extension=extension, config=config, attrs=attrs)

File "/srv/modoboa/env/lib/python2.7/site-packages/webpack_loader/utils.py" in get_as_tags
  45.     bundle = _get_bundle(bundle_name, extension, config)

File "/srv/modoboa/env/lib/python2.7/site-packages/webpack_loader/utils.py" in _get_bundle
  23.     bundle = get_loader(config).get_bundle(bundle_name)

File "/srv/modoboa/env/lib/python2.7/site-packages/webpack_loader/loader.py" in get_bundle
  60.         assets = self.get_assets()

File "/srv/modoboa/env/lib/python2.7/site-packages/webpack_loader/loader.py" in get_assets
  39.         return self._load_assets()

File "/srv/modoboa/env/lib/python2.7/site-packages/webpack_loader/loader.py" in _load_assets
  32.                     self.config['STATS_FILE']))

Exception Type: IOError at /contacts/
Exception Value: Error reading /srv/modoboa/env/lib/python2.7/site-packages/modoboa_contacts/../frontend/webpack-stats.json. Are you sure webpack has generated the file and the path is correct?

Additional log files:

meta

instance.settings

E-Mail Address can't stay empty/can't be removed

I imported contacts from my Google Account. A lot of them don't have an e-mail address but only a phone number.

When I open a contact it shows with an empty e-mail address.
I cannot delete this e-mail address (not available) nor can I leave it empty (error message in the form), forcing me to use weird placeholder addresses to denote that it is not the actual address even if I just want to edit another property.

Is there a reason why the e-mail address can't be deleted or left empty?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.