Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

database: change reassignment selection to modal dialogue #965

Merged
merged 8 commits into from
Nov 3, 2024

Conversation

Morg42
Copy link
Member

@Morg42 Morg42 commented Oct 14, 2024

Wie im gitter schon geschrieben, komme ich hier nicht weiter. Die Parameter orphanID und newID (im WebUI/JS) sollten an das WebIf (orphan-id, new-id / Python) übergeben werden. Das geht aber (hier?) nicht mehr, und ich habe keinen Plan, wieso.

Falls jemand dazu einen Vorschlag hat, wäre das super...

@bmxp
Copy link
Member

bmxp commented Oct 14, 2024

Ich rate mal ins Blaue: Du übergibst mit shngPost nur das dict mit orphan_id und new_id. Im Python Code wird unter dem Cherrypy expose aber noch mehr erwartet was nicht none ist, sonst bricht es ab. Hast Du das mal geprüft?

@Morg42
Copy link
Member Author

Morg42 commented Oct 14, 2024

Zum Einen habe ich - soweit ich das sehen kann - denselben Aufruf wie im "alten" PR, und da schien es zu gehen:

alt: shngPost('', {orphanID: orphanID, newID: value});
neu: shngPost('', {orphan_id: orphanID, new_id: newID});

Ich habe die Parameter zum Testen umbenannt und die Variablen aufgrund der Umstellung auf den Modaldialog.

in webif.py:
alt:

def index(self, reload=None, action=None, item_id=None, item_path=None, time_end=None, day=None, month=None, year=None, time_orig=None, changed_orig=None, orphanID=None, newID=None):
        pagelength = self.plugin.get_parameter_value('webif_pagelength')
        if item_path is not None:
            item = self.plugin.items.return_item(item_path)
        delete_triggered = False
        if orphanID is not None and newID is not None and orphanID != newID:
            self.plugin.reassign_orphaned_id(orphanID, to=newID)

neu:

def index(self, reload=None, action=None, item_id=None, item_path=None, time_end=None, day=None, month=None, year=None, time_orig=None, changed_orig=None, orphan_id=None, new_id=None):
        pagelength = self.plugin.get_parameter_value('webif_pagelength')
        if item_path is not None:
            item = self.plugin.items.return_item(item_path)
        delete_triggered = False

        self.logger.error(f'index called with oid {orphan_id} and nid {new_id}')

        if orphan_id is not None and new_id is not None and orphan_id != new_id:

            self.logger.error(f'calling reassign for {orphan_id} and {new_id}')

            self.plugin.reassign_orphaned_id(orphan_id, to=new_id)

Ich hab die debug-Logs mal dringelassen; die Parameter orphan_id und new_id sind immer None, egal, welche Werte ich mitgebe; und dass, obwohl die Variablen vor dem JS-Aufruf von shngPost Werte haben (zuletzt zum Testen 29 und 32).

Alle anderen Parameter von webif/__init__.py sind optional und leer; ich wüsste nicht, wo es da haken sollte. Zwischendurch hat es ja funktioniert, aber ich weiß nicht, wo da der Wurm ist. Und ich weiß auch nicht, wo ich das debuggen könnte...

@Morg42
Copy link
Member Author

Morg42 commented Oct 14, 2024

Komisch. Jetzt im Test läuft es auf einmal - nur ein Reload triggert den reassign immer wieder (er "löscht" die POST-Parameter nicht). Das tut zwar nicht weh, weil es nichts zu transferieren gibt, aber schön ist das nicht. :-/ kann man das per XHR auf eine andere Methode statt index leiten? Dann wäre das vom Refresh unabhängig und könnte dann problemlos die aktualisierten Daten anzeigen...

@Morg42
Copy link
Member Author

Morg42 commented Oct 14, 2024

Okay, jetzt habe ich es mit etwas Rumprobieren nach AJAX/REST umgeschrieben, jetzt passt es soweit.

Was ich noch nicht implementiert habe (weiß nicht, wie... ): ggf. Fehlermeldungen beim Neuzuweisen (v.a. gleiche Zeitstempel) an das WebIf zurückzugeben und anzuzeigen. Falls jemand Ideen hat - gern.

Ansonsten bitte gerne testen und "feedbacken", ich würde es dann Ende der Woche mergen.

@Morg42 Morg42 changed the title database: change reassignment selection to modal dialogue (defunct..) database: change reassignment selection to modal dialogue Nov 3, 2024
@Morg42 Morg42 merged commit c97395e into smarthomeNG:develop Nov 3, 2024
4 checks passed
@Morg42 Morg42 deleted the db-2 branch November 3, 2024 17:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants