SE - Assets - když chci vytvořený prostředek přiřadit k cizí osobě, tak to zhavaruje. #423

Open
opened 2020-04-19 01:47:35 +02:00 by Podhorecky · 10 comments
Podhorecky commented 2020-04-19 01:47:35 +02:00 (Migrated from git.spotter.cz)
  1. instance Demo (mam do něj naimportované nějaké chaotické osoby z různých jiných Org. Osoby nesouvisí s Organizací, kterou používám pro testy. Tato Organizace totiž pod sebou musí mít Facility.)

  2. modul Asset > Create Asset - vyplnim minimum, typ assetu je Other

  3. záložka Log, spodní tlačítko Assign to person

  4. po vyplnění cizí osoby kromě mne v poli Assigned To: vznikne ticket (viz níže)

  5. v případě vyplnění mne (= admin) v poli Assigned To: se formulář zapíše OK

  6. další použití tlačítka Assign to person a změny na jiné osoby už se zapisují OK.

Traceback (most recent call last):
  File "/srv/web2py/gluon/restricted.py", line 219, in restricted
    exec(ccode, environment)
  File "/srv/web2py/applications/eden/controllers/asset.py", line 217, in <module>
  File "/srv/web2py/gluon/globals.py", line 421, in <lambda>
    self._caller = lambda f: f()
  File "/srv/web2py/applications/eden/controllers/asset.py", line 47, in asset
    return s3db.asset_controller()
  File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 1312, in asset_controller
    output = current.rest_controller("asset", "asset",
  File "/srv/web2py/applications/eden/models/00_utils.py", line 245, in s3_rest_controller
    output = r(**attr)
  File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 691, in __call__
    output = self.resource.crud(self, **attr)
  File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 1775, in __call__
    output = self.apply_method(r, **attr)
  File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 104, in apply_method
    output = self.create(r, **attr)
  File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 387, in create
    output["form"] = self.sqlform(request = request,
  File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 467, in __call__
    success, error = self.process(form,
  File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 728, in process
    callback(onaccept, form, tablename=tablename)
  File "/srv/web2py/gluon/tools.py", line 81, in callback
    [action(form) for action in actions]
  File "/srv/web2py/gluon/tools.py", line 81, in <listcomp>
    [action(form) for action in actions]
  File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 821, in asset_log_onaccept
    location_id = asset_tracker.set_location(form_vars.person_id,
  File "/srv/web2py/applications/eden/modules/s3/s3track.py", line 370, in set_location
    ptable.insert(**data)
  File "/srv/web2py/gluon/packages/dal/pydal/objects.py", line 762, in insert
    ret = self._db._adapter.insert(self, row.op_values())
  File "/srv/web2py/gluon/packages/dal/pydal/adapters/base.py", line 487, in insert
    raise e
  File "/srv/web2py/gluon/packages/dal/pydal/adapters/base.py", line 482, in insert
    self.execute(query)
  File "/srv/web2py/gluon/packages/dal/pydal/adapters/__init__.py", line 67, in wrap
    return f(*args, **kwargs)
  File "/srv/web2py/gluon/packages/dal/pydal/adapters/base.py", line 413, in execute
    rv = self.cursor.execute(command, *args[1:], **kwargs)
psycopg2.errors.ForeignKeyViolation: insert or update on table "sit_presence" violates foreign key constraint "sit_presence_location_id_fkey"
DETAIL:  Key (location_id)=(428) is not present in table "gis_location".

ovšem když to samé zopakuji s typem assetu vehicle

  1. instance Demo

  2. modul Asset > Create Asset - vyplnim minimum, typ assetu je Vehicle

  3. záložka Log, spodní tlačítko Assign to person

  4. po vyplnění osoby a odeslání se záznam provede OK.

(Pro vehicle se také dá vytvořit posádka (staff) přiřazením různých osob. Tohle jsme tuším opravovali před rokem, zlobilo to, pak to opravili.)

Co tedy pozoruji:

Havaruje jen u vytvořeného Assetu, který není vozidlem. Chci asset přiřadit k cizí osobě. (ne k sobě). Pokud se to jednou podaří, další změny osob nebo jiných formulážových parametrů už pak jdou provést.

Taková situace může být v praxi např: Firemní telefon, patří osobě A... je potřeba ho opravit, tak se změní status telefonu na rozbitý a předá se osobě B.... Další operace s přiřazením na jinou osobu se udělá až když je opravený --> změní se status a osoba která ho používá.

1. instance Demo (mam do něj naimportované nějaké chaotické osoby z různých jiných Org. Osoby nesouvisí s Organizací, kterou používám pro testy. Tato Organizace totiž pod sebou musí mít Facility.) 2. modul Asset > Create Asset - vyplnim minimum, typ assetu je **Other** 3. záložka Log, spodní tlačítko **Assign to person** 4. po vyplnění cizí osoby kromě mne v poli **Assigned To:** vznikne ticket (viz níže) 5. v případě vyplnění mne (= admin) v poli **Assigned To:** se formulář zapíše OK 6. další použití tlačítka **Assign to person** a změny na jiné osoby už se zapisují OK. ``` Traceback (most recent call last): File "/srv/web2py/gluon/restricted.py", line 219, in restricted exec(ccode, environment) File "/srv/web2py/applications/eden/controllers/asset.py", line 217, in <module> File "/srv/web2py/gluon/globals.py", line 421, in <lambda> self._caller = lambda f: f() File "/srv/web2py/applications/eden/controllers/asset.py", line 47, in asset return s3db.asset_controller() File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 1312, in asset_controller output = current.rest_controller("asset", "asset", File "/srv/web2py/applications/eden/models/00_utils.py", line 245, in s3_rest_controller output = r(**attr) File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 691, in __call__ output = self.resource.crud(self, **attr) File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 1775, in __call__ output = self.apply_method(r, **attr) File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 104, in apply_method output = self.create(r, **attr) File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 387, in create output["form"] = self.sqlform(request = request, File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 467, in __call__ success, error = self.process(form, File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 728, in process callback(onaccept, form, tablename=tablename) File "/srv/web2py/gluon/tools.py", line 81, in callback [action(form) for action in actions] File "/srv/web2py/gluon/tools.py", line 81, in <listcomp> [action(form) for action in actions] File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 821, in asset_log_onaccept location_id = asset_tracker.set_location(form_vars.person_id, File "/srv/web2py/applications/eden/modules/s3/s3track.py", line 370, in set_location ptable.insert(**data) File "/srv/web2py/gluon/packages/dal/pydal/objects.py", line 762, in insert ret = self._db._adapter.insert(self, row.op_values()) File "/srv/web2py/gluon/packages/dal/pydal/adapters/base.py", line 487, in insert raise e File "/srv/web2py/gluon/packages/dal/pydal/adapters/base.py", line 482, in insert self.execute(query) File "/srv/web2py/gluon/packages/dal/pydal/adapters/__init__.py", line 67, in wrap return f(*args, **kwargs) File "/srv/web2py/gluon/packages/dal/pydal/adapters/base.py", line 413, in execute rv = self.cursor.execute(command, *args[1:], **kwargs) psycopg2.errors.ForeignKeyViolation: insert or update on table "sit_presence" violates foreign key constraint "sit_presence_location_id_fkey" DETAIL: Key (location_id)=(428) is not present in table "gis_location". ``` ovšem když to samé zopakuji s typem assetu **vehicle** 1. instance Demo 2. modul Asset > *Create Asset* - vyplnim minimum, typ assetu je *Vehicle* 3. záložka Log, spodní tlačítko **Assign to person** 4. po vyplnění osoby a odeslání se záznam provede OK. (Pro vehicle se také dá vytvořit posádka (staff) přiřazením různých osob. Tohle jsme tuším opravovali před rokem, zlobilo to, pak to opravili.) Co tedy pozoruji: Havaruje jen u vytvořeného Assetu, který není vozidlem. Chci asset přiřadit k cizí osobě. (ne k sobě). Pokud se to jednou podaří, další změny osob nebo jiných formulážových parametrů už pak jdou provést. Taková situace může být v praxi např: Firemní telefon, patří osobě A... je potřeba ho opravit, tak se změní status telefonu na rozbitý a předá se osobě B.... Další operace s přiřazením na jinou osobu se udělá až když je opravený --> změní se status a osoba která ho používá.
Podhorecky commented 2020-04-19 01:47:35 +02:00 (Migrated from git.spotter.cz)

changed milestone to %2

changed milestone to %2
Podhorecky commented 2020-04-19 01:49:09 +02:00 (Migrated from git.spotter.cz)

changed the description

changed the description
Podhorecky commented 2020-04-19 01:57:37 +02:00 (Migrated from git.spotter.cz)

aha, zdá se že existují ještě jiné kombinace, které také padají do ticketu, ale jiné chyby. Například u prostředku který se snažím přiřadit k Organizaci, nebo k Facility.

po vyplnění minimum údajů:

Traceback (most recent call last):
  File "/srv/web2py/gluon/restricted.py", line 219, in restricted
    exec(ccode, environment)
  File "/srv/web2py/applications/eden/controllers/asset.py", line 217, in <module>
  File "/srv/web2py/gluon/globals.py", line 421, in <lambda>
    self._caller = lambda f: f()
  File "/srv/web2py/applications/eden/controllers/asset.py", line 47, in asset
    return s3db.asset_controller()
  File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 1312, in asset_controller
    output = current.rest_controller("asset", "asset",
  File "/srv/web2py/applications/eden/models/00_utils.py", line 245, in s3_rest_controller
    output = r(**attr)
  File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 691, in __call__
    output = self.resource.crud(self, **attr)
  File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 1775, in __call__
    output = self.apply_method(r, **attr)
  File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 104, in apply_method
    output = self.create(r, **attr)
  File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 387, in create
    output["form"] = self.sqlform(request = request,
  File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 467, in __call__
    success, error = self.process(form,
  File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 728, in process
    callback(onaccept, form, tablename=tablename)
  File "/srv/web2py/gluon/tools.py", line 81, in callback
    [action(form) for action in actions]
  File "/srv/web2py/gluon/tools.py", line 81, in <listcomp>
    [action(form) for action in actions]
  File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 797, in asset_log_onaccept
    asset_tracker.check_in(db.org_site, site_id,
  File "/srv/web2py/applications/eden/modules/s3/s3track.py", line 421, in check_in
    record_id = record[table._id] if record else None
  File "/srv/web2py/gluon/packages/dal/pydal/objects.py", line 103, in __getitem__
    raise KeyError(key)
KeyError: 'org_site.site_id'
aha, zdá se že existují ještě jiné kombinace, které také padají do ticketu, ale jiné chyby. Například u prostředku který se snažím přiřadit k Organizaci, nebo k Facility. po vyplnění minimum údajů: ``` Traceback (most recent call last): File "/srv/web2py/gluon/restricted.py", line 219, in restricted exec(ccode, environment) File "/srv/web2py/applications/eden/controllers/asset.py", line 217, in <module> File "/srv/web2py/gluon/globals.py", line 421, in <lambda> self._caller = lambda f: f() File "/srv/web2py/applications/eden/controllers/asset.py", line 47, in asset return s3db.asset_controller() File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 1312, in asset_controller output = current.rest_controller("asset", "asset", File "/srv/web2py/applications/eden/models/00_utils.py", line 245, in s3_rest_controller output = r(**attr) File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 691, in __call__ output = self.resource.crud(self, **attr) File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 1775, in __call__ output = self.apply_method(r, **attr) File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 104, in apply_method output = self.create(r, **attr) File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 387, in create output["form"] = self.sqlform(request = request, File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 467, in __call__ success, error = self.process(form, File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 728, in process callback(onaccept, form, tablename=tablename) File "/srv/web2py/gluon/tools.py", line 81, in callback [action(form) for action in actions] File "/srv/web2py/gluon/tools.py", line 81, in <listcomp> [action(form) for action in actions] File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 797, in asset_log_onaccept asset_tracker.check_in(db.org_site, site_id, File "/srv/web2py/applications/eden/modules/s3/s3track.py", line 421, in check_in record_id = record[table._id] if record else None File "/srv/web2py/gluon/packages/dal/pydal/objects.py", line 103, in __getitem__ raise KeyError(key) KeyError: 'org_site.site_id' ```
Disassembler commented 2020-04-23 21:30:12 +02:00 (Migrated from git.spotter.cz)

Tady asi budu potřebovat víc informací / kroků k reprodukci. Ani jeden ze zmíněných scénářů, tak jak jej popisujete, mi nepadá. Oba navíc vypadají jako když předtím bylo nějak neopatrně manipulováno s databází, protože ten první se třeba snaží přiřadit cizí klíč, který v databázi vůbec neexistuje, což je chyba o tři úrovně níže než Sahana běžně operuje (čímž netvrdím, že to není možné). Navíc se tam operuje s lokací a tabulkou "sit_presence", která má co do činění s nastavením "přitomnosti" pomocí geolokačního API prohlížeče při přihlašování a odhlašování uživatelů, takže může jít o problém nesouvisející s assety.

Tady asi budu potřebovat víc informací / kroků k reprodukci. Ani jeden ze zmíněných scénářů, tak jak jej popisujete, mi nepadá. Oba navíc vypadají jako když předtím bylo nějak neopatrně manipulováno s databází, protože ten první se třeba snaží přiřadit cizí klíč, který v databázi vůbec neexistuje, což je chyba o tři úrovně níže než Sahana běžně operuje (čímž netvrdím, že to není možné). Navíc se tam operuje s lokací a tabulkou "*sit_presence*", která má co do činění s nastavením "přitomnosti" pomocí geolokačního API prohlížeče při přihlašování a odhlašování uživatelů, takže může jít o problém nesouvisející s assety.
Podhorecky commented 2020-04-23 23:00:57 +02:00 (Migrated from git.spotter.cz)

jo, tak ticket jsem vyloudil znovu. Ale je to peklo zjistit nejkratší možnou cestu jak to udělat. Furt se mi to nedaří.

Když testuji, tak u každého dropdownu vytvářím novou položku s pomocí pop-up okna.

Tim se mi vytvoří nějaký nový záznam, ale neni úplně jisté, že tento záznam osoby nebo item je stejně kvalitní, než kdybych ho vytvářel přímo jinde v modulu.

Pak se snažím Asset přiřadit k osobě a ve formuláři záměrně měním všechny mandatory pole na něco jiného.

Je potřeba si všimnout, že se změní pole s položkou osoby na kterou Asset měním na Assigned To:

Tato položka se neobjeví poprvé, když zakládám Asset, ale teprv když měním Asset na jiný stav.

ehm... ale teď to jako na potvoru nepadá.
Takže další pokus leda všechno smazat a začít úplně znova.

jo, tak ticket jsem vyloudil znovu. Ale je to peklo zjistit nejkratší možnou cestu jak to udělat. Furt se mi to nedaří. Když testuji, tak u každého dropdownu vytvářím novou položku s pomocí pop-up okna. Tim se mi vytvoří nějaký nový záznam, ale neni úplně jisté, že tento záznam osoby nebo item je stejně kvalitní, než kdybych ho vytvářel přímo jinde v modulu. Pak se snažím Asset přiřadit k osobě a ve formuláři záměrně měním všechny mandatory pole na něco jiného. Je potřeba si všimnout, že se změní pole s položkou osoby na kterou Asset měním na **Assigned To:** Tato položka se neobjeví poprvé, když zakládám Asset, ale teprv když měním Asset na jiný stav. ehm... ale teď to jako na potvoru nepadá. Takže další pokus leda všechno smazat a začít úplně znova.
Podhorecky commented 2020-04-23 23:16:19 +02:00 (Migrated from git.spotter.cz)

aha, chyba se mi stala i když po celém to vytvoření zmáčknu dole tlačítko assign to facility/site a v tom formuláři vyplňuji zas nějaké facility a Room Jelikož room byla defaultně pomlčka, tak jsem vyplnil v pop-upu novou Room a uložil.

podobně to spadlo i k assign to Organisation.
Ve formu taky překlikám na jinou Organizaci.
Možná že tedy, když při změně stavu Assetu přiřazuji z Person na Facility nebo na Organisation? ....

(přiznávám, že při tak obrovském množství možných kombinací ve formulářích vůbec neuvažuji, zda by to co naklikám v reálném světě dávalo smysl. Spoléhám se tedy, že logika formulářů už nějaký takový rámec má - a na mne je tedy odhalovat kombinaci která havaruje v tomto smysluplném rámci. Havaruje z důvodů bugu. Pokud formuláře umožňují vyrábět nějaké nesmyslné scénáře, tak to je problém návrhu od F+D)

Ticket:

Traceback (most recent call last):
  File "/srv/web2py/gluon/restricted.py", line 219, in restricted
    exec(ccode, environment)
  File "/srv/web2py/applications/eden/controllers/asset.py", line 217, in <module>
  File "/srv/web2py/gluon/globals.py", line 429, in <lambda>
    self._caller = lambda f: f()
  File "/srv/web2py/applications/eden/controllers/asset.py", line 47, in asset
    return s3db.asset_controller()
  File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 1312, in asset_controller
    output = current.rest_controller("asset", "asset",
  File "/srv/web2py/applications/eden/models/00_utils.py", line 245, in s3_rest_controller
    output = r(**attr)
  File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 691, in __call__
    output = self.resource.crud(self, **attr)
  File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 1775, in __call__
    output = self.apply_method(r, **attr)
  File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 104, in apply_method
    output = self.create(r, **attr)
  File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 387, in create
    output["form"] = self.sqlform(request = request,
  File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 467, in __call__
    success, error = self.process(form,
  File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 728, in process
    callback(onaccept, form, tablename=tablename)
  File "/srv/web2py/gluon/tools.py", line 81, in callback
    [action(form) for action in actions]
  File "/srv/web2py/gluon/tools.py", line 81, in <listcomp>
    [action(form) for action in actions]
  File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 797, in asset_log_onaccept
    asset_tracker.check_in(db.org_site, site_id,
  File "/srv/web2py/applications/eden/modules/s3/s3track.py", line 421, in check_in
    record_id = record[table._id] if record else None
  File "/srv/web2py/gluon/packages/dal/pydal/objects.py", line 103, in __getitem__
    raise KeyError(key)
KeyError: 'org_site.site_id'
aha, chyba se mi stala i když po celém to vytvoření zmáčknu dole tlačítko **assign to facility/site** a v tom formuláři vyplňuji zas nějaké facility a Room Jelikož room byla defaultně pomlčka, tak jsem vyplnil v pop-upu novou Room a uložil. podobně to spadlo i k **assign to Organisation**. Ve formu taky překlikám na jinou Organizaci. Možná že tedy, když při změně stavu Assetu přiřazuji z Person na Facility nebo na Organisation? .... (přiznávám, že při tak obrovském množství možných kombinací ve formulářích vůbec neuvažuji, zda by to co naklikám v reálném světě dávalo smysl. Spoléhám se tedy, že logika formulářů už nějaký takový rámec má - a na mne je tedy odhalovat kombinaci která havaruje v tomto smysluplném rámci. Havaruje z důvodů bugu. Pokud formuláře umožňují vyrábět nějaké nesmyslné scénáře, tak to je problém návrhu od F+D) Ticket: ``` Traceback (most recent call last): File "/srv/web2py/gluon/restricted.py", line 219, in restricted exec(ccode, environment) File "/srv/web2py/applications/eden/controllers/asset.py", line 217, in <module> File "/srv/web2py/gluon/globals.py", line 429, in <lambda> self._caller = lambda f: f() File "/srv/web2py/applications/eden/controllers/asset.py", line 47, in asset return s3db.asset_controller() File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 1312, in asset_controller output = current.rest_controller("asset", "asset", File "/srv/web2py/applications/eden/models/00_utils.py", line 245, in s3_rest_controller output = r(**attr) File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 691, in __call__ output = self.resource.crud(self, **attr) File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 1775, in __call__ output = self.apply_method(r, **attr) File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 104, in apply_method output = self.create(r, **attr) File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 387, in create output["form"] = self.sqlform(request = request, File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 467, in __call__ success, error = self.process(form, File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 728, in process callback(onaccept, form, tablename=tablename) File "/srv/web2py/gluon/tools.py", line 81, in callback [action(form) for action in actions] File "/srv/web2py/gluon/tools.py", line 81, in <listcomp> [action(form) for action in actions] File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 797, in asset_log_onaccept asset_tracker.check_in(db.org_site, site_id, File "/srv/web2py/applications/eden/modules/s3/s3track.py", line 421, in check_in record_id = record[table._id] if record else None File "/srv/web2py/gluon/packages/dal/pydal/objects.py", line 103, in __getitem__ raise KeyError(key) KeyError: 'org_site.site_id' ```
Podhorecky commented 2020-04-24 00:02:08 +02:00 (Migrated from git.spotter.cz)

Jinak v DB tabulkách jsem nic neoperoval, takže pokud vedou stopy k poškození DB, tak v tom jsem vyjímečně bez viny. Příčiny havárií v tomto issue ještě budu zkoumat,

Jinak v DB tabulkách jsem nic neoperoval, takže pokud vedou stopy k poškození DB, tak v tom jsem vyjímečně bez viny. Příčiny havárií v tomto issue ještě budu zkoumat,
Podhorecky commented 2020-04-25 00:17:46 +02:00 (Migrated from git.spotter.cz)

Zkoušel jsem založit Prostředek Telefon z nabídky https://sahana.spotter.dasm.cz:8443/eden/asset/asset/create (tedy nikoliv z nabídky Telefony > Vytvořit) a ten pak přiřadit dole tlačítkem k Provozovně nebo k Organizaci. Když ne na poprvé, tak napodruhé při pokusu o přiřazení k něčemu to vyrobilo ticket. Havárie vznikají přiřazováním těmi dolními tlačítky... Nepřipadá mi, že by na to měl nějaký vážný vliv kvalita vyplnění formuláře.

Traceback (most recent call last):
  File "/srv/web2py/gluon/restricted.py", line 219, in restricted
    exec(ccode, environment)
  File "/srv/web2py/applications/eden/controllers/asset.py", line 217, in <module>
  File "/srv/web2py/gluon/globals.py", line 429, in <lambda>
    self._caller = lambda f: f()
  File "/srv/web2py/applications/eden/controllers/asset.py", line 47, in asset
    return s3db.asset_controller()
  File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 1312, in asset_controller
    output = current.rest_controller("asset", "asset",
  File "/srv/web2py/applications/eden/models/00_utils.py", line 245, in s3_rest_controller
    output = r(**attr)
  File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 691, in __call__
    output = self.resource.crud(self, **attr)
  File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 1775, in __call__
    output = self.apply_method(r, **attr)
  File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 104, in apply_method
    output = self.create(r, **attr)
  File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 387, in create
    output["form"] = self.sqlform(request = request,
  File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 467, in __call__
    success, error = self.process(form,
  File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 728, in process
    callback(onaccept, form, tablename=tablename)
  File "/srv/web2py/gluon/tools.py", line 81, in callback
    [action(form) for action in actions]
  File "/srv/web2py/gluon/tools.py", line 81, in <listcomp>
    [action(form) for action in actions]
  File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 785, in asset_log_onaccept
    asset_tracker.check_in(db.org_site, form_vars.site_id,
  File "/srv/web2py/applications/eden/modules/s3/s3track.py", line 421, in check_in
    record_id = record[table._id] if record else None
  File "/srv/web2py/gluon/packages/dal/pydal/objects.py", line 103, in __getitem__
    raise KeyError(key)
KeyError: 'org_site.site_id'
Zkoušel jsem založit Prostředek Telefon z nabídky https://sahana.spotter.dasm.cz:8443/eden/asset/asset/create (tedy nikoliv z nabídky Telefony > Vytvořit) a ten pak přiřadit dole tlačítkem k Provozovně nebo k Organizaci. Když ne na poprvé, tak napodruhé při pokusu o přiřazení k něčemu to vyrobilo ticket. Havárie vznikají přiřazováním těmi dolními tlačítky... Nepřipadá mi, že by na to měl nějaký vážný vliv kvalita vyplnění formuláře. ``` Traceback (most recent call last): File "/srv/web2py/gluon/restricted.py", line 219, in restricted exec(ccode, environment) File "/srv/web2py/applications/eden/controllers/asset.py", line 217, in <module> File "/srv/web2py/gluon/globals.py", line 429, in <lambda> self._caller = lambda f: f() File "/srv/web2py/applications/eden/controllers/asset.py", line 47, in asset return s3db.asset_controller() File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 1312, in asset_controller output = current.rest_controller("asset", "asset", File "/srv/web2py/applications/eden/models/00_utils.py", line 245, in s3_rest_controller output = r(**attr) File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 691, in __call__ output = self.resource.crud(self, **attr) File "/srv/web2py/applications/eden/modules/s3/s3rest.py", line 1775, in __call__ output = self.apply_method(r, **attr) File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 104, in apply_method output = self.create(r, **attr) File "/srv/web2py/applications/eden/modules/s3/s3crud.py", line 387, in create output["form"] = self.sqlform(request = request, File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 467, in __call__ success, error = self.process(form, File "/srv/web2py/applications/eden/modules/s3/s3forms.py", line 728, in process callback(onaccept, form, tablename=tablename) File "/srv/web2py/gluon/tools.py", line 81, in callback [action(form) for action in actions] File "/srv/web2py/gluon/tools.py", line 81, in <listcomp> [action(form) for action in actions] File "/srv/web2py/applications/eden/modules/s3db/asset.py", line 785, in asset_log_onaccept asset_tracker.check_in(db.org_site, form_vars.site_id, File "/srv/web2py/applications/eden/modules/s3/s3track.py", line 421, in check_in record_id = record[table._id] if record else None File "/srv/web2py/gluon/packages/dal/pydal/objects.py", line 103, in __getitem__ raise KeyError(key) KeyError: 'org_site.site_id' ```
Podhorecky commented 2020-04-25 16:44:48 +02:00 (Migrated from git.spotter.cz)

tak si myslím, že chyba vzniká u dvou tlačítek: Assign to Facility/Site a Assign to Organization

Firefox_Screenshot_2020-04-25T14-40-54.803Z

tak si myslím, že chyba vzniká u dvou tlačítek: **Assign to Facility/Site** a **Assign to Organization** ![Firefox_Screenshot_2020-04-25T14-40-54.803Z](/uploads/1cc65beaaf01909928af6dbc0dc7d6be/Firefox_Screenshot_2020-04-25T14-40-54.803Z.png)
Podhorecky commented 2020-05-01 01:03:54 +02:00 (Migrated from git.spotter.cz)

pozorování: Instance Demo, vyrobení nového prostředku v modulu Assets.

Přiřazení čerstvého prostředku k Organisation tlačítkem = proběhne OK

následné přeřazení prostředku na Person (s nutnými změnami) tlačítkem = proběhne OK

následné přeřazení prostředku na Facility (s nutnými změnami) tlačítkem = havaruje.

Tady spekuluji, že vzniká problém při nějakém křížovém přeřazování z Osoby na Facility nebo Organisation. Možná že přeřazení na osobu má nějakou vlastnost, co už pak u Facility nebo Organisation vyrobí havárii

pozorování: Instance **Demo**, vyrobení nového prostředku v modulu **Assets**. Přiřazení čerstvého prostředku k Organisation tlačítkem = proběhne OK následné přeřazení prostředku na Person (s nutnými změnami) tlačítkem = proběhne OK následné přeřazení prostředku na Facility (s nutnými změnami) tlačítkem = **havaruje**. Tady spekuluji, že vzniká problém při nějakém **křížovém přeřazování z Osoby na Facility nebo Organisation.** Možná že přeřazení na osobu má nějakou vlastnost, co už pak u Facility nebo Organisation vyrobí havárii
Sign in to join this conversation.
No project
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Spotter-Cluster/Spotter-VM#423
No description provided.