Seite 1 von 1
Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 20. Oktober 2010, 12:00
von mic
Hallo,
ich entwickle gerade ein Plugin für Trac und habe nun folgendes Problem:
Mein Plugin beinhaltet einen Ordner data in dem .json Dateien abgespeichert sind. Das Plugin erzeugt später HTML Code (inklusive Java-Skripte). Dieser Code greift auf diese .json Dateien zu. Soweit funktioniert auch alles.
Nun sollen diese Dateien aber zur Laufzeit angepasst werden. Nun weiß ich aber nicht genau mit welchem Pfad ich diese Dateien ansprechen kann (wenn ich es anspreche wie im HTML Code gibt es eine Fehlermeldung: "there is no such file or directory"). Aus Testzwecken habe ich auch einfach mal nur
gemacht was aber zu einem "Permission Denied" Fehler führt. Also gehe ich außerdem davon aus, dass selbst wenn ich weiß wie ich die Datei richtig anspreche diesen Fehler erhalten werde.
Also sind meine Fragen:
1. Wie spreche ich die Datei an, die in meinem Plugin unter data abgelegt ist?
2. Wie bekomme ich die nötigen Rechte um die Datei zu erstellen/ verändern? Oder ist es gar nicht möglich?
Kann mir jemand mit wenigstens einer Frage weiterhelfen? Ich versuche schon seit Stunden das Problem zu lösen und komme keinen Schritt weiter.
Vielen Dank und viele Grüße
Micha
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 10:07
von mic
Kann mir keiner weiterhelfen?
Grüße
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 10:26
von Xynon1
Permission Denied sagt nur das du keinen Zugriff auf die Datei hast.
Prüfe einfach mal ob du schreibrechte auf die Datei hast.
Und prüfe ob du nicht irgendwo ein noch offenes Filehandle auf die Datei hast, was bei
durchaus passieren kann wenn du die Anweisung weiter oben stehen hast und das handle nicht schließt.
Bei sowas bitte mit
öffnen.
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 13:54
von mic
Vielen Dank fürs Helfen.
Ja mein Problem ist, dass ich nicht über die benötigten Rechte verfüge.
Gibt es eine Möglichkeit diese, mittels Code, zu bekommen? Ein Problem ist, dass dieses Trac-Plugin auch auf anderen Computern installiert werden soll. Nun scheint es aber so zu sein, dass man erst einmal nach der Installation keine Rechte auf die neu angelegten Ordner hat.
Grüße
Edit: Den Code habe ich nach deinem Vorschlag verändert, bekomme aber die gleichen Fehler
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 14:16
von Xynon1
Um das über den Script zusetzen, fällt mir spontan nur os.system("chmod") ein.
Aber dies ist nun nicht wirklich angebracht,
1. Funktioniert nur in Linux-Distribution
2. os.system ist veraltet, warscheinlich geht das auch mit subprocess.popen(...)
3. Würde das nur mit root-Rechten gehen.
in sofern fällt mir da nichts ein.
mic hat geschrieben:Den Code habe ich nach deinem Vorschlag verändert, bekomme aber die gleichen Fehler
Logisch wenn du immer noch keine Schreibrechte hast.
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 14:47
von mic
Ich versuche das Ganze, da ich unter anderem diesen HTML Code erzeuge:
Code: Alles auswählen
<script type="text/javascript" src="%(PathToChrome)shw/js/swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF(
"%(PathToChrome)shw/swf/open-flash-chart.swf", "chart_bar_2", "780", "300",
"9.0.0", "expressInstall.swf",
{"data-file":"%(PathToChrome)shw/data/bar_2.json"}
);
</script>
In der drittletzten Zeile steht die json Datei bar_2 die verändert werden sollte, was so aber offensichtlich sehr schwer umzusetzen ist.
Gibt es möglicherweise eine Möglichkeit an dieser Stelle direkt einen String oder sonstiges zu übergeben? Also wie
Code: Alles auswählen
{"data-file":"Input den ich oben sowieso per open("bar_2.json", "w") in die Datei geschrieben hätte"}
Alle meine Versuche in diese Richtung sind leider ebenfalls gescheitert.
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 14:53
von Xynon1
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 15:10
von mic
Ich stehe ein wenig auf dem Schlauch, ich weiß nicht genau was ich davon jetzt anwenden soll?
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 15:13
von Xynon1
Mir ging es um String-Vearbeitung.
Gehen solche Sachen wie
Code: Alles auswählen
print("{0} text text text {1} text text ".format(var1,var2))
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 15:28
von mic
Also ich glaube wir reden möglicherweise gerade ein wenig aneinander vorbei.
Mein Problem ist, dass im HTML Code hier
der Pfad zu meiner Datengrundlage angegeben ist.
Diese Datengrundlage möchte ich zur Laufzeit anpassen.
-->Die Datei ändern scheint nicht in Frage zu kommen
-->Frage: Gibt es eine Möglichkeit anstelle des Pfades direkt den Inhalt der Datei anzugeben?
-->Frage: Gibt es vielleicht einen anderen Workaround?
Gut möglich, dass mir dein Hinweis doch mit diesem Problem helfen kann, aber ich sehe gerade nicht wie...
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 15:32
von cofi
Xynon1 hat geschrieben:Um das über den Script zusetzen, fällt mir spontan nur os.system("chmod") ein.
Aber dies ist nun nicht wirklich angebracht,
1. Funktioniert nur in Linux-Distribution
2. os.system ist veraltet, warscheinlich geht das auch mit subprocess.popen(...)
3. Würde das nur mit root-Rechten gehen.
in sofern fällt mir da nichts ein.
Es gibt
os.chmod
Das man dafuer die noetigen Rechte wiederum braucht ist allerdings wieder klar (muessen aber nicht root-Rechte sein)
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 15:35
von Xynon1
Mh, ok
{0}.. - bei dieser Methode musst du natürlich den Text ändern
einbetten des html textes möglich ?
Ansonsten per regularexpressions, oder direkt über eine replace Funktion den Text ändern.
@cofi
und wieder bin ich dir zu dank verpflichtet
glatt Übersehen.
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 15:51
von BlackJack
@mic: Du müsstest da halt keine URL auf eine feste Datei angeben, sondern eine deren Inhalt Du ebenfalls dynamisch generierst. Das mit einer "festen" Datei fällt doch sowieso auf die Nase wenn das mal zwei Leute gleichzeitig anfordern.
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 16:02
von mic
@cofi: Okay vielen Dank das schaue ich mir gleich einmal genauer an
@Xynon1: Also ich hätte wohl noch etwas genauer spezifizieren sollen. Mein Plugin funktioniert so, dass wenn in Trac zB eine Wiki Page vom Administrator angelegt wird, dieser per Macro das Plugin aufrufen kann. Mein Plugin verarbeitet nun die Eingaben des Administrators und gibt entsprechend HTML Code zurück (also ein Flash Chart). (Folgendes Plugin ist recht ähnlich gibt aber einfach ein statisches Bild zurück anstelle meines HTML Codes/ Flash Charts:
http://trac-hacks.org/wiki/GoogleChartPlugin). Ich habe keine Probleme mit Textersetzung oder Ähnlichem. Verstehe ich dich falsch?
@BlackJack: Was wäre zum Beispiel solch eine Datei? Wie erzeuge ich diese?
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 16:21
von mic
@cofi: Ich scheine dafür auch nicht die nötigen Rechte zu haben - nun kommt die Fehlermeldung: "1Operation not permitted"

Sehr ärgerlich das Ganze
Edit: Nachdem ich mit "os.chmod" und "stat.S_IRWXO": read, write, and execute by others stellen wollte.
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Mittwoch 27. Oktober 2010, 16:44
von BlackJack
@mic: Du solltest keine Datei erstellen sondern den Inhalt. Wie das genau bei Trac geht weiss ich nicht, du musst halt irgendwie eine URL auf Python-Code abbilden und die benötigten Daten per GET oder POST übermitteln um dann die JSON-Daten daraus zu generieren und auszuliefern.
Im HTML müsste dann so etwas in der Art stehen:
{"data-file":"url/die/auf/python/code/umgeleitet/wird/chart-data?values=10,20,30"}
Und Du müsstest dann die Werte in JSON umwandeln das von dem Flash erwartet wird um die darzustellen.
Re: Trac Plugin Entwicklung - Datei schreiben/ ändern
Verfasst: Donnerstag 28. Oktober 2010, 13:14
von mic
Also ich konnte die Werte tatsächlich anders angeben und muss diese nicht extra in eine Datei schreiben. Falls es jemanden genau interessiert:
http://teethgrinder.co.uk/open-flash-ch ... rial-5.php
bzw.
Code: Alles auswählen
<html>
<head>
<script type="text/javascript" src="../js/json/json2.js"></script>
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("open-flash-chart.swf", "my_chart", "350", "200", "9.0.0");
</script>
<script type="text/javascript">
function ofc_ready()
{
alert('ofc_ready');
}
function open_flash_chart_data()
{
alert( 'reading data' );
return JSON.stringify(data);
}
function findSWF(movieName) {
if (navigator.appName.indexOf("Microsoft")!= -1) {
return window[movieName];
} else {
return document[movieName];
}
}
var data = {
"elements": [
{
"type": "bar",
"values": [
9,
8,
7,
6,
5,
4,
3,
2,
1
]
}
],
"title": {
"text": "Thu Oct 28 2010"
}
};
</script>
</head>
<body>
<p>Hello World</p>
<div id="my_chart"></div>
</body>
</html>
(ab var data kann man die Daten selbst eingeben wenn man möchte)
Vielen Dank an alle Helfer
