LaborOrgaTrac
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
- svn co http://trac-hacks.org/svn/UseFullPlugIn
- cd UseFullPlugIn/0.11 # 0.11 ist die TracVersion
- python setup.py bdist_egg
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.