Admin Interface für SQLAlchemy mit ExtJS

Du hast eine Idee für ein Projekt?
DasIch
User
Beiträge: 2450
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Montag 17. November 2008, 01:47

BlackVivi hat geschrieben:Ich würde jetzt einen Blog nicht voll damit machen...
Wieso den nicht? Also ich finds genial :wink:
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 17. November 2008, 12:55

str1442 hat geschrieben:Von Javascript selbst habe ich allerdings keine Ahnung, aber mit Java scheint sie nicht viel gemein zu haben, wenn ich das hier so lese.
Hat es auch nicht. Wurde eigentlich eher als Scheme für den Browser von Brendan Eich entwickelt aber vor dem Release wurde die Syntax verändert. Und aus Mocha wurde erst LiveScript und dann JavaScript um auf den Java-Hype damals aufzuspringen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Samstag 22. November 2008, 10:23

Statt unsäglicher und unnötiger Diskussion über JavaScript würde ich lieber wissen, ob etwas Neues zu diesem Thema gibt. Ich finde die Idee nach wie vor spannend und lieber über mögliche Umsetzungsstrategien reden.

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

Samstag 22. November 2008, 13:41

sma hat geschrieben:Statt unsäglicher und unnötiger Diskussion über JavaScript würde ich lieber wissen, ob etwas Neues zu diesem Thema gibt. Ich finde die Idee nach wie vor spannend und lieber über mögliche Umsetzungsstrategien reden.

Stefan
Ok, Status:

Ich hab einen Namen: adminalchemy, oder wie Leonidas vorgeschlagen hat admiralchemy ;) Ich denke der ist passend, es ist sofort klar worum es geht, ohne das es zu offiziell tönt.

Ich hab eine Vorstellung vom UI:
- Header oben, da kann man dann einen Titel oder ein Logo rein packen.
- Links ein Baum, in dem die einzelnen Module (User Management), und Models (User) auswählen kann.
- Rechts ist Platz für ein Grid, mit Toolbar für Aktionen wie Add, Remove, Edit möglicherweise noch weitere. Später könnten hier noch weitere Views wie Trees folgen.

Ich habe eine Vorstellung vom Interface:
- AdminInterface
- Application (Serviert ein AdminInterface via WSGI)
- Model (Abstraktion von SQLAlchemy Mapper)
- Grid (Eine View welche Rechts angezeigt wird)
- Form
- FieldSet
- Field
- NavigationNode

Ich habe ein Modul um aus Python Javascript Objektstrukturen zu erstellen, wovon ich gerade gemerkt habe das ich dieses nicht mehr finden kann. ;)

Und ich habe eine Vorstellung wie sich das Ganze Implementieren lässt. Jedoch bin ich mir nicht so sicher wie gut das ganze dann so funktioniert. Aber das wird sich dann ja zeigen.

Wo ich mir nicht so ganz sicher bin ist ob ich die Logik zum generieren des ExtJS Code in die Daten Objekte packen will, oder in einen separaten Renderer.

Soweit so gut, der nächste Schritt wäre nun mal das Zusammenhacken eines Prototyps, und eines Beispiels. Damit werde ich dann Anfangen sobald ich wieder einigermassen fit bin ;)

- 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

Sonntag 23. November 2008, 16:28

Hi!
Schaut Euch mal RUM an.

http://rumdemo.toscawidgets.org/
http://toscawidgets.org/documentation/rum/

Ich bin einer der Mitentwickler.
Ich habe vorher schon in DBMechanik/DBSprockets als Contributor/Coautor Erfahrung gesammelt.

RUMs Hauptautor Alberto Valverde hat ein absolut geniales Design entwickelt,
dass es erlaubt RUM-Applikationen leicht anzupassen.

Als JavaScript Framework setzen wir auf Dojo.

Bevor Ihr was Neues anfangt, würde ich Euch herzlich einladen, an dem Projekt mitzuwirken.
Gruß,
Michael
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Sonntag 23. November 2008, 17:17

Hm, die Demo-Seite ist gerade unglaublich langsam und wirft bei meinen Versuch, einen Datensatz anzulegen, HTTP 500.

Der Webseite entnehme ich, dass das ganze noch nicht offiziell gelauncht wurde. Mein Tipp wäre, unbedingt eine kurze Feature-Beschreibung und Screenshots und vielleicht ein kleines Tutorial hinzuzufügen. Beantwortet werden sollten die Fragen "Was ist ToscaWidgets" und "Was unterscheidet es von anderen ähnlichen Projekten". Warum ist es besser? Was macht es besonders? Warum sollte ich es einsetzen?

Klicke ich jetzt auf Dcumentation, muss ich mich für eines der gelisteten Projekte entscheiden, ohne eine weitere Entscheidungshilfe geboten zu bekommen. Wähle ich den ersten Link, sehe ich ein Inhaltsverzeichnis, bei dem ich lerne, dass man von "tw.api" importieren soll (nur was?) und das es z.B. unter Core Widgets eine Klasse Widget gibt, doch wozu dient die? Unter Examples sehe ich glue code für verschiendste Rahmenwerke, aber nicht den eigentlichen Beispielcode! Spätestens damit habt ihr mich verloren.

An der Idee mit dem Admin UI für SQLalchemy fand ich übrigens den ExtJS-Aspekt am interessantesten. Somit wäre ToscaWidgets mit Dojo jetzt eher ein Seitenzweig. Gerne würde ich aber hier mehr über das "absolut geniale Design" hören, das da entwickelt wurde.

Stefan
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Sonntag 23. November 2008, 17:23

@brickenstein: Guck dir mal ein CSS-Tutorial zum Thema Floats an :wink: Auf der Seite http://toscawidgets.org/documentation/rum/ soll "Table of Contents" bestimmt als rechte Spalte um den restlichen Inhalt fließen.
brickenstein
User
Beiträge: 13
Registriert: Sonntag 23. November 2008, 16:18

Sonntag 23. November 2008, 18:16

Hi!

Da die Demoseite so langsam ist, verweise ich mal auf ein paar schicke Screenshots:

Toscawidgets sind Seitenelemente und kapseln CSS, HTML/Template und Javascript Resourcen. CSS/JS werden automatischen in den Header hinzugefügt.

Verschiedene Einheiten z.B. Darstellung/Editierung von Werten in RUM werden durch Widgets realisiert.
Insbesondere lassen sich so leicht fortgeschrittene Elemente eingliedern.

In diesem Beispiel, wurden für die Tabelleneinträge
"ExpandableSpans" benutzt:
Klappt auf, wenn man drauf klickt (funktioniert bei enstsprechender Konfiguration auch
für formatierte Inhalte).

http://toscawidgets.org/trac/rum/wiki/E ... ?version=3

Ein anderer schöner Screenshot ist dieser hier:

http://toscawidgets.org/trac/rum/attach ... 12/pil.jpg

Ein binäres Feld wurde als Bild konfiguriert:

Code: Alles auswählen

fields.JPEGImage('poster', label=_('Poster in JPEG format'))
Mittels Peak Rules ist der Controller Code erweiter.
Einige dieser Regeln besagen, dass für Binärfelder ein spezieller Controller
eingerichtet wird, der download-Möglichkeiten bietet, bzw. für Bilder sogar
den download einer Preview-Version anbietet (verkleinert mittels PIL).
Dieses System ist komplett durch den Benutzer erweiterbar.


RUM ist in drei Teile geteilt:
Im Herzen:
- RUM, controller, zentrale Architektur, Festlegung des Zusammenspiels
- RUMAlchemy, Implementation eines RUM-Repositories (Datenquelle) mittels SQLAlchemy
- tw.rum, view basierend auf Toscawidgets.

@sma
Wenn Dich der ExtJS am meisten interessiert und Du vielleicht sogar zu Rich Clients neigst, kannst Du auch ohne tw.rum, die serverseitigen Komponenten verwenden, eine Rich Client Anwendung auf RUM aufzubauen. RUM ist darauf designed auch das möglich zu machen:
JSON-Unterstützung ist miteingebaut.



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

Samstag 6. Dezember 2008, 01:37

So, es wird einmal wieder Zeit für ein Status Update.

Zuerst zu RUM: Internal Server Error.
Auch von der Instabilität abgesehen gefällt mir der Ansatz aus verschiedenen Gründen weniger. Wäre aber durchaus Interessiert daran wenn es dann mal toll Funktioniert. Danke für den Hinweis auf jeden Fall!

Ansonsten befinde ich mich immer noch in der Experimentier-/Prototypen- Phase. Mal sehen was daraus wird!

- 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

Samstag 6. Dezember 2008, 12:00

Ich träume ja inzwischen von einem eher explorativen UI a la Microsoft Quadrant. Das müsste man auch als Webanwendung realisieren können... ist zwar komplexer in der Darstellung, aber richtig cool ;)

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

Samstag 6. Dezember 2008, 12:06

Zunächst mal habe ich diverse Projekte mittlerweile auf Werkzeug und SQLAlchemy umgestellt und es ist definitiv das Beste, was ich bisher benutzt habe.

Ein Frontend würde mir sehr gefallen. Meine langjährige JavaScript-Abstinenz habe ich durch jQuery wieder aufgegeben. Seit kurzem arbeite ich mit ExtJS und bin davon für entsprechend geeignete Einsatzzwecke recht angetan (auf jeden Fall besser als qooxdoo sowie diverse halbherzige JS-UI-Lösungen). JavaScript ist in abgestecktem Einsatz (z. B. eben nur für Administratoren) durchaus akzeptabel, eine der besten Lösungen für clientseitige Programmierung (zumal browserübergreifend von Haus aus vorhanden und durch jüngste Entwicklungen mit enormem Geschwindigkeitszuwachs) im Web und vereinfacht für mich die Programmierung von Web-Anwendungen dadurch enorm, dass ich viele Requests nur noch mit einem 200 oder 204 anstatt von Redirects oder Template-Platzhalter-Füllungen beantworte und dann per JS das weitere Verhalten festlege.

Mir gefällt also die Kombination dieser drei Komponenten zu einem DB-(Schema-)Frontend sehr gut und ich traue veers das auch zu. Die Lizenz von ExtJS sollte keine unnötigen Einschränkungen mit sich bringen; GPL(3) an sich bietet sich vielleicht sogar an, nur die Einschränkungen gegenüber den Entwicklern durch den ExtJS-Hersteller sind teilweise wirklich unschön.

Wichtig ist mir, dass an dem Gelöt später kein Klimmbimm wie Django oder TurboGears (und das trifft IIRC für ToscaWidgets und damit RUM zu, nehme ich an?) dranhängt, sondern es schlank daher kommt.

Ich selbst habe übrigens irgendwann endlich PHP von meinem Server verbannt - und damit auch phpMyAdmin. Und bald auch MySQL. Daher würde ich eine Lösung sehr freuen, die:
- kein PHP benötigt
- mit MySQL, PostgreSQL und generell recht DBMS-unabhängig funktioniert (was SA ja in recht großem Stil bietet)
- auf dem Server läuft (auch wenn GUI-Client und ssh für mich bisher eine akzeptable Lösung darstellen)
- am Ende keinen doofen Namen ("pythonSqlAdmin") hat ;)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 7. Dezember 2008, 04:58

Y0Gi hat geschrieben:Ich selbst habe übrigens irgendwann endlich PHP von meinem Server verbannt - und damit auch phpMyAdmin.
Oh, ich sehe dass ich nicht der einzige bin, der Sicherheit/Administrationsaufwand gegeneinander abgewägt hat und PHP und MySQL den Laufpass gegeben hat. 8)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Sonntag 7. Dezember 2008, 13:04

So sieht's aus. Da ich nicht in der Verlegenheit bin, in PHP geschriebene Anwendungen auf meinem Server laufen zu lassen und mir die zahlreichen PHP-Angriffsversuche in meinen Logs doch etwas zu denken gegeben haben, war für mich der Preis für phpMyAdmin zu hoch. Zwar erfordern Client-GUI-Anwendungen die lokale Installation auf dem System, von dem aus man sie benutzen will. Dafür ist ein SSH-Portforward deutlich sicherer und einfacher, als phpMyAdmin nach Außen abzudichten, wo es doch grundlegend von jedem mit einem Webbrowser zugänglich ist, wenn man in der Konfiguration doch mal irgendwie Mist gebaut hat.

Zu PostgreSQL migriere ich gerade, weil *richtige* FK-Abhängigkeiten, vernünftiger Umgang mit Unicode etc. doch irgendwie wichtig oder zumindest hilfreich sind. Spätestens bei dem Versuch, die abartigen Exports von MySQL in ein zumindest nennenswert standardkonformes RDBMS zu importieren, hat sich mir die Richtigkeit dieser Entscheidung erschlossen.

Um wieder den Bogen zum Thema zu schlagen: Mit dem angedachten Tool sollte es möglich sein, es lokal zu installieren und zu nutzen, um dabei auf eine entfernte Datenbank zuzugreifen, um eine Offenbarung per Webserver mit anschließend erforderlicher Absicherung zu vermeiden. Das sollte sogar phpMyAdmin können.
brickenstein
User
Beiträge: 13
Registriert: Sonntag 23. November 2008, 16:18

Montag 8. Dezember 2008, 07:41

Die Fehler haben mit dem Server zu tun (es ist allerdings geplant toscawidgets.org demnächst auf einen anderen Server zu migrieren).
Wer RUM lokal ausprobieren möchte,
findet hier eine Anleitung:
http://groups.google.com/group/turbogea ... a5f7866963
Gruß,
Michael
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Montag 8. Dezember 2008, 11:31

Worauf basiert TG bzw. die verwendete Version diesbezüglich eigentlich? Klar, Abhängigkeiten in allen Ehren, aber für so ein Tool möchte ich das ganze Geraffel (insbesondere wenn so halbgares Zeug wie Paste im Hintergrund sitzt) eigentlich ungern installieren. Genau deswegen gefällt mir ja Werkzeug so gut, weil es eine durchdachte Basis darstellt ohne Boilerplate-Code mitzubringen. Weniger ist mehr und so ;)
Antworten