Collaboration System

Du hast eine Idee für ein Projekt?
Antworten
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Hallo Leute,
Ich suche fähige Python Programmieren, die mir bei der Umsetzung eines Collboration Systems in Python helfen.
Benötigt werden Programmierer die sich in folgenden Bereichen Auskennen:
cgi, fastcgi, mod_python, Datenbankanwendungen, webdav und XHTML sowie XML für Export und Wrapper

Das System soll einen normalen Webserver in ein Collaboration Tool umwandeln.
Die Benutzer sollen sich am System anmelden können, und dann in der für sie zugänglichen Ordnerstruktur "surfen" können:

Code: Alles auswählen

http://servername/bin/ordner.../datei...?aktion
Die Dateien werden dabei unterschiedlich gespeichert.
Binäre Dateien kommen in ein eigenes Verzeichnis am Servern, Textdateien... werden in einer Datenbank gespeichert.
Zudem kann man auch per webdav auf die Verzeichnisse und Dateien zugreifen.
Webdav wird sowohl von UnixSystemen unterstützt, als auch von Windows, da sie als Laufwerksbuchstaben verknüpft werden können.
Somit kann man normal auf die Daten zugreifen, ohne damit Probleme zu bekommen.

Jedes Projekt bekommt am Server seine eigene Verwaltung mit begrenzter History und zuschaltbaren Modulen wie wiki, notizen, diskussionen...
Die Dateien können am Server auch ausgelesen werden...
Der Server kann auch Diagramme und andere Grafische Dinge erstellen.

Code: Alles auswählen

http://servername/bin/
    Vom Webbrowser zugegriffen zeigt er eine Projektübersicht an
    Von Webdav aus, zeigt er die Projektordner an

Code: Alles auswählen

http://servername/bin/projekt/
    Vom Webbrowser aus, die Projektmodule, Übersichten, Dateibrowser...
    Vom Webdav aus die Projektordnerstruktur

Code: Alles auswählen

http://servername/bin/projekt/datei
    Zeigt an, welche Revisionen der Datei es gibt, herunterladbar, Notizen
    Vom Webdav aus gibt es die Datei aus, als wäre sie lokal verfügbar.
Das Webinterface ist komplett in XHTML, möglichst ohne Javascript... damit jeder Browser damit klar kommt. Keine Tabellen als Formatierungshilfe, damit auch Lynx im Notfall funktioniert.
Als Datenbank im Hintergrund würde ich Firebird oder SQLite vorschlagen, je nach Datenbankansprüchen.

Das Webinterface ist leicht zu konfigurieren, und zu erweitern. Die Pythonmodule haben spezielle Kopfkommentare, damit das Collaborationsystem erkennt, wann es welches zu Laden hat.

Ich würde das Projekt auch alleine durchziehen, würde mich aber über jede Hilfe freuen. Bitte meldet euch nur, wenn ihr auch wirklich mitmachen wollt.
Die Entwickler des Versioning Systems auf diesem Forum werden herzlich eingeladen ihr KnowHow in dieses Projekt mitzubringen. Vielleicht wird ja so etwas daraus. Die Entwicklung scheint ja etwas eingeschlafen zu sein

Nochetwas: Für dieses Projekt wird nur Sourcecode übernommen, der zu 100% frei ist. Auch für kommerzielle Anwendungen, falls eine Firma dieses System verwenden wollte. Also kein MySQL oder ähnliches.

Roadmap
  • webdav - Webdav Server
  • http wrapper - Eine einheitliche Klasse für cgi, fastcgi, mod_python
  • Sicherheitskonzept - Benutzerverwaltung...
  • Einfacher Webdateimanager - die Verwaltung der Projekte
  • History Modul - Datenbank für ascii Dateien (utf-8) und History Funktion
  • Erweiterbare Weboberfläche - die erweiterbare Browseroberfläche
  • Modul API - zum Hinzufügen von Modulen
  • Basis Module - die Einfachen Module wie Notizen...
  • Dokumentation - API dokumentieren, damit andere Personen unterstützen können.
Regards,
blackbird
TUFKAB – the user formerly known as blackbird
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Hier ein ASCII Diagramm der Verzeichnisstruktur:

Code: Alles auswählen

Diagramm:

           ┌──────┐
           │ ROOT │                  root/
           └──────┘
              ||
             /  \
            /    \
  ┌─────────┐    ┌─────────┐
  │ Projekt │    │ Projekt │         root/projekt
  └─────────┘    └─────────┘
       |
  ┌────────┐
  │ Ordner │                         root/projekt/ordner
  └────────┘
       |   \
       |    \     ┌────────────────┐
       |      ──  │ Zugriffsrechte │ root/projekt/ordner/.res/permissions.xml
       |          └────────────────┘         
   ┌───────┐      
   │ Datei │                         root/projekt/ordner/datei
   └───────┘
       |
   ┌─────────┐
   │ Histroy │                       root/projekt/ordner/.res/datei#TIMESTAMP
   └─────────┘ 
TUFKAB – the user formerly known as blackbird
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Ich habe mich jetzt entschieden.
Die Benutzerdaten und Module werden als xml gespeichert. Die Datenbank ist optional und dient nur als Searchindex. :D

Vielleicht meldet sich doch jemand, er muss ja nicht als dauerhafter Programmierer arbeiten. Einfach eine Idee abliefern hilft auch schon.

Ich habe das Projekt als pyPoint bei sourceforge registriert. Ich habe jetzt auf meinem Windows2003 Server so ein ähnliches Projekt mit dem Namen sharepoint gefunden. Sehr langsam das Ganze.

Ich werde jetzt einmal eine AlphaVersion programmieren, vielleicht hat ja dann jemand Lust mitzumachen.
TUFKAB – the user formerly known as blackbird
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Die Benutzerverwaltung liegt nun nur noch in einem eigenen Verzeichnis, in dem interne Daten verwaltet werden.
Die Datei heiß permissions.xml und besitzt dieses Format

Code: Alles auswählen

<?xml encoding="utf-8" ?>
<perm>
    <user name="blackbird">
        <directory id="dokumente">
            <level type="files/create" value="yes" />       <!-- Der Benutzer darf Dateien im Verzeichnis erstellen -->
            <level type="files/read" value="yes" />         <!-- Der Benutzer darf die Dateien lesend öffnen -->
            <level type="files/delete" value="yes" />       <!-- Der Benutzer darf Dateien löschen -->
            <level type="files/edit" value="yes" />         <!-- Der Benutzer darf in Dateien schreiben -->
            <level type="files/rename" value="yes" />       <!-- Der Benutzer darf vorhandene Dateien umbenennen -->
            
            <level type="directories/create" value="yes" /> <!-- Der Benutzer darf Verzeichnisse im Verzeichnis erstellen -->
            <level type="directories/delete" value="yes" /> <!-- Der Benutzer darf Verzeichnisse im Verzeichnis löschen -->
            <level type="directories/view" value="yes" />   <!-- Der Benutzer sieht das Verzeichnis in der Liste -->
            <level type="directories/list" value="yes" />   <!-- Der Benutzer darf den Dateiinhalt betrachten -->
            <level type="directories/rename" value="yes" /> <!-- Der Benutzer darf Verzeichnisse ansehen -->
            
            <level type="history/overview" value="yes" />   <!-- Der Benutzer darf die History betrachten -->
            <level type="history/view" value="no" />        <!-- Der Benutzer darf alte Dateien in der History betrachten -->
            <level type="history/restore" value="no" />     <!-- Der Benutzer darf Revisionen aus der History wiederherstellen -->
            <level type="history/delete" value="no" />      <!-- Der Benutzer darf Revisionen aus der History löschen -->
            
            <level type="modules/use" value="yes" />        <!-- Der Benutzer darf Module benutzen -->
            <level type="modules/add" value="yes" />        <!-- Der Benutzer darf Module hinzufügen -->
            <level type="modules/manage" value="yes" />     <!-- Der Benutzer darf Module bearbeiten -->
            <level type="modules/import" value="no" />      <!-- Der Benutzer darf Module aus einer Datei importieren -->
        </directory>
        <file id="dokumente/übersicht.txt">
            <level type="file/read" value="no" />           <!-- Der Benutzer darf die Datei lesend öffnen -->
            <level type="file/delete" value="no" />         <!-- Der Benutzer darf die Datei löschen -->
            <level type="file/edit" value="no" />           <!-- Der Benutzer darf die Datei schreibend öffnen -->
            <level type="file/rename" value="no" />         <!-- Der Benutzer darf die Datei umbenennen -->
        </file>
    </user>
    <group name="DevTeam">
        <!-- Wie bei der Benutzerverwaltung -->
    </group>
</perm>
Zuerst wird einmal die Gruppenverwaltung abgefragt und dann ersetzen die Benutzerspezifischen Zugriffsrechte die Gruppenrechte.
Wenn value auf inherited gesetzt ist, entspricht das einem nichtsetzen.
Jeder Benutzer ist zumindest Mitglied der Gruppe Users.
TUFKAB – the user formerly known as blackbird
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Ich habe nun auf Sourceforge das Projekt registriert http://pypoint.sourceforge.net/
Es existiert ein Wiki zum Informationsaustausch. Ich werde nun Informationen nur noch dort und auf englisch publizieren. :?
TUFKAB – the user formerly known as blackbird
Antworten