hallo zusammen,
ich habe bisher relativ wenig erfahrung mit python (bisher nur kleinere scripts für administrationszwecke oder solche sachen). das soll sich ändern. ich will anhand eines größeren projektes python etwas näher kommen.
dabei handelt es sich um eine intranetanwendung, mit der umfragen durchgeführt und anschließend ausgewertet werden. derzeit läuft das ganze unter php, der code ist eine katastrophe. es muss alles komplett neu implementiert werden .. zeit ist reichlich vorhanden.
ein paar merkmale:
- postgres-db-anbindung
- authentifizierung gegen ldap-schnittstelle
- fragebogen im browser und pdf-druckvorlage
- auswertung im browser exportmöglichkeit nach pdf, excel
- derzeit ca 20-50 zugriffe täglich, kann aber stark wachsen
- datenbank ca 20 tabellen, ungefähr 100000 datensätze
bisher habe ich kaum erfahrung mit browser-anwendungen unter python .. also wsgi, mod_python, etc.
ob sich django anbietet, kann ich nicht richtig sagen. allerdings scheint mir das nach ein paar wochenenden ausprobieren fast schon zu spezifisch in die web2.0-richtung zu gehen.
mein problem ist gerade, dass ich nicht richtig weiß, wie ich anfangen soll.
auch wenn die infos oben keinen all zu großen einblick geben, würde ich gerne wissen: wie würdet ihr ein derartiges projekt starten...?
größeres intranet-projekt als anfänger
Gar nicht. Webanwendungen für Online-Umfragen gibt es doch nun wirklich wie Sand am Meer, wieso möchtest du das Rad unbedingt neu erfinden?ptrck hat geschrieben:wie würdet ihr ein derartiges projekt starten...?
Ansonsten würde ich mich überhaupt erstmal darum kümmern, ein vernünftiges Datenmodell und eine ansatzweise funktionsfähige Seite zu implementieren. Sich um PDF-Export Gedanken oder eine spezifische Authentifizierungstechnik Gedanken zu machen, bevor man überhaupt einen funktionsfähigen Prototypen hat, ist wenig zielführend.
Insofern sind deine Anforderungen auch ein bisschen hoch gesteckt oder wenig sinnvoll: Ein gutes Datenmodell definiert sich nicht über die Anzahl der Datenbanktabellen, das ist allenfalls eine Folge der Implementierung, aber keine sinnvolle, initiale Anforderung (es sei denn, du musst die Daten der alten Anwendung übernehmen, aber dann solltest du das auch so sagen).
Da die anwendung wirklich sehr individuell ist, würde ich gerne keine fertiglösung benutzen. es lässt sich imho also nicht vermeiden, das ganze, höchstens mit hilfe eines frameworks, selbst zu schreiben.lunar hat geschrieben:Gar nicht. Webanwendungen für Online-Umfragen gibt es doch nun wirklich wie Sand am Meer, wieso möchtest du das Rad unbedingt neu erfinden?ptrck hat geschrieben:wie würdet ihr ein derartiges projekt starten...?
die anwendung läuft bereits seit ca 2 jahren im produktiveinsatz.lunar hat geschrieben: Ansonsten würde ich mich überhaupt erstmal darum kümmern, ein vernünftiges Datenmodell und eine ansatzweise funktionsfähige Seite zu implementieren. Sich um PDF-Export Gedanken oder eine spezifische Authentifizierungstechnik Gedanken zu machen, bevor man überhaupt einen funktionsfähigen Prototypen hat, ist wenig zielführend.
ich wollte mit diesen "anforderungen" nur zeigen, was gerade der stand ist. die datenbank und auch die features müssen also übernommen werden. die struktur der db ist im gegensatz zum php-code auch ordentlich gemacht. hier muss also wenig bis nichts gemacht werden.derzeit läuft das ganze unter php, der code ist eine katastrophe. es muss alles komplett neu implementiert werden
danke
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Erstmal eine API zum Datenzugriff via SQLAlchemy machen und dann warscheinlich den Rest mithilfe von Werkzeug und WSGI drumrumbauen.ptrck hat geschrieben:auch wenn die infos oben keinen all zu großen einblick geben, würde ich gerne wissen: wie würdet ihr ein derartiges projekt starten...?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Statt Bibliothekssuppe würde ich Django als One-Stop-Solution empfehlen. Postgresql und LDAP sind kein Problem. Abhängig von deinem existierenden Datenmodell kann ein `manage.py inspectdb` reichen, um das nach "Django" zu ziehen. Möglicherweise liegen die "es muss alles neu"-Probleme ja aber auch im Aufbau der Tabellen begründet. Für PDF-Reports empfiehlt die Dokumentation ReportLab - mit habe ich leider noch keine Erfahrungen gesammelt. Statt Excel-Export würde ich Dateien im CSV-Format empfehlen. Das ist trivial zu erzeugen und man muss nur aufpassen, dass das deutsche Excel offenbar ";" als Feldtrenner haben will, das englische hingegen ",". 20-50 Zugriffe könnte man sogar einfach mit dem integrierten Development-Server betreiben, ansonsten muss man Django mit mod_wsgi oder fastgci in einen existierenden Webserver integrieren.
Anfangen würde ich mit dem Versuch, das Datenmodell auf Django-Modell-Klassen abzubilden. Danach würde ich mich daran machen, die existierenden PHP-Seiten in Templates umzuwandeln. Wenn die PHP-Anwendung keine Aufteilung in Modell, View und Controller (was bei Django Model, Template und View heißt aber ansonsten das selbe ist) hat, muss man hier einiges neu strukturieren. Es wird sich aber lohnen. Im Prinzip muss man zusehen, dass man die ganze "Geschäftslogik" aus den PHP-Seiten heraus bekommt, um so die Templates zu baunen. Die Logik gehört dann entweder in die Modelle oder den Controller (den Django die View-Funktion nennt).
Stefan
Anfangen würde ich mit dem Versuch, das Datenmodell auf Django-Modell-Klassen abzubilden. Danach würde ich mich daran machen, die existierenden PHP-Seiten in Templates umzuwandeln. Wenn die PHP-Anwendung keine Aufteilung in Modell, View und Controller (was bei Django Model, Template und View heißt aber ansonsten das selbe ist) hat, muss man hier einiges neu strukturieren. Es wird sich aber lohnen. Im Prinzip muss man zusehen, dass man die ganze "Geschäftslogik" aus den PHP-Seiten heraus bekommt, um so die Templates zu baunen. Die Logik gehört dann entweder in die Modelle oder den Controller (den Django die View-Funktion nennt).
Stefan
ich les mich mal rein, vielen dank.Leonidas hat geschrieben:Erstmal eine API zum Datenzugriff via SQLAlchemy machen und dann warscheinlich den Rest mithilfe von Werkzeug und WSGI drumrumbauen.ptrck hat geschrieben:auch wenn die infos oben keinen all zu großen einblick geben, würde ich gerne wissen: wie würdet ihr ein derartiges projekt starten...?
danke dir. ich habe die datenbank bereits für mvc vorbereitet, das sollte also kein problem sein. ich werde mir django nochmal näher ansehn. ich habe zwar noch immer so meine bedenken, ob ich damit nicht irgendwann an grenzen stoßen könnte, aber mal sehn...sma hat geschrieben:Statt Bibliothekssuppe würde ich Django als One-Stop-Solution empfehlen. Postgresql und LDAP sind kein Problem. Abhängig von deinem existierenden Datenmodell kann ein `manage.py inspectdb` reichen, um das nach "Django" zu ziehen. Möglicherweise liegen die "es muss alles neu"-Probleme ja aber auch im Aufbau der Tabellen begründet. Für PDF-Reports empfiehlt die Dokumentation ReportLab - mit habe ich leider noch keine Erfahrungen gesammelt. Statt Excel-Export würde ich Dateien im CSV-Format empfehlen. Das ist trivial zu erzeugen und man muss nur aufpassen, dass das deutsche Excel offenbar ";" als Feldtrenner haben will, das englische hingegen ",". 20-50 Zugriffe könnte man sogar einfach mit dem integrierten Development-Server betreiben, ansonsten muss man Django mit mod_wsgi oder fastgci in einen existierenden Webserver integrieren.
Anfangen würde ich mit dem Versuch, das Datenmodell auf Django-Modell-Klassen abzubilden. Danach würde ich mich daran machen, die existierenden PHP-Seiten in Templates umzuwandeln. Wenn die PHP-Anwendung keine Aufteilung in Modell, View und Controller (was bei Django Model, Template und View heißt aber ansonsten das selbe ist) hat, muss man hier einiges neu strukturieren. Es wird sich aber lohnen. Im Prinzip muss man zusehen, dass man die ganze "Geschäftslogik" aus den PHP-Seiten heraus bekommt, um so die Templates zu baunen. Die Logik gehört dann entweder in die Modelle oder den Controller (den Django die View-Funktion nennt).
Zuletzt geändert von ptrck am Montag 6. April 2009, 16:53, insgesamt 1-mal geändert.
so meine ich das..Hyperion hat geschrieben:Ich dachte die Datenbank wäre Teil / Grundlage des "models"?ptrck hat geschrieben: ich habe die datenbank bereits für mvc vorbereitet, das sollte also kein problem sein.
um es anders zu formulieren "ich habe die datenbank bereits vorbeireitet um als model in ein mvc-schema zu passen"

- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Auch wenn ich mich wiederhole (in anderen Threads): Ich würde django nehmen 
Das mal anschauen: [wiki]Web-Frameworks[/wiki]
Zu inspectdb: http://docs.djangoproject.com/en/dev/ho ... databases/

Das mal anschauen: [wiki]Web-Frameworks[/wiki]
Zu inspectdb: http://docs.djangoproject.com/en/dev/ho ... databases/
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo ptrck!ptrck hat geschrieben:wie würdet ihr ein derartiges projekt starten...?
psycopg2 --> http://www.python-forum.de/topic-6848.htmlptrck hat geschrieben:- postgres-db-anbindung
http://pypi.python.org/pypi?%3Aaction=s ... mit=searchptrck hat geschrieben:- authentifizierung gegen ldap-schnittstelle
cheetah --> http://www.cheetahtemplate.org/ (http://rtyler.github.com/cheetah/)ptrck hat geschrieben:- fragebogen im browser
???ptrck hat geschrieben:und pdf-druckvorlage
- im Hintergrund läuft cherrypy (http://halvar.at/python/cherrypy_cheetah/)ptrck hat geschrieben:- auswertung im browser exportmöglichkeit nach pdf, excel
- http://pypi.python.org/pypi/rst2pdf/ ?
- http://pypi.python.org/pypi?%3Aaction=s ... mit=search
- Entweder nur CherryPy oder vielleicht CherryPy hinter einem Apachen --> mit mod_wsgi (http://code.google.com/p/modwsgi/wiki/I ... thCherryPy)ptrck hat geschrieben:also wsgi, mod_python, etc.
Und jetzt weißt du auch, wie ich an die Sache ran gehen würde.

mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Kapiere ich immer noch nicht ...ptrck hat geschrieben:so meine ich das..Hyperion hat geschrieben:Ich dachte die Datenbank wäre Teil / Grundlage des "models"?ptrck hat geschrieben: ich habe die datenbank bereits für mvc vorbereitet, das sollte also kein problem sein.
um es anders zu formulieren "ich habe die datenbank bereits vorbeireitet um als model in ein mvc-schema zu passen"
Hast Du ...
a.) überhaupt eine DB?
b.) eine DB, die in irgend einer Weise speziell präpariert ist?
vielen dank!gerold hat geschrieben:Und jetzt weißt du auch, wie ich an die Sache ran gehen würde.
Wie gesagt, die Anwendung läuft schon produktiv, daher hab ich auch eine datenbank. parallel zu der läuft eine zweite, die ich per script angepasst habe, so dass ich sie wahrscheinlich relativ problemlos in ein mvc-framework integrieren könnte.Hyperion hat geschrieben: Hast Du ...
a.) überhaupt eine DB?
b.) eine DB, die in irgend einer Weise speziell präpariert ist?