Seite 1 von 1

größeres intranet-projekt als anfänger

Verfasst: Dienstag 31. März 2009, 16:18
von ptrck
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...?

Re: größeres intranet-projekt als anfänger

Verfasst: Dienstag 31. März 2009, 16:41
von lunar
ptrck hat geschrieben:wie würdet ihr ein derartiges projekt starten...?
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?

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).

Re: größeres intranet-projekt als anfänger

Verfasst: Dienstag 31. März 2009, 16:58
von ptrck
lunar hat geschrieben:
ptrck hat geschrieben:wie würdet ihr ein derartiges projekt starten...?
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?
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: 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.
die anwendung läuft bereits seit ca 2 jahren im produktiveinsatz.
derzeit läuft das ganze unter php, der code ist eine katastrophe. es muss alles komplett neu implementiert werden
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.

danke

Re: größeres intranet-projekt als anfänger

Verfasst: Dienstag 31. März 2009, 17:26
von Leonidas
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...?
Erstmal eine API zum Datenzugriff via SQLAlchemy machen und dann warscheinlich den Rest mithilfe von Werkzeug und WSGI drumrumbauen.

Verfasst: Mittwoch 1. April 2009, 08:52
von sma
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

Re: größeres intranet-projekt als anfänger

Verfasst: Mittwoch 1. April 2009, 09:52
von ptrck
Leonidas hat geschrieben:
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...?
Erstmal eine API zum Datenzugriff via SQLAlchemy machen und dann warscheinlich den Rest mithilfe von Werkzeug und WSGI drumrumbauen.
ich les mich mal rein, vielen dank.
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).
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...

Re: größeres intranet-projekt als anfänger

Verfasst: Mittwoch 1. April 2009, 12:15
von Hyperion
ptrck hat geschrieben: ich habe die datenbank bereits für mvc vorbereitet, das sollte also kein problem sein.
Ich dachte die Datenbank wäre Teil / Grundlage des "models"?

Re: größeres intranet-projekt als anfänger

Verfasst: Mittwoch 1. April 2009, 12:55
von ptrck
Hyperion hat geschrieben:
ptrck hat geschrieben: ich habe die datenbank bereits für mvc vorbereitet, das sollte also kein problem sein.
Ich dachte die Datenbank wäre Teil / Grundlage des "models"?
so meine ich das..
um es anders zu formulieren "ich habe die datenbank bereits vorbeireitet um als model in ein mvc-schema zu passen" :roll:

Verfasst: Mittwoch 1. April 2009, 14:12
von jens
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/

Re: größeres intranet-projekt als anfänger

Verfasst: Mittwoch 1. April 2009, 18:05
von gerold
ptrck hat geschrieben:wie würdet ihr ein derartiges projekt starten...?
Hallo ptrck!
ptrck hat geschrieben:- postgres-db-anbindung
psycopg2 --> http://www.python-forum.de/topic-6848.html
ptrck hat geschrieben:- authentifizierung gegen ldap-schnittstelle
http://pypi.python.org/pypi?%3Aaction=s ... mit=search
ptrck hat geschrieben:- fragebogen im browser
cheetah --> http://www.cheetahtemplate.org/ (http://rtyler.github.com/cheetah/)
ptrck hat geschrieben:und pdf-druckvorlage
???
ptrck hat geschrieben:- auswertung im browser exportmöglichkeit nach pdf, excel
- im Hintergrund läuft cherrypy (http://halvar.at/python/cherrypy_cheetah/)
- http://pypi.python.org/pypi/rst2pdf/ ?
- http://pypi.python.org/pypi?%3Aaction=s ... mit=search
ptrck hat geschrieben:also wsgi, mod_python, etc.
- Entweder nur CherryPy oder vielleicht CherryPy hinter einem Apachen --> mit mod_wsgi (http://code.google.com/p/modwsgi/wiki/I ... thCherryPy)


Und jetzt weißt du auch, wie ich an die Sache ran gehen würde. ;-)

mfg
Gerold
:-)

Re: größeres intranet-projekt als anfänger

Verfasst: Mittwoch 1. April 2009, 18:44
von Hyperion
ptrck hat geschrieben:
Hyperion hat geschrieben:
ptrck hat geschrieben: ich habe die datenbank bereits für mvc vorbereitet, das sollte also kein problem sein.
Ich dachte die Datenbank wäre Teil / Grundlage des "models"?
so meine ich das..
um es anders zu formulieren "ich habe die datenbank bereits vorbeireitet um als model in ein mvc-schema zu passen" :roll:
Kapiere ich immer noch nicht ...

Hast Du ...
a.) überhaupt eine DB?
b.) eine DB, die in irgend einer Weise speziell präpariert ist?

Re: größeres intranet-projekt als anfänger

Verfasst: Donnerstag 2. April 2009, 08:37
von ptrck
gerold hat geschrieben:Und jetzt weißt du auch, wie ich an die Sache ran gehen würde. ;-)
vielen dank!
Hyperion hat geschrieben: Hast Du ...
a.) überhaupt eine DB?
b.) eine DB, die in irgend einer Weise speziell präpariert ist?
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.