D)
Dashboard
Definieren Sie ein Dashboard, das die von Ihnen erstellte Diagrammansicht, die Sitzungskalenderansicht und eine Listenansicht der Kurse enthält (umschaltbar auf eine Formularansicht). Dieses Dashboard sollte über einen Menüpunkt im Menü verfügbar sein und automatisch im Web-Client angezeigt werden, wenn das OpenAcademy-Hauptmenü ausgewählt wird.Erstellen Sie eine Datei openacademy/views/session_board.xml. Sie sollte die Board-Ansicht, die in dieser Ansicht referenzierten Aktionen, eine Aktion zum Öffnen des Dashboards und eine Neudefinition des Hauptmenüpunkts zum Hinzufügen der Dashboard-Aktion enthalten
Datensatzregeln
Eine Datensatzregel schränkt die Zugriffsrechte auf eine Teilmenge von Datensätzen des gegebenen Modells ein. Eine Regel ist ein Datensatz des Modells ir.rule und ist mit einem Modell, einer Reihe von Gruppen (Feld many2many), Berechtigungen, für die die Einschränkung gilt, und einer Domäne verknüpft. Die Domäne gibt an, auf welche Datensätze die Zugriffsrechte beschränkt sind. Hier ist ein Beispiel für eine Regel, die das Löschen von Leads verhindert, die sich nicht im Zustand cancel befinden. Beachten Sie, dass der Wert der Feldgruppen der gleichen Konvention folgen muss wie die Methode write() der ORM.Record ruleAdd a record rule für den Modellkurs und die Gruppe "OpenAcademy / Manager", die den Schreib- und Entkopplungszugriff auf den Verantwortlichen eines Kurses beschränkt. Wenn ein Kurs keinen Verantwortlichen hat, müssen alle Benutzer der Gruppe in der Lage sein, ihn zu ändern.
Daten speichern in Odoo
Odoo-Modelle werden auf Datenbanktabellen abgebildet.
Im vorigen Abschnitt haben wir gerade eine Liste von Zeichenketten angezeigt, die statisch in den Python-Code eingegeben wurden. Dies erlaubt keine Änderungen oder persistente Speicherung, so dass wir unsere Daten nun in die Datenbank verschieben.
Demo-Daten
Der zweite Schritt besteht darin, dem System einige Demo-Daten hinzuzufügen, damit es leicht getestet werden kann. Dies geschieht durch Hinzufügen einer Demo-Datendatei, die vom Manifest aus verlinkt werden muss:
Datendateien können für Demo- und Nicht-Demodemodaten verwendet werden. Demo-Daten werden nur im "Demonstrationsmodus" geladen und können für Flusstests und Demonstrationen verwendet werden, Nicht-Demo-Daten werden immer geladen und als anfängliche Systemeinrichtung verwendet. In diesem Fall verwenden wir Demonstrationsdaten, weil ein tatsächlicher Benutzer des Systems seine eigene Lehrerliste eingeben oder importieren möchte; diese Liste ist nur zum Testen nützlich.
DOM - Einfacheres Binden von DOM-Ereignissen
Wir haben zuvor DOM-Ereignisse mit normalen jQuery-Ereignishandlern (z.B. .click() oder .change()) an Widget-Elemente gebunden:Obwohl dies funktioniert, hat es einige Probleme:
1. es ist ziemlich ausführlich
2. es unterstützt nicht das Ersetzen des Wurzelelements des Widgets zur Laufzeit, da das Binden nur beim Ausführen von start() (während der Widget-Initialisierung) durchgeführt wird
3. es erfordert die Behandlung dieser Bindung issuesevents ist ein Objekt (Mapping) eines Ereignisses auf die Funktion oder Methode, die aufgerufen werden soll, wenn das Ereignis ausgelöst wird:
- der Schlüssel ist ein Ereignisname, möglicherweise mit einem CSS-Selektor verfeinert, in welchem Fall die Funktion oder Methode nur dann ausgeführt wird, wenn das Ereignis auf einem ausgewählten Unterelement eintritt: click wird alle Klicks innerhalb des Widgets behandeln, aber click . my_button behandelt nur Klicks in Elementen mit der my_button-Klasse
- der Wert ist die Aktion, die ausgeführt werden soll, wenn das Ereignis ausgelöst wird. In beiden Fällen ist dies die Widget-Instanz, und der Handler erhält einen einzigen Parameter, das jQuery-Ereignisobjekt für das Ereignis.
Domains
In Odoo sind Suchdomänen Werte, die Bedingungen auf Datensätzen kodieren. Eine Domäne ist eine Liste von Kriterien, die zur Auswahl einer Teilmenge der Datensätze eines Modells verwendet wird. Jedes Kriterium ist ein Tripel mit einem Feldnamen, einem Operator und einem Wert. Standardmäßig werden Kriterien mit einem impliziten UND kombiniert. Die logischen Operatoren & (AND), | (OR) und ! (NOT) können zur expliziten Kombination von Kriterien verwendet werden. Sie werden in Präfix-Position verwendet (der Operator wird vor seinen Argumenten eingefügt und nicht dazwischen).
Zum Beispiel, um Produkte auszuwählen, "die Dienstleistungen sind ODER einen Stückpreis haben, der NICHT zwischen 1000 und 2000 liegt": ['|', ('Produkt_Typ', '=', 'Dienstleistung'), '!', '&', ('Stückpreis', '>=', 1000), ('Stückpreis', '<', 2000)]]
Ein Domänenparameter kann zu relationalen Feldern hinzugefügt werden, um gültige Datensätze für die Beziehung zu begrenzen, wenn versucht wird, Datensätze in der Client-Schnittstelle auszuwählen.berechnete Felder und StandardwerteFelder wurden bisher direkt in der Datenbank gespeichert und direkt aus der Datenbank abgerufen. Felder können auch berechnet werden. In diesem Fall wird der Wert des Feldes nicht aus der Datenbank abgerufen, sondern on-the-fly durch Aufruf einer Methode des Modells berechnet.Um ein berechnetes Feld zu erstellen, erstellen Sie ein Feld und setzen Sie sein Attribut compute auf den Namen einer Methode. Die Berechnungsmethode sollte einfach den Wert des zu berechnenden Feldes für jeden Datensatz in sich selbst festlegen.