Commit Graph
42 Commits
Author SHA1 Message Date
Sébastien Theys f9d7f7595f [FIX] bus, *: restore simple_notification handler
* = base_geolocalize, calendar, website_crm_partner_assign

Oversight of discuss refactoring. Code is restored into bus module as it
does not depend on any mail or discuss feature.

closes odoo/odoo#119243

Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2023-04-20 19:30:37 +02:00
niyasraphy d9281dcaec [IMP] base_geolocalize : form view for base.geo_provider model
closes odoo/odoo#106374

Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2023-01-16 19:45:52 +01:00
Patrick Hoste bf992f24b2 [IMP] various: improves usage of partners
SPECIFICATION

Various change for the partner view:
- Moved the activity widget to the bottom right of the kanban
- Moved the informations badge to the bottom right next to the
  activity widget and made them clickable
- Change the address options order and add a small help below
- Change the 'Remove' button function from delete to remove from
  the company and add a delete button to the right end.
- Correct some typo
- Add an 'Archived' ribbon to the kanban card
- Change various small things

LINKS

Task-2821356

closes odoo/odoo#89249

Related: odoo/enterprise#26442
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-06-14 11:41:15 +02:00
Yannick Tivisse dc3ad1381f [FIX] base_geolocalize: Partial revert of #84266
Purpose
=======

This @depends could be 'dangerous' because it would trigger a
lot of calls to the GeoIP API.

It would be more reasonable to make it lazy instead.

So we just reset the geolocation to 0 when the address is modified
without providing the new values, and the user can manually trigger
the geolocation again when needed.

For FSM, it will be updated when needed as the computation is
triggered when the geolocation information is empty.

Part-of: odoo/odoo#84890
2022-02-18 14:29:20 +00:00
Yannick Tivisse 99f7e35fc3 [FIX] base_geolocalize: Disable geolocalize on update/test mode
Purpose
=======

Avoid making useless external requests.

X-original-commit: 6742e410e4c28a1cd24d1f7ea679a563db693f00
2022-02-18 10:19:08 +01:00
Audric Onockx (auon) 5909a78915 [FIX] base_geolocalize : adapt geocoordinates to partner address
Steps :
Install Field Service and Contacts.
Create a FSM task > Customer : Demo.
Note that the displayed address is his Demo's current one.
Click Navigate To : it points this same address.
Go to Contacts > Demo > change the address and return to task.
Note that the displayed address is his Demo's new one. (Or else refresh)

Issue :
Click Navigate To : it points the OLD address.

Cause :
action_fsm_navigate calls partner.geo_localize
only if partner has no geocoordinates.
Yet he still have the old coordinates.

Fix :
Call when the address changes and not in action_fsm_navigate.

closes odoo/odoo#84753

Opw: 2743926
X-original-commit: 0c01f2a22485328e32ff1741a3ba98446b539318
Related: odoo/enterprise#24456
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Signed-off-by: Onockx Audric (auon) <auon@odoo.com>
2022-02-17 09:06:49 +00:00
Didier (did) 1afcc9c368 [IMP] bus, mail, *: improve longpolling bus notification format
* = auth_signup, calendar, im_livechat, snailmail_account, survey, test_mail,
    web_editor, website_crm_iap_reveal, website_livechat

The aim of this PR is to improve/fix various flaws and limitation of the current
API, to make it easier to use and more efficient.

Notification are now defined with 3 distinct parts:

- the channel determines which client(s) should receive it
- the type determines how it should be handled
- the payload determines any extra information helpful for handling it

Channel
=======

Business code
-------------

- Record channel is introduced for ease of subscribing to and sending
  notifications to specific partners, channels, documents, ...
- String channel is still supported (but it is converted internally to the tuple
  channel).
- Tuple channel is still supported without any change (but should be avoided
  whenever possible due to its complex syntax).

The channel is no longer sent to the client. When the channel was used for
business purpose, the information it contained has been moved into either the
new type, or the payload itself.

Technical note
--------------

All channels are now internally converted to the tuple (db, ...) channel, which
is necessary for the platform code (saas/sh).

Internally, the bus.bus table is not changed, type and payload are grouped
together into what was (and still is) called message.

Type
====

Type is introduced to uniformize the way notifications are sent and handled.
All existing notifications already had some kind of manually-built type in them.
This is now officially supported at the bus API.

In client code this will allow (to be done in future commits) to register one
handler per specific type, instead of having to iterate and to filter all
received notifications on every handler.

Payload
=======

Payload (ex message) did not change, it can still be anything depending on
business needs.

Few adaptations:
- When the type was included on the payload, the type has been moved to the new
  type parameter.
- When the channel was used in business code, its data has been copied into the
  payload.

task-1891151

closes odoo/odoo#79201

X-original-commit: 543af27c7d6836ffac9e80ff8490b6ddbd849221
Related: odoo/enterprise#21998
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2021-10-29 16:05:23 +00:00
ijas ahammed c557dbacd1 [IMP] base_geolocalize,website_crm_partner_assign: show a toaster message
- Right now, if you click on 'Geolocate' button on partner form view, and if
  partner has no address, it gives no feedback and user doesn't know what
  happend.

  With this commit, if the geolocating does not work, user will get a toast
  notification telling him that 'No address found' to avoid confusion.

- When we click on 'Automatic Assignment' button from crm form view,
  if there is no country set on lead, odoo skips the process, but we get the tag
  that 'no partner available' which is not correct. It should be
  there only when odoo actually tries to find the partner based on
  lead's country.

  This commit fixes the behavior by showing a toast notification to
  user in this case, saying 'There is no country set in address'.

TaskID-2443894
closes https://github.com/odoo/odoo/pull/67524

Part-of: odoo/odoo#67524
2021-10-19 15:58:49 +00:00
qho 4496ce31aa [FIX] base_geolocalize: access blocked by OpenStreetMap
The geolocation service from OpenStreetMap will not be unblocked until a
'meaningful' and identical user-agent added in the request.

opw-2221857

closes odoo/odoo#48805

X-original-commit: 9018039b835547ea4adbc32a23901214613a033a
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2020-04-01 21:22:04 +00:00
Adrian Torres 4b38cc6590 [REM] *: calls to @api.multi
Multi is the default api for methods, it is not necessary to explicitly
decorate methods with it, adds clutter and most people use it because
they see that the rest of the code uses it.

Done with `find . -type f -name '*.py' | xargs sed -i '/@api.multi/d'`
2019-07-17 14:13:12 +02:00
Martin Trigaux 1f5a4649a6 [MERGE] Forward port of saas-12.3 to saas-12.4 up to 87fc1554d6
closes odoo/odoo#34820

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2019-07-12 13:59:35 +00:00
Christophe Simonis 5e81b18e24 [MERGE] forward port branch saas-12.3 up to 0247d2f35f 2019-06-27 20:45:52 +02:00
Jeremy Kersten a5b1a288a6 [FIX] base_geolocalize: handle ZERO_RESULTS as google response
Before this commit, it was considered as an error because status was not OK

closes odoo/odoo#34377

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2019-06-26 10:00:59 +00:00
Jeremy Kersten 50d21df156 [FIX] base_geolocalize: allow to force country in request
Before this commit, using google geoloc, we only provide a string as address
withtout more information.

Now by defaut, we force the country as components:
https://developers.google.com/maps/documentation/geocoding/intro#geocoding

Related to task-2030886

**setup:**
```python
url = "https://maps.googleapis.com/maps/api/geocode/json"
```

**before:**
```python
params = {'address': 'Georgia', 'key': apikey}
requests.get(url, params).json()
```

>       ==> Return coordinate of "Georgia, United States"
>           What is completely wrong
>

**after:**
```python
params = {'address': 'Georgia', 'components':'country:Georgia', 'key': apikey}
requests.get(url, params).json()
```

>       ==> Return Nothing
>          What is strange but less wrong than US
>

```python
params = {'address': 'Belgium', 'components':'country:Belgium', 'key': apikey}
requests.get(url, params).json()
```

>       ==> Return coordinate of Belgium

closes odoo/odoo#34582

Signed-off-by: Christophe Simonis <chs@odoo.com>
2019-07-04 13:08:42 +00:00
Thomas Werland 515fb62fc4 [IMP] base_geolocalize,web_editor,doc: create map_view
In order for the map view to work properly:
- I moved scss property to a  file only scoped to website module.
- moved the definiton of "partner_latitude" and "partner_longitude" from
base_geolocalise to base/res.partner

closes odoo/odoo#32487

Signed-off-by: VincentSchippefilt <VincentSchippefilt@users.noreply.github.com>
2019-06-11 07:36:53 +00:00
Christophe Simonis d32420397d [MERGE] forward port branch 12.0 up to 251021796c 2019-04-04 11:20:03 +02:00
Christophe Simonis 4df568549a [MERGE] forward port branch saas-15 up to 180f105508 2019-04-02 13:58:03 +02:00
Nans Lefebvre 6b9b9d8997 [FIX] base_geolocalize: raise a helpful error to configure the Google account
Google maps used to be free, but became a paid API.
Technically, the usage could be part of the free offer,
but to benefit from it the account needs to have billing enabled.
Since it's a paid feature security had to be ramped up,
so now APIs have to be explicitly enabled (here geolocating/geocoding).
All this makes it so that the Google account has to be properly configured
before the calls to the Maps API can work.
As a result we add an explicit UserError if the request fails,
to help the user configure the Google account
(before the error was entirely hidden as to give the user no chance at all).

Also exports transaltions, including for commit e6ca846c65
which raised a similar error message if no API key was found.

opw 1946485
opw 1947292
opw 1947337

closes odoo/odoo#32162

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-03-29 11:33:00 +00:00
Jeremy Kersten 6c67539b92 [REF] base_geolocalize, base_setup: ref + make it configurable in settings
Migrate in v12 and Refactor a part of the code
Allow to configure it in setting
2018-11-16 16:24:49 +00:00
Emanuel Cino 0fda77e777 [FIX] base_geolocalize allow to use Openstreetmap instead of Google
- Change API provider to prevent invalid API calls
- Move geo_find methods into base.geocoder object to ease inheritance
- Add system parameter to allow use of another provider

fixes #x26924
fixes #x6929
2018-11-15 18:13:46 +00:00
Christophe Simonis 5cb9f8e9d5 [MERGE] forward port branch saas-15 up to a27a24c5ed 2018-09-13 12:11:17 +02:00
Jeremy Kersten e6ca846c65 [FIX] base_geolocalize, website_crm_partner_assign: API keys are now required
Google Important Updated: API keys are now required
We began enforcing the use of API keys, effective June 11th 2018.
Keyless usage will result in a degraded experience, or an error.

https://developers.google.com/maps/billing/important-updates
2018-09-12 17:07:23 +02:00
Christophe Simonis ab02bf34b0 [MERGE] forward port branch saas-16 up to cc38b93ab2 2017-06-09 17:11:47 +02:00
Christophe Simonis cc38b93ab2 [MERGE] forward port branch saas-15 up to 49f819a7a7 2017-06-09 16:43:27 +02:00
xmo-odoo 74a89bcf5c [FIX] base_geolocalize: geocode errors out on empty address
It's unclear whether that's a recent change or a long-standing issue,
however currently if geocode is called with an empty address string it
will reply with a 400 Bad Request, which gets raised as an exception and
forwarded to the user. That is not a great experience.

Shortcut the entire thing and just return None (= geolocation failed /
no geolocation) on trying to geolocate an empty address.

OPW-746686
2017-06-09 12:26:38 +02:00
Christophe Simonis 6f3eada2c3 [MERGE] forward port branch saas-15 up to f687a27b79 2017-06-06 19:23:03 +02:00
Christophe Simonis 460cb3ba9e [MERGE] forward port branch saas-11 up to 7d7a45a921 2017-06-06 17:28:59 +02:00
Christophe Simonis 7d7a45a921 [MERGE] forward port branch 9.0 up to fffcfcc519 2017-06-06 15:18:52 +02:00
Christophe Simonis fffcfcc519 [MERGE] forward port branch saas-6 up to 8958bfe557 2017-06-06 13:40:34 +02:00
Olivier Dony 8958bfe557 [MERGE] Forward-port 8.0 up to d18d606a55 2017-06-03 01:08:20 +02:00
Jeremy Kersten f4aa509283 [FIX] base_geolocalize: use urllib2 to make request
For an unknown reason, in some case, urllib doesn't work while with urllib2 it works.
Since we don't have the opposite case until now (work in urllib and not urllib2), we
considere that it fixes the issue.

this commit closes #14636
2017-05-30 16:47:54 +02:00
Xavier Morel 01e3514147 [FIX] P3: urllib, urllib2 and urlparse
In Python 3, all of these were "consolidated" under urllib(.request,
.parse, .errors) which is inconvenient.

Since we already have hard dependencies on requests and
werkzeug(.urls, which is a backport of Python 3's unicode-aware
urllib.parse) migrate *everything* to that.

A sticking point is urllib2.URLError, those were (mostly) replaced by
the slightly more general IOError which URLError extends.
2017-05-15 12:26:30 +02:00
xmo-odoo fffaf735f5 [FIX] P3: list -> iterable builtins (#16811)
In Python 3:

* various builtins and dict methods were changed to return
  view/iterable objects rather than lists
* and the separate Python 2 view/iterable builtins and methods were
  removed altogether

This is problematic when using these items as list (which the happens
repeatedly in Odoo), but more viciously when iterating *multiple times*
over them (which also happens, which I've messed up multiple times while
writing this, and which is a pain to debug even when you've just created
the issue).

Convert all code using these to semantics-matching cross-version
helper functions to get the LCD behaviour between P2 and P3, and
forbid the builtins via lint.

issue #8530
2017-05-10 09:39:55 +02:00
xmo-odoo b4429c2a91 [FIX] Various P3-related import changes
* LDAP import: python-ldap is not python3-compatible, pyldap is

  Warning: only supported from debian Stretch (current testing)?
  https://packages.debian.org/search?searchon=names&keywords=pyldap

* implicitly relative imports
* imports of moved or removed stdlib modules

issue #8530
2017-04-28 09:06:53 +02:00
Jeremy Kersten 7d968116bd [FIX] base_geolocalize, website_crm_partner_assign: geolocalize fallback on city
If the street cannot be localized, we retry with only the city.
2016-12-07 16:03:29 +01:00
Thibault Delavallée c8a313d51e [IMP] various: use odoo for imports instead of openerp and update class names 2016-08-10 15:48:07 +02:00
Hitesh Trivedi 1ecd423d94 [MIG] base_geolocalize: new API migration 2015-10-08 10:20:53 +02:00
Leonardo Rochael Almeida 60af7cac02 [IMP] replace simplejson with stdlib json
The stdlib version of the json library is more recent than the 3.5.3
version we are pinning in `requirements.txt`

There is no reason to use it.

Closes #6940
2015-09-28 10:53:32 +02:00
Olivier Dony 0bd4545348 [LEGAL] Use global LICENSE/COPYRIGHT files, remove boilerplate text
- Preserved explicit 3rd-party copyright notices
- Explicit boilerplate should not be necessary - copyright law applies
  automatically in all countries thanks to Berne Convention + WTO rules,
  and a reference to the applicable license is clear enough.
2015-06-02 03:16:04 +02:00
Goffin Simon 0fd773a486 [IMP] Cleanup and refactoring of exception handling
Unify and refactor exception handling in framework and addons.

The generic `except_osv` is now deprecated, and replaced by more specialized exception subtypes:
 - `UserError` (renamed from Warning, as it conflicts with the built-in `Warning`) raised when a non-technical error occurs during a business operation. It could be a missing information in the data provided by the user, or a misconfiguration.
 - `AccessError`: raised when any operation is denied because the user conducting it does not have the required access rights.
 - `AccessDenied`: raised when an operation that requires authenticated access is attempted via an unauthenticated request.
 - `MissingError`: raised when an operation is attempted on a record that does not exist.
 - `ValidationError`: raised when an operation violates a SQL or Python constraint.
 - All other exceptions are internal errors due to a system problem or bug, and raised untouched to the client-side, which should display a traceback.

All exceptions take a single message argument.

The `test_exceptions` module has been updated to showcase both new and old (deprecated) exceptions.

A great many old `except_osv` had a useless title with "Error!" or "Warning", those have been removed, as this is handled by the client-side widget that displays the messages.

This commit introduces a more consistent policy for logging errors and warnings:
 - All messages that do not require administrator attention should be logged at INFO level or lower. This includes all errors that are notified to the user in a friendly manner, even for access right problems or validation errors during business operations.
 - All messages that indicate a likely misconfiguration or malicious use by the users should be logged at WARNING level, as they typically require administrator attention.
 - All other unhandled internal errors cannot typically be handled by the user and should be logged at ERROR or higher level, as they require immediate administrator attention.
2015-01-16 17:15:18 +01:00
Denis Ledoux 36bf774d20 [MERGE] forward port of branch 7.0 up to 43cf6d5 2014-12-17 14:05:44 +01:00
Thibault Delavallée cc59f2d77a [REF] crm_partner_assign: moved geolocalization stuff of res.partner inside a dedicated module.
[ADD] base_geolocalize, holding partner latitude, longitude and stuff necessary
for geo-localisation. This module will be used for the website, to be able to
use geo localization without having to rely on crm_partner_assign.

crm_partner_assign now contains the logic related to partner assignment and
opportunities geo localization.

bzr revid: tde@openerp.com-20131007144135-mwnpdznojr0ece7u
2013-10-07 16:41:35 +02:00