Admin Interface für SQLAlchemy mit ExtJS

Du hast eine Idee für ein Projekt?
brickenstein
User
Beiträge: 13
Registriert: Sonntag 23. November 2008, 16:18

Montag 8. Dezember 2008, 11:41

Zuallererst:
RUM ist unabhängig von TG (als WSGI-Applikation).
D.h. RUM ist insbesondere in jede andere
(mittels Deines Lieblings WSGI-Framework geschriebene)
WSGI-Applikation
einbinden
und kann dort über PEAK Rules z.B. die Userauthentifizierungsdaten,
die Deine Anwendung liefert,
berücksichtigen.

Ein paar Komponenten wie WebOb,...
benutzen wir schon direkt in RUM.

Zu TG:
TurboGears 1 baut auf CherryPy, Kid, SQLObject/SQLAlchemy auf
TurboGears 2 wechselt von CherryPy -> Pylons/Paste.

Das Verhältnis von TG zu RUM ist, dass RUM als GSOC-Projekt für TurboGears entstanden ist.
Warum Du allerdings Paste als halbgares Zeug bezeichnest ist mir nicht ganz klar.

Gruß,
Michael
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Montag 8. Dezember 2008, 13:04

Ich kann dir nicht ganz folgen. Basiert RUM also nicht auf dem TG-Framework, sondern ist eine eigenständige WSGI-Applikation mit WebOb als WSGI-Adapter?

Dass du von der Einbindung von RUM in eine andere Anwendung redest, ist interessant. Bisher hatte ich eine separate Anwendung vor Augen; kann RUM das auch sein? Als generisches Frontend für eine Datenbank, die es mittels der Fähigkeiten von SQLAlchemy reflektiert?
brickenstein
User
Beiträge: 13
Registriert: Sonntag 23. November 2008, 16:18

Montag 8. Dezember 2008, 13:22

Eigentlich hast Du das schon recht gut verstanden:
RUM basiert nicht auf TurboGears, sondern ist eine reine WSGI-Applikation.

RUM kann man auch im stand-alone Modus betreiben, gar kein Problem.
Normalerweise ist das auch das, was wir während der Entwicklung tun.

Zur Reflektion:
Ich habe an Datenbankreflektion im Stil von SQLSoup gearbeitet.
Für Testzwecke (um RUM zu testen) und sehr kleine Projekte kann das interessant sein.
Es gibt ein Skript, das man aufrufen kann:
rumalchemy [options] url
wobei die URL die URL der Datenbank ist.

Für einen ersthaften Einsatz würde ich in jedem Fall empfehlen ein SQLAlchemy-Model zu schreiben, weil man gewisse Dinge doch anpassen kann.
Das SQLAlchemy-Model selbst kann allerdings, wenn Du das (wie ich) bevorzugst, die Tabellen selbst von der Datenbank reflektieren und nur einige wenige Dinge anpassen.

Soweit ich Deinen Einsatszweck verstanden habe, sollte es gut dafür geeignet sein: als generisches Frontend für Datenbanken.
Gruß,
Michael
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Montag 8. Dezember 2008, 16:51

Ah, das hört sich doch schon besser an.

Eigentlich bevorzuge ich es, das Model in Python zu definieren und daraus dann SQL-CREATE-Statements zu generieren. Ein Frontend möchte ich aber nicht in jede Anwendung integrieren und unabhängiges möchte ich nicht mit dem Model füttern (Import-Abhängigkeiten des Models etc.). Daher würde ich eine zentrale Instanz des Frontends vorziehen, die eben Reflektion nutzt.
brickenstein
User
Beiträge: 13
Registriert: Sonntag 23. November 2008, 16:18

Dienstag 9. Dezember 2008, 08:02

Also wie gesagt, wir haben eine Reflektionsebene, die nur unter Angabe der URL funktioniert.

Du solltest einfach erst einmal ausprobieren, ob das für Deine Zwecke ausreicht.
RUM ist sehr mächtig, d.h. wir zielen auch darauf, dass man es Endnutzern in die Hand geben kann.
Reflektion funktioniert bis zu einem bestimmten Grad gut:
- Spaltentypen auslesen
- Eigenschaften wie nullable, maximale Lenge von Texteinträgen reflektiere
- einige Relationen erkennen (vor Allem one-to-many)

Problematischer wird es bei Dingen, wie dem Zusammenspiel von Tabellen (Relationen).

Aber probier es erst einmal einfach aus, wie es mit Deinen Daten aussieht.

Unser Code, die Modelle automatisch zu erstellen beruht auf einer verbesserten Version von SQLSoup.

Gruß,
Michael
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Dienstag 9. Dezember 2008, 15:39

RUM scheint ja wirklich nett zu sein, allerdings hat es mir ein paar zu viele Abhängigkeiten, aber vlt wird ja aus nem werkzeug fork was :)

EDIT:// Btw bringt mal eure Abhängigkeiten in Ordnung...
(installiert es mal wie in den Docs beschrieben mit virtualenv --no-site-packages --> fail!). Ich hab mich jetzt halbwegs drum rumgewurschtelt, vlt komm ich heut noch zum testen^^

EDIT2:// Btw in euere setup.cfg ist ne toscawidgets indexurl, dadurch kann ein user, der sich nicht auskennt Routes 1.10 nicht installieren, da das auf der indexseite nicht ist...

EDIT3:// Erster Aufruf dauert ewig, auch wenn Introspection nen dev Feature ist, es gehört gleich beim serverstart gemacht, sonst wartet man sich zu tode.
brickenstein
User
Beiträge: 13
Registriert: Sonntag 23. November 2008, 16:18

Dienstag 9. Dezember 2008, 16:01

Hi danke auch für die Hinweise zum Setup, ich versuche zu verbessern, was ich kann (leider bin ich auf toscawidgets.org kein admin).

Zum Testen würde ich sicherstellen,
dass Du die aktuelle Mercurial Distribution benutzt,
die ist viel weiter fortgeschritten und stabiler als die 0.1.

http://groups.google.com/group/turbogea ... a5f7866963

Gruß,
Michael
brickenstein
User
Beiträge: 13
Registriert: Sonntag 23. November 2008, 16:18

Dienstag 9. Dezember 2008, 16:21

ok, index rausgenommen (in aktueller mercurial version).
Danke.

Die Geschwindigkeit ist definitiv noch zu optimieren.
Mir ist allerdings aufgefallen, dass das Ding auf meinem lahmen Webserver im Produktivmod gar nicht mal so langsam ist (das Logging scheint noch viel Platz wegzunehmen). Im Profiler sind mir außerdem die Routes als Performancefresser aufgefallen (ich hoffe, dass ich das richtig interpretiert habe, hat mich allerdings sehr verwundert).
Gruß,
Michael
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Montag 5. Januar 2009, 17:43

Catwalk 2.0 scheint nun auch auf SQLAlchemy abzuzielen. Wäre evtl auch ein brauchbares Werkzeug. :wink:
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
brickenstein
User
Beiträge: 13
Registriert: Sonntag 23. November 2008, 16:18

Dienstag 27. Januar 2009, 08:27

RUM 0.2 ist gerade frisch released worden

Hier die neue Homepage:
http://python-rum.org/

und das Announcement
http://groups.google.com/group/rum-disc ... 0ed72c394c

Die Demo auf dem neuen Server
http://demo.python-rum.org/
sollte jetzt auch besser funktionieren.

Gruß,
Michael
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Dienstag 27. Januar 2009, 09:21

Läuft immer noch langsam aber wenigstens Fehlerfrei. Auch das UI scheint jetzt etwas hübscher zu sein (auch wenn es immer noch nach Programmierer riecht :wink: ). Was mir gerade so spontant auffällt, Relationen werden mit <Select> Listen dargestellt. Das skaliert nicht gerade gut mit mehr als 10 Datensätzen. Sortieren nach Fremdschlüsseln scheint auch nicht zu gehen. Werde es mir dann mal genauer ansehen wenn ich mehr Zeit dazu habe.

Und zum eigentlichen Topic, nach dem ich von legal@extjs.com immer noch keine Antworten bezüglich ihrer Lizenzpolitik bekommen habe wird mir das langsam aber sicher zu blöd.

- Jonas
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
brickenstein
User
Beiträge: 13
Registriert: Sonntag 23. November 2008, 16:18

Dienstag 27. Januar 2009, 09:39

In der aktuellen Version haben wir auf schöne JS-Funktionalität zur Bearbeitung von Relationen verzichtet.
Das ist aber ein sehr wichtiger Punkt für uns. Wir bevorzugen allerdings Dojo.
Ich persönlich habe RUM im produktiven Einsatz und dort dann entsprechende Ajax-Widgets eingesetzt (es lässt sich nahezu Alles anpassen).

Übrigens sind die initialen Ladezeiten deutlich verringert (wenn eine Seite das erste Mal aufgerufen wird).

@veers: Du scheinst nicht der einzige zu sein, der von der ExtJS-Lizenzpolitik ermüdet ist.

Michael
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Mittwoch 28. Januar 2009, 10:26

veers hat geschrieben:nach dem ich von legal@extjs.com immer noch keine Antworten bezüglich ihrer Lizenzpolitik bekommen habe wird mir das langsam aber sicher zu blöd.
Was ist denn bei http://extjs.com/products/license.php noch unklar?

Stefan
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Mittwoch 28. Januar 2009, 17:57

sma hat geschrieben:
veers hat geschrieben:nach dem ich von legal@extjs.com immer noch keine Antworten bezüglich ihrer Lizenzpolitik bekommen habe wird mir das langsam aber sicher zu blöd.
Was ist denn bei http://extjs.com/products/license.php noch unklar?

Stefan
Wenn ich eine Webanwendung baue welche Ext als GUI Library verwendet, ist dann die Webanwendung als ganzes ein abgeleitetes Werk? Was wenn ich eine bestehende Anwendung mit ExtJS erweitere wird diese dann ein Abgeleitetes Werk (wäre ja irgend wie lächerlich...)? Und noch viel wichtiger, wenn dem so ist, und diese öffentlich erreichbar ist, und somit die Ext *.js Files verteilt, zählt das als Veröffentlichung und muss ich dann jedem Besucher den Quellcode meiner Website zugänglich machen?

- Jonas
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Freitag 30. Januar 2009, 08:48

veers hat geschrieben:Wenn ich eine Webanwendung baue welche Ext als GUI Library verwendet, ist dann die Webanwendung als ganzes ein abgeleitetes Werk? Was wenn ich eine bestehende Anwendung mit ExtJS erweitere wird diese dann ein Abgeleitetes Werk (wäre ja irgend wie lächerlich...)?
Die Frage ist nicht weiter wichtig. Schau dir die "Open Source License Exception for Applications" an: Wenn es eine Anwendung und keine weitere Bibliothek und open-source nach einer der aufgelisteten Lizenzen ist, dann ist das okay. GPLv3 ist auch für Bibliotheken okay.
veers hat geschrieben:Und noch viel wichtiger, wenn dem so ist, und diese öffentlich erreichbar ist, und somit die Ext *.js Files verteilt, zählt das als Veröffentlichung und muss ich dann jedem Besucher den Quellcode meiner Website zugänglich machen?
Die *.js-Dateien sind doch bereits der Quelltext. Und ansonsten reicht doch ein Link auf extjs.com.

Stefan
Antworten