LaborOrgaTrac

Aus LaborWiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[Bearbeiten] Labor Orga Trac

[Bearbeiten] Wo?

Trac: https://www.das-labor.org/section/LaborOrga SVN: https://www.das-labor.org/storage/LaborOrga

[Bearbeiten] Wer?

Alle die eine Account haben. Wenn kein Account da, dann Jiffies fragen! Policy ist hier "Known Faces". Es wurden viele Accounts vom Haupt-SVN uebertragen. Wenn ihr also dort einen Account habt und ab und an im Labor seid, dann kann es gut sein, dass ihr auch im LaborOrgaTrac einen acoount habt. Einfach mal ausprobieren.

[Bearbeiten] Warum?

Weil es sinn macht ^^. Ernsthaft: Das Labor wird immer groesser und um SVN sammelt sich so einiges an Sourcecode. Aber auch das Material was fuer PR und organisatorisches gebraucht wird, wird immer mehr und mehr. Da macht es nur Sinn den Leuten die hauptsaechlich Orga machen ein eigenes Frontend bereit zu stellen, dass dann eher auf die Beduerfnisse der Orga zugeschnitten ist.

[Bearbeiten] Ich will das aber nicht

OK! du musst nicht :). Erstelle dann aber zumindest im OrgaTrac einen Link zu der entsprechenden Wikiseite, Damit auch alles gefunden werden kann was wichtig ist.

[Bearbeiten] Plugins

Folgende Plugins werden verwendet:

  • CodeExample-0.3.1 : um Codesectionen auf einer Wikiseite anzuzeigen. - sieht besser aus, copy/paste ist einfacher
  • TracAccess-0.1 : auf seiten einzelne textbloecke nur sichtbar machen, wenn man angemeldet ist - "off the Protocoll"
  • TracAccountManager-0.2.1dev_r5836: Benutzer ueber das Webfrontend anlegen. Diese Benutzer sind fuer SVN und Trac im gleichem masse - Accountverwaltung vereinfachen
  • TracDownloads-0.3: Downloadsection haben in dem ausgewaehlte Dateien liegen. Diese koennen dann auf Seiten verlinkt werden - Anwendung fuer Vortraege
  • TracListOfWikiPagesMacro-0.1: seite mit allen Selbst erstellten Seiten haben. - schneller finden von seiten
  • TracNavControl-1.0: Administrative kontrolle, was in der Navigationsleiste stehen soll - einige Komponenten werden einfach nicht benutzt
  • TracPyDotOrgTheme-2.0: das layout - wurde auf labor-style angepasst - Sieht einfach besser aus
  • TracSectionEditPlugin-0.1: neben den Headlines einen link "edit" haben und nur den entsprechenden Bereich bearbeiten - Bessere Bedienung
  • TracTags-0.6: Jeder Seite Kategorien/Tags zuordnen und eine entsprechende uebersicht haben - wurde manipuliert, damit auch unicode geht - Thematisch suchen
  • TracThemeEngine-2.0: notwendig fuer LaborTheme
  • TracTocMacro-11.0.0.3: Table of Content haben - bessere Navigation
  • TracWikiToPdfPlugin-2.3.1: Komplette Seiten als PDF haben - sinnfoll fuer mal eben ein Protokoll auszudrucken oder zu versenden

[Bearbeiten] plugins installieren

Die Plugins sollten direct im Plugin-directory des entsprechenden Tracs installiert werden. Der Vorteil ist, dass die Plugins trac-spezifisch modifiziert werden koennenn und an die entsprechenden Anforderungen angepasst werden koennen. Auch ist es so moeglich unterschiedliche versionen fuer unterschiedliche Tracs zu haben. Dies ist leider notwendig, weil ich immernoch der Meinung bin, dass viele Plugins einwenig nachbearbeitung brauchen. Teilweise habe ich auch den Eindruck, dass Trac zwar wesentlich besser ist als wiki um es zu administrieren und wissen dadrin zu sammeln, es aber trotzdem den Eindruck macht, dass stellenweise in einer "Wochenendaktion" runtergehackt wurde.

[Bearbeiten] compile plugin

Um ein Plugin zu kompilieren sollte etwa folgendes gemacht werden

sollte es in dem Plugin-Dir kein setup.py geben, dann diese Plugin nicht verwenden, da es dann so oder so scheisse ist und nicht fertig ist!

  • cp dist/UseFullPlugIn.egg /srv/TRACs/.../plugins

[Bearbeiten] Modifikationen am Trac

Durch die Verwendung des AccessMacros war es notwendig modifikationen am Trac-Code zu machen, damit die Permissions enforced werden koennen. Ziel ist es dabei gewesen die allg. Informationen bereit zu stellen. Sachen die jedoch "Off the Protocoll" sind verbergen zu koennen. Hier nun die Aenderung die Bewirken, dass man das Recht "WIKI_MODIFY" benoetigt um bereicht zu sehen die nur fuer Authetifizierte Benutzer sichtbar sein sollen.

--- web_ui.py.bak       2009-07-24 20:59:49.000000000 +0200
+++ web_ui.py   2009-07-24 19:37:48.000000000 +0200
@@ -160,6 +160,7 @@
         else:
             format = req.args.get('format')
             if format:
+                req.perm(page.resource).require('WIKI_MODIFY')
                 Mimeview(self.env).send_converted(req, 'text/x-trac-wiki',
                                                   versioned_page.text,
                                                   format, versioned_page.name)
@@ -312,6 +313,7 @@
             raise TracError(_('Version %(num)s of page "%(name)s" does not '
                               'exist',
                               num=req.args.get('version'), name=page.name))
+        req.perm(page.resource).require('WIKI_MODIFY')
 
         old_version = req.args.get('old_version')
         if old_version:

Diese Beiden Aenderungen in der datei /usr/local/lib/python2.6/dist-packages/Trac-0.11.4-py2.6.egg/trac/wiki/web_ui.py deaktivieren fuer nicht authentifizierte Benutzer die Optionen "Last Changes" und "Download other Format" da dies sonst ein Workaround um das AccessMacro waeren.

[Bearbeiten] TracAccountManager

Dieses Plugin erlaubt das administrieren von Benutzer accounts. Damit eine htpasswd als Grundlage verwendet werden kann wurde folgende einstellung in der trac.ini gemacht:

[account-manager]
authentication_url = 
force_passwd_change = true
hash_method = HtDigestHashMethod
htdigest_realm = 
password_file = /srv/SVNs/LaborOrga/conf/htpasswd.labor
password_store = HtPasswdStore
[..]
[components]
trac.web.auth.LoginModule = disabled
acct_mgr.admin.* = enabled
acct_mgr.api.* = enabled
acct_mgr.db.* = enabled
acct_mgr.htfile.* = enabled
acct_mgr.http.* = disabled
acct_mgr.notification.* = enabled
acct_mgr.pwhash.* = enabled
acct_mgr.svnserve.* = disabled
acct_mgr.web_ui.* = enabled
acct_mgr.web_ui.RegistrationModule = disabled

Auf diese Art ist es nicht moeglich "sich mal eben" einen Benutzeraccount zu klicken.

[Bearbeiten] DownloadPlugin

fuer die Downloadsektion gibt es folgende Konfig

[downloads]
title = Downloads
path = /srv/TRACs/LaborOrga/downloads
ext = zip,gz,bz2,rar,pdf,ps,tar,rar
visible_fields = id,file,description,size,time,count,tags
unique_filename = true
[..]
[components]
tracdownloads.api.DownloadsApi = enabled
tracdownloads.core.DownloadsCore = enabled
tracdownloads.init.DownloadsInit = enabled
tracdownloads.timeline.DownloadsTimeline = enabled
tracdownloads.wiki.DownloadsWiki = enabled
tracdownloads.admin.DownloadsWebAdmin = enabled # Branch 0.10 and 0.11.

[Bearbeiten] TracTags

TracTags hat nen problem mit sonderzeichen und deutschen Umlauten aka Unicode. daher wurde folgende Aenderung vorgenommen

--- macros.py.bak       2009-07-24 21:16:28.000000000 +0200
+++ macros.py   2009-07-21 23:33:45.000000000 +0200
@@ -76,8 +76,9 @@
                                         resource, 'compact')
 
         ul = builder.ul(class_='taglist')
-        for resource, tags in sorted(query_result,
-                                     key=lambda r: str(r[0].id )):
+#        for resource, tags in sorted(query_result,
+#                                     key=lambda r: str(r[0].id )):
+        for resource, tags in query_result:
             tags = sorted(tags)
             if tags:
                 rendered_tags = [

[Bearbeiten] Apache konfig

Der apache muss natuerlich auch konfiguriert werden. Dafuer wurde ein extra Verzeichnis angelegt

mkdir /etc/apache2/svnANDtrac/ 
cat << EOF >> /etc/apache2/svnANDtrac/LaborOrga.conf
<Location /storage/LaborOrga>
  DAV svn
  SVNPath /srv/SVNs/LaborOrga
  AuthType Basic
  AuthName "LaborOrga Subversion Repository"
  AuthUserFile /srv/SVNs/LaborOrga/conf/htpasswd.labor
  Require valid-user
</Location>

<Location /section/LaborOrga>
        SetHandler mod_python
        PythonInterpreter main_interpreter
        PythonHandler trac.web.modpython_frontend
        PythonOption TracEnv /srv/TRACs/LaborOrga/
        PythonOption TracUriRoot /section/LaborOrga
        SetEnv PYTHON_EGG_CACHE /tmp
</Location>

<Location "/section/LaborOrga/login">
        AuthType Basic
        AuthName "LaborOrga Trac Auth"
        AuthUserFile /srv/SVNs/LaborOrga/conf/htpasswd.labor
        Require valid-user
</Location>

EOF

Dieses Skeleton sollte auch verwendet werden, wenn weitere Tracs+SVN kombinationen installiert werden. um diese Konfig nun einzubinden muss in der entsprechenden "sites-enabled/*.conf" datei

Include /etc/apache2/svnANDtrac/LaborOrga.conf

eingetragen werden. Dies darf nicht in einer "<Location>" oder "<Directory>" Struktur passieren. An dieser Stelle sei noch kurz vermerkt, dass sowohl fuer die SVN-Location, also auch fuer die Trac/login location das AuthUserFile das gleiche ist.