Siirry sisältöön
Odoo Menu
  • Kirjaudu sisään
  • Kokeile ilmaiseksi
  • Sovellukset
    Talous
    • Kirjanpito
    • Laskutus
    • Kulut
    • Datataulukot (BI)
    • Asiakirjat
    • Allekirjoita
    Myynti
    • CRM
    • Myynti
    • Kassajärjestelmä myymälään
    • Kassajärjestelmä ravintolaan
    • Tilaukset
    • Vuokraus
    Verkkosivut
    • Verkkosivun Rakennustyökalu
    • Verkkokauppa
    • Blogi
    • Foorumi
    • Livechat
    • Verkko-oppiminen
    Toimitusketju
    • Varastointi
    • Tuotanto
    • Tuotteen elinkaaren hallinta (PLM)
    • Ostot
    • Huolto
    • Laatu
    Henkilöstöhallinto
    • Työntekijät
    • Rekrytointi
    • Vapaat
    • Arvioinnit
    • Suositukset
    • Kuljetuskalusto
    Markkinointi
    • Somemarkkinointi
    • Sähköpostimarkkinointi
    • Tekstiviestimarkkinointi
    • Tapahtumat
    • Markkinoinnin automaatio
    • Kyselyt
    Palvelut
    • Projekti
    • Työaikakirjaukset
    • Kenttähuolto
    • Asiakaspalvelu
    • Suunnittelu
    • Ajanvaraukset
    Tuottavuus
    • Viestintä
    • Hyväksynnät
    • IoT
    • IP-puhe
    • Tietokirjasto
    • WhatsApp
    Kolmannen osapuolen sovellukset Odoo-Studio Odoo-Pilvialusta
  • Toimialat
    Vähittäiskauppa
    • Kirjakauppa
    • Vaatekauppa
    • Huonekaluliike
    • Ruokakauppa
    • Laitteistokauppa
    • Lelukauppa
    Ruoka & Majoitus
    • Baari ja Pubi
    • Ravintola
    • Pikaruoka
    • Majatalo
    • Juomien jakelija
    • Hotelli
    Kiinteistöt
    • Kiinteistönvälitystoimisto
    • Arkkitehtitoimisto
    • Rakentaminen
    • Kiinteistönhallinta
    • Puutarhanhoito
    • Kiinteistön omistajien yhdistys
    Konsultointi
    • Tilitoimisto
    • Odoo-kumppani
    • Markkinointitoimisto
    • Lakitoimisto
    • Osaajahankinta
    • Tilintarkastus & sertifiointi
    Tuotanto
    • Tekstiili
    • Metalli
    • Huonekalut
    • Ruoka
    • Panimo
    • Yrityslahjat
    Terveys & Liikunta
    • Urheiluseura
    • Silmälasiliike
    • Kuntokeskus
    • Hyvinvointialan ammattilaiset
    • Apteekki
    • Kampaamo
    Kaupat
    • Yleismies
    • IT-laitteisto & Tuki
    • Aurinkoenergiajärjestelmät
    • Suutari
    • Siivouspalvelut
    • LVI-palvelut
    Muut
    • Voittoa tavoittelematon järjestö
    • Ympäristötoimisto
    • Mainostaulujen vuokraus  
    • Valokuvaus
    • Leasing-pyörät
    • Ohjelmistojen jälleenmyyjä
    Selaa kaikkia toimialoja
  • Yhteisö
    Opi
    • Kurssit
    • Dokumentaatio
    • Todistukset
    • Koulutus
    • Blogi
    • Podcast
    Kannusta kouluttautumaan
    • Koulutusohjelmat
    • Scale Up! Liiketoimintapeli
    • Vieraile Odoolla
    Hanki ohjelmisto
    • Lataa
    • Vertaile versioita
    • Julkaisut
    Tee yhteistyötä
    • Github
    • Foorumi
    • Tapahtumat
    • Käännökset
    • Ryhdy kumppaniksi
    • Kumppanipalvelut
    • Rekisteröi tilitoimistosi
    Hanki palveluja
    • Löydä kumppani
    • Löydä kirjanpitäjä
    • Varaa asiantuntijatapaaminen
    • Implementaatiopalvelut
    • Asiakasreferenssit
    • Tuki
    • Versionkorotukset
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Varaa demo
  • Hinnoittelu
  • Asiakaspalvelu

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Kirjanpito
  • Varastointi
  • PoS
  • Projekti
  • MRP
All apps
Sinun on rekisteröidyttävä, jotta voit olla vuorovaikutuksessa yhteisön kanssa.
Kaikki kirjoitukset Ihmiset Merkit
Tunnisteet (Näytä kaikki)
odoo accounting v14 pos v15
Tietoa tästä foorumista
Sinun on rekisteröidyttävä, jotta voit olla vuorovaikutuksessa yhteisön kanssa.
Kaikki kirjoitukset Ihmiset Merkit
Tunnisteet (Näytä kaikki)
odoo accounting v14 pos v15
Tietoa tästä foorumista
Apua

How to get a new cursor on new api on Thread

Tilaa

Saat ilmoituksen, kun tähän viestiin ilmaantuu aktiviteettia

Tämä kysymys on merkitty
environmentapi8.0
2 Vastaukset
32132 Näkymät
Avatar
Max

Found from here - http://odoo-new-api-guide-line.readthedocs.org/en/latest/conventions.html:

Using Thread

When using thread you have to create you own cursor and initiate a new environment for each thread. committing is done by committing the cursor:

with Environment.manage(): # class function

               env = Environment(cr, uid, context)

But how to use it?

We have old api code:

 

        with Environment.manage():

            cr = self.pool.cursor()

            dialer = self.pool['asterisk.dialer'].browse(cr, uid, ids, context=context)[0]

 

It works.

Now how to do the same with new api?

 

        with Environment.manage():

            dialer = self.env['asterisk.dialer'].browse([dialer_id])

 

Gives the following error: OperationalError: Unable to use a closed cursor.

 

Tried this:

def run_dialer(self, dialer_id):

        with Environment.manage():

            cr, uid, context = self.env.args

            env = Environment(cr, uid, context)

            dialer = env['asterisk.dialer'].browse([dialer_id])

            domain = [('phone', '!=', None)] + [eval(dialer.dialer_domain)[0]]

            contacts = env[dialer.dialer_model].search(domain)

 

The same:

Exception in thread Thread-7:

Traceback (most recent call last):

  File "/usr/lib/python2.7/threading.py", line 808, in __bootstrap_inner

    self.run()

  File "/usr/lib/python2.7/threading.py", line 761, in run

    self.__target(*self.__args, **self.__kwargs)

  File "/home/max/tmp-work/odoo/odoo.my/openerp/api.py", line 235, in wrapper

    return new_api(self, *args, **kwargs)

  File "/home/max/tmp-work/odoo/myaddons/asterisk_dialer/models/dialer.py", line 98, in run_dialer

    contacts = env[dialer.dialer_model].search(domain)

  File "/home/max/tmp-work/odoo/odoo.my/openerp/api.py", line 235, in wrapper

    return new_api(self, *args, **kwargs)

  File "/home/max/tmp-work/odoo/odoo.my/openerp/api.py", line 464, in new_api

    result = method(self._model, cr, uid, *args, **kwargs)

  File "/home/max/tmp-work/odoo/odoo.my/openerp/models.py", line 1679, in search

    return self._search(cr, user, args, offset=offset, limit=limit, order=order, context=context, count=count)

  File "/home/max/tmp-work/odoo/odoo.my/openerp/api.py", line 237, in wrapper

    return old_api(self, *args, **kwargs)

  File "/home/max/tmp-work/odoo/odoo.my/openerp/addons/base/res/res_partner.py", line 643, in _search

    count=count, access_rights_uid=access_rights_uid)

  File "/home/max/tmp-work/odoo/odoo.my/openerp/api.py", line 237, in wrapper

    return old_api(self, *args, **kwargs)

  File "/home/max/tmp-work/odoo/odoo.my/openerp/models.py", line 4543, in _search

    res = cr.fetchall()

  File "/home/max/tmp-work/odoo/odoo.my/openerp/sql_db.py", line 157, in wrapper

    raise psycopg2.OperationalError(msg)

1
Avatar
Hylkää
Avatar
Moisés Augusto López Calderón
Paras vastaus

FYI this work for me:

with openerp.api.Environment.manage():
    with openerp.registry(self.env.cr.dbname).cursor() as new_cr:
        # Create a new environment with new cursor database
        new_env = api.Environment(new_cr, self.env.uid, self.env.context)
        # with_env replace original env for this method
        self.with_env(new_env).write({'name': 'hello'})  # isolated transaction to commit
        new_env.cr.commit()  # Don't show a invalid-commit in this case
    # You don't need close your cr because is closed when finish "with"
# You don't need clear caches because is cleared when finish "with"
6
Avatar
Hylkää
PY

What does `Environment.manage()` ?

Avatar
Max
Tekijä Paras vastaus

The following seem to work reliably:

            new_cr = sql_db.db_connect(self.env.cr.dbname).cursor()
            uid, context = self.env.uid, self.env.context
            with api.Environment.manage():
                self.env = api.Environment(new_cr, uid, context)

                try:
                      ....

                finally:
                    self.env.cr.close()
 

2
Avatar
Hylkää
Nautitko keskustelusta? Älä vain lue, vaan osallistu!

Luo tili jo tänään nauttiaksesi yksinoikeusominaisuuksista ja osallistuaksesi mahtavaan yhteisöömme!

Rekisteröidy
Aiheeseen liittyviä artikkeleita Vastaukset Näkymät Toimenpide
[8.0] New API - Using Domains - ValueError: Invalid leaf Ratkaistu
api method 8.0
Avatar
Avatar
Avatar
5
heinäk. 18
23311
Error Field is accesed before being computed.
api onchange compute 8.0
Avatar
0
maalisk. 15
7058
How do I get Product Prices with json API? Ratkaistu
api
Avatar
Avatar
1
marrask. 25
2740
Has anyone integrated Helpdesk with Zoom for meeting scheduling?
api
Avatar
Avatar
1
elok. 25
1343
Using API check if Odoo is using Odoo sh or on-premises hosting. Ratkaistu
api
Avatar
Avatar
1
elok. 25
1717
Yhteisö
  • Kurssit
  • Dokumentaatio
  • Foorumi
Avoin lähdekoodi
  • Lataa
  • Github
  • Runbot
  • Käännökset
Palvelut
  • Odoo.sh hosting
  • Tuki
  • Versionkorotus
  • Räätälöidyt kehitykset
  • Koulutus
  • Löydä kirjanpitäjä
  • Löydä kumppani
  • Ryhdy kumppaniksi
Meistä
  • Yrityksemme
  • Tavaramerkki
  • Ota yhteyttä
  • Työpaikat
  • Tapahtumat
  • Podcast
  • Blogi
  • Asiakkaat
  • Oikeudellinen ilmoitus • Yksityisyys
  • Tietoturva
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo on kokoelma avoimen lähdekoodin yrityssovelluksia, jotka kattavat kaikki yrityksesi tarpeet: asiakkuudenhallinta eli CRM, verkkokauppa, kirjanpito, varastointi, kassajärjestelmä, projektinhallinta, jne.

Odoon uniikki arvolupaus on olla samanaikaisesti erittäin helppokäyttöinen ja täysin integroitu.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now