größeres intranet-projekt als anfänger

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
ptrck
User
Beiträge: 9
Registriert: Dienstag 31. März 2009, 15:46

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...?
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).
ptrck
User
Beiträge: 9
Registriert: Dienstag 31. März 2009, 15:46

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
ptrck
User
Beiträge: 9
Registriert: Dienstag 31. März 2009, 15:46

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...
Zuletzt geändert von ptrck am Montag 6. April 2009, 16:53, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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"?
ptrck
User
Beiträge: 9
Registriert: Dienstag 31. März 2009, 15:46

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:
Benutzeravatar
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/

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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?
ptrck
User
Beiträge: 9
Registriert: Dienstag 31. März 2009, 15:46

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