2016-05-04 5 views
1

Mein Problem ist folgendes:Das Speichern von Daten vor, um Datenbank zu begehen, warten auf Genehmigung von Admin

Ich baue eine mobile app Ionic-Framework, so dass das vordere Ende im Wesentlichen eine einzelne Seite AngularJS App ist. Ich verwende Django Rest Framework als Backend.

In der Anwendung sollte ein Mitarbeiter in der Lage sein, Aktualisierungen, Löschungen oder Ergänzungen von Datenbankmodellen vorzuschlagen. In meinem Schema gibt es ein "Kontaktperson" -Modell (das Felder wie Vorname, Nachname, Telefonnummer usw. hat), ein "GPS-Adressmodell" (das Felder wie Straßenname, Straßennummer, Stadt usw. hat) und ein Übergreifendes "Delivery Stop" -Modell, auf das sich praktisch alle anderen Modelle beziehen.

Was ich implementieren muss, ist ein System, bei dem ein Mitarbeiter eine Bearbeitung für ein vorhandenes Objekt vorschlagen kann, z. B. einen Kontakt (ID: 45, Vorname: 'John', Telefonnummer: "435-0000") mit einem FK Beziehung zu einem Lieferstopp (ID: 20, Titel: "Stop and Shop", Notizen: "schließt um 0600"). Der Mitarbeiter möchte die Telefonnummer auf "435-0001" aktualisieren. Das Update sollte jedoch erst dann an die Datenbank übergeben werden, wenn ein Manager das Update geprüft und genehmigt hat oder das genehmigte Update bearbeitet hat.

Ich habe ein paar Ideen, wie ich das machen könnte, aber keiner von ihnen scheint so einfach zu sein, wie ich es mir vorstellen kann. Hat jemand Vorschläge zu Best Practices in dieser Situation?

Die Anwendung wird auch eine spezielle Manager-Schnittstelle enthalten, wo sie alle vorgeschlagenen Updates/Bearbeitungen wenige und genehmigen/ablehnen können. Die Client-Seite funktioniert im Wesentlichen mit dem Delivery Stop als primäres Objekt, das alle zugehörigen Elemente in einer Registerschnittstelle (Kontakte, GPS-Adressen usw.) anzeigt. Und jedes Mal, wenn eine Bearbeitung von einem Mitarbeiter vorgeschlagen wird, erhält der zuständige Manager eine E-Mail Benachrichtigung.

Alle Vorschläge werden sehr geschätzt.

+0

Warum der Downvote? – Murcielago

Antwort

2

Wenn dies mein Projekt wäre, würde ich alle Änderungen in derselben Datenbanktabelle speichern, aber ich würde ein Feld namens "WaitingForApproval" als True markieren. Dann können Sie eine Seite für Administratoren erstellen, die alle Artikel anzeigt, die auf die Genehmigung warten. Sie können diese entweder genehmigen oder ablehnen.

Bei Ablehnung können Sie entweder diesen Datensatz löschen oder ein Feld mit der Bezeichnung "Gelöscht" als wahr markieren und sicherstellen, dass dieser Datensatz niemals angezeigt wird, es sei denn, ein Benutzer möchte gelöschte Datensätze anzeigen.

Immer, wenn Sie Daten aus der Datenbank ziehen, sollten Sie filtern, basierend darauf, ob WaitingForApproval wahr oder falsch ist (normalerweise falsch, es sei denn, es ist speziell für die Admin-Genehmigungsseite). Auf diese Weise können Sie ausstehende Änderungen in derselben Tabelle beibehalten, ohne den Rest der Anwendung zu überlasten.

Oder wenn Sie bereits viele Abfragen in der App geschrieben haben, die Sie nicht ändern möchten, können Sie diese ausstehenden Änderungen in einer anderen aber identischen Datenbanktabelle speichern. Wenn ein Administrator dies genehmigt, kopiert Ihr Back-End-Code nur die Daten aus der PendingChanges-Tabelle in die Main-Tabelle.

+0

Vielen Dank für Ihren Rat Dr. Cool. – Murcielago

Verwandte Themen