Forum: Projekte & Code Lagerverwaltung Part-DB V0.2.2


von Udo N. (weinbauer73)


Lesenswert?

> Udo Neist schrieb:
>> Edit: is_writable() zum Prüfen, ob das Verzeichnis beschreibbar ist, ist
>> auch sinnvoll ;)
> Schreibrechte alleine genügen aber nicht, um Dateien in einem
> Verzeichnis zu erstellen/bearbeiten. Dazu ist immer auch das "executable
> bit" nötig, also die Ausführrechte (die bei Verzeichnissen eine andere
> Funktion haben als bei Dateien). Es macht also schon Sinn, die
> Ausführrechte zu prüfen. Was hingegen keinen Sinn macht, ist das
> kastrieren der is_executable() Funktion, so dass diese nur noch mit
> Dateien funktioniert... ;-) Was die sich dabei wohl überlegt haben?!

Obwohl ich Linux seit Jahren benutze, denk ich an sowas manchmal gar 
nicht mehr. Stimmt schon, es muss wenigstens wx gesetzt sein, damit man 
schreiben kann. Also muss man wohl einen Wrapper dafür schreiben.

> Übrigens bezüglich Branches hätte ich das folgendermassen gedacht:
> - Die finale 0.3.0 liegt als Kopie in tags/ und bleibt dort unangetastet
> - Die weitere Entwicklung an der 0.3.0 findet wie gewohnt im trunk statt
> - Es kommen grundsätzlich erstmal KEINE grossen Neuerungen (z.B.
> Benutzerverwaltung, Barcode-Tools, Filemanager) in den trunk. Jedes
> dieser Features soll seinen eigenen Branch kriegen, der vom trunk
> abgeleitet wird. Erst wenn ein solches Feature bereit zum testen ist
> (funktionierend, kann aber ruhig noch Fehler enthalten) wird es in den
> trunk übernommen. Sobald im trunk dann die neuen Features als stabil
> betrachtet werden können, kann ein neues Release herausgegeben werden.

Im Grunde das gleiche wie ich es mir gedacht habe. Ich kopieren mir dann 
den aktuellen Stand in meinen Branch und fange zwischenzeitlich mal an, 
die Frames zu entfernen und auf Ajax/DOM umzustellen.

von Gelöscht (kami89)


Lesenswert?

Verdammt! Ich habe wiedermal Mist gebaut im SVN Repository^^
Anscheinend habe ich die Änderung r689 im falschen Verzeichnis gemacht, 
das hätte eigentlich nicht im trunk sondern im tags geändert werden 
müssen...Vermutlich habe ich den falschen Ordner erwischt beim hochladen 
ins SVN...

Ich versuchs dann mal wieder hinzubiegen ;-) Sorry!

von Udo N. (weinbauer73)


Lesenswert?

Fehler passieren ;-) SVN wollte den Trunk nicht in mein Branch kopieren, 
also erst einmal meinen alten Branch löschen und einen neuen 
"part-db-uneist" erstellen.

von Gelöscht (kami89)


Lesenswert?

lol OK ich habe grad den Fehler gefunden, ich habe meine lokale Kopie 
von tag "Part-DB-0.3.0" aus dem trunk gezogen...schon klar landen dann 
die Änderungen nicht dort wo sie sollten -.-
Glücklicherweise habe ich aber das Release-Paket dann auch aus dem Trunk 
erstellt, und nicht aus dem tags/Part-DB-0.3.0 ;-)
Zwei Fehler nacheinander heben sich halt wieder auf xD

Also ich bins grad wieder am korrigieren, es sind nur ein paar Dateien 
die ich damals gelöscht habe, die kann ich aber wieder herstellen.

von Udo N. (weinbauer73)


Lesenswert?

Hehe... So lösen sich die Probleme langsam auf.

Ich hab mir mal die paar Javascriptdateien angeschaut. Ein paar der 
Funktionen hab ich in meiner dom.js bereits drin bzw. sind sehr ähnlich, 
andere könnte ich übernehmen. Man müsste auch schauen, ob die Funktionen 
überhaupt noch gebraucht werden oder ob sie ersetzt werden könnten. 
Einheitlicher wäre hier auch besser :-)

von Gelöscht (kami89)


Lesenswert?

So, jetzt sollte alles wieder im Butter sein (r696).

Udo Neist schrieb:
> Ich hab mir mal die paar Javascriptdateien angeschaut. Ein paar der
> Funktionen hab ich in meiner dom.js bereits drin bzw. sind sehr ähnlich,
> andere könnte ich übernehmen. Man müsste auch schauen, ob die Funktionen
> überhaupt noch gebraucht werden oder ob sie ersetzt werden könnten.
> Einheitlicher wäre hier auch besser :-)

Ja, das kannst du natürlich machen. Ich habe da übrigens auch nicht so 
der Überblick, das meiste vom JavaScript-Kram stammt unverändert aus der 
0.2.2.

von Arne M. (armut)


Lesenswert?

Eine Tolle Software, nachdem ich in meiner Testbank einiges eingegeben 
habe. Praktisch alle Infos an einen Ort zu haben.

Drei kleine Fragen hab ich noch:
1) Um 3.0 zu installieren einfach ueber RC2 drueberkopieren?
2) Da ich ja irgendwann auf den Heimserver mit der DB ziehen will, kann 
man irgendwo nicht eine export/backup Funktion einbauen, die einen 
direkt eine wieder einlesbare XML aus der DB erzeugt?
3) Auf der Startseite steht etwas mit Reichelt Preissuche. Wie/Wo kann 
man das nutzen?

Danke und Gruss
Arne

von Udo N. (weinbauer73)


Lesenswert?

Arne M. schrieb:
> Eine Tolle Software, nachdem ich in meiner Testbank einiges eingegeben
> habe. Praktisch alle Infos an einen Ort zu haben.

Danke :-)

> Drei kleine Fragen hab ich noch:
> 1) Um 3.0 zu installieren einfach ueber RC2 drueberkopieren?

Du meinst sicher 0.3.0? Ja, einfach aktualisieren, da sich in der DB 
nichts mehr geändert hat. Die Konfiguration bleibt.

> 2) Da ich ja irgendwann auf den Heimserver mit der DB ziehen will, kann
> man irgendwo nicht eine export/backup Funktion einbauen, die einen
> direkt eine wieder einlesbare XML aus der DB erzeugt?

Wenn du MySQLDumper installiert hast, könntest du das direkt aus Part-DB 
aufrufen. Sonst bleibt dir nur der Umweg über MySQL-Konsole/mysqldump 
oder phpMyAdmin.

> 3) Auf der Startseite steht etwas mit Reichelt Preissuche. Wie/Wo kann
> man das nutzen?

Soviel ich weiß ist das Preissuchscript selbst in der 0.2er Version von 
Part-DB veraltet, da sich zwischenzeitlich die Homepage von Reichelt 
geändert hat. Wann wir wieder ein passendes Script haben, kann ich nicht 
sagen.

von Udo N. (weinbauer73)


Lesenswert?

@Urban: Die Meldung "SVN-Revision konnte nicht aus "/.svn/wc.db" gelesen 
werden! $result ist NULL" ist in einem Release sinnlos. Daran hätten wir 
denken sollen ;)

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> @Urban: Die Meldung "SVN-Revision konnte nicht aus "/.svn/wc.db" gelesen
> werden! $result ist NULL" ist in einem Release sinnlos. Daran hätten wir
> denken sollen ;)

Diese Fehlermeldung kann aber nur geworfen werden, wenn die Datei
"/.svn/wc.db" existiert (siehe voranstehendes "if file_exists()"). Da 
diese Datei in einem Release aber nicht existiert, kann die 
Fehlermeldung gar nie auftreten. Es wäre also sinnlos, für die Releases 
hier irgendwas zu ändern, da es keinen Unterschied macht ;-)

von Arne (Gast)


Lesenswert?

@Udo Neist Danke dir!

von Udo N. (weinbauer73)


Lesenswert?

Wenn $result NULL ist, dann braucht man das auch nicht wirklich 
auszugeben, oder?

von Udo N. (weinbauer73)


Lesenswert?

@Arne: Büdde

von Gelöscht (kami89)


Lesenswert?

Udo Neist schrieb:
> Wenn $result NULL ist, dann braucht man das auch nicht wirklich
> auszugeben, oder?

Ich verstehe dich nicht ganz. Die Funktion "get_svn_revision()" prüft, 
ob die aktuelle Installation per SVN installiert wurde (".svn" 
Verzeichnis vorhanden) oder nicht. Bei einer SVN-Installation gibt die 
Funktion die SVN Revisionsnummer zurück, bei einer 
Nicht-SVN-Installation gibt die Funktion NULL zurück.

Siehst denn du irgendwo die von dir genannte Fehlermeldung, also wird 
die irgendwo ausgespuckt? Das sollte eigentlich nicht der Fall sein.

von Udo N. (weinbauer73)


Angehängte Dateien:

Lesenswert?

Ich hätte es sicher nicht gemeldet, wenn ich es nicht sehen würde :) Und 
es ist eine Installation aus dem SVN (meine Arbeitskopie).

von Arne M. (armut)


Lesenswert?

Waere es auch nicht toll zur Feier einen neuen Thread mit 0.3.0 zu 
erstellen? 600 Beitraege werden auf dem Handy doch arg viel :)

von Gelöscht (kami89)


Lesenswert?

Ach so, jetzt verstehe ich es :-)
Aber ich wüsste nicht, warum man diesen Fehler bei einer stabilen 
Version unterbinden sollte.
Erstens ist das schlussendlich ja ein "normaler" Fehler, wie jeder 
andere auch, und die anderen Fehler bekommen ja auch keine 
Sonderbehandlung.
Und zweitens sind SVN-Installationen nach wie vor grundsätzlich nur für 
Entwickler gedacht. Natürlich darf man seine Part-DB auch als 
Nicht-Entwicker per SVN installieren, allerdings geschieht dies auf 
eigenes Risiko. Für die Endanwender schnüren wir ja extra die Pakete, 
die dann eben auch den ".svn" Ordner nicht enthalten und somit die 
genannte Fehlermeldung gar nicht erst auftauchen kann. Auch der 
"development" Ordner hat beim Endanwender grundsätzlich nichts zu suchen 
und wird daher in den Release-Archiven entfernt. Im SVN ist dieser 
Ordner allerdings vorhanden, da man den als Entwickler halt braucht (vor 
allem um die Archive zu schnüren).

- soweit meine Meinung ;-)

Was den Fehler bei dir verursacht, müsste man mal untersuchen. Kannst du 
das selber übernehmen? Ich kann den Fehler hier nicht nachvollziehen.

von Udo N. (weinbauer73)


Lesenswert?

Es ist zwar ein Schönheitsfehler und stört die normale Funktionsweise 
nicht, aber sowas müsste nicht sein.

Ich habe get_svn_revision() so umgeschrieben, dass entweder eine 
Revisionsnummer oder false für unbekannte Revision oder NULL 
zurückgegeben wird. Die Fehlermeldung ist weg, stattdessen wird 
"Version: 0.3.0 (stable), SVN-Revision: unbekannt" angezeigt.

lib.php (Zeile 65ff):
1
    /**
2
     * @brief Get the SVN Revision number of the installed system
3
     *
4
     * @retval integer      The SVN revision number
5
     * @retval false        No revision number is found
6
     * @retval NULL         If this is no SVN installation
7
     */
8
    function get_svn_revision()
9
    {
10
        // New SVN format
11
        if (file_exists(BASE.'/.svn/wc.db'))
12
        {
13
            $svn = 0;
14
            $pdo = new PDO('sqlite:'.BASE.'/.svn/wc.db');
15
            $result = $pdo->query('SELECT MAX(revision) AS rev FROM nodes');
16
            if ($result && $data = $result->fetch())
17
                $svn = intval($data['rev']);
18
            else
19
                $svn = false; // there is no revision number
20
        }
21
        // Old SVN format
22
        if (file_exists(BASE.'/.svn/entries'))
23
        {
24
            $svn = 0;
25
            $data = File(BASE.'/.svn/entries');
26
            if (is_array($data) && isset($data[3]))
27
                $svn = intval($data[3]);
28
            else
29
                $svn = false; // there is no revision number
30
31
        }
32
        if (isset($svn) || !$svn)
33
            return $svn; // this is a SVN installation
34
        else
35
            return NULL; // this is not a SVN installation
36
    }
startup.php (Zeile 223ff):
1
            if (get_svn_revision())
2
                $html->set_variable('svn_revision', get_svn_revision(), 'integer');
3
            else
4
                $html->set_variable('svn_revision', 'unbekannt',         'string');

von Udo N. (weinbauer73)


Lesenswert?

Wenn ich allerdings wc.db mit dem FF Addon SQLite Manager öffne und den 
SQL-Befehl ausführen lasse, bekomme ich den Wert 691 zurück, was der 
Revision entspricht.

Der Codeschnippsel
1
            $pdo = new PDO('sqlite:'.BASE.'/.svn/wc.db');
2
            $result = $pdo->query('SELECT MAX(revision) AS rev FROM nodes');
liefert false zurück. Dann kann auch keine Revision ausgelesen werden.

sqlite3 macht dagegen auf der Konsole Probleme.
1
SQLite version 3.6.16
2
Enter ".help" for instructions
3
Enter SQL statements terminated with a ";"
4
sqlite> SELECT MAX(revision) AS rev FROM nodes;
5
SQL error: malformed database schema (nodes_update_checksum_trigger) - near "OLD": syntax error

von Gelöscht (kami89)


Lesenswert?

Naja, solange diese Funktion nur für die Anzeige der Revisionsnummer auf 
der Startseite verwendet wird, mag das ja egal sein wenn trotz 
Fehlerfall keine Exception geworfen wird.

Allerdings wäre es durchaus denkbar, dass diese Funktion später auch mal 
für andere, wichtigere Dinge genutzt wird, z.B. für das automatische 
Systemupdate das noch auf der ToDo-Liste steht. Dort ist es sicherlich 
nötig, zu schauen ob es eine SVN Installation, und wenn ja welche 
Revision, ist. Vergisst man dort, zwischen "NULL" und "false" zu 
unterscheiden (schnell passiert), kann dies evtl. zu einem fehlerhaften 
Update führen. Wird eine Exception geworfen, kann das nicht passieren, 
da man eine Exception nicht aus versehen ignorieren kann, da muss man 
den Code mit Absicht so schreiben, dass eine Exception ignoriert wird.

Genau für solche Dinge sind Exceptions ja erfunden worden :-)

Dass die Fehlermeldung auf der Startseite unterdrückt wird, damit bin 
ich einverstanden (stattdessen kann die Meldung ja in den Debug-Log 
geschrieben werden). Das macht man aber besser, indem man in der 
startup.php einfach den Aufruf von "get_svn_revision()" in einen 
try/catch Block packt um die Exception zu verwerfen. Das wäre eine 
saubere Lösung.

> SQL error: malformed database schema (nodes_update_checksum_trigger) -
> near "OLD": syntax error
Das nennt man dann wohl "Ausnahmefall", oder auf Englisch "Exception" 
:-D

von Gelöscht (kami89)


Lesenswert?

Arne M. schrieb:
> Waere es auch nicht toll zur Feier einen neuen Thread mit 0.3.0 zu
> erstellen? 600 Beitraege werden auf dem Handy doch arg viel :)

Keine schlechte Idee :-)

Ich habe grad vor ein paar Tagen gedacht dass hier irgendwie ein 
bisschen ein Durcheinander herrscht, da dieser Thread einerseits für den 
Austausch zwischen Anwendern und Entwicklern, andererseits aber auch 
zwischen den Entwicklern untereinander genutzt wird. Das macht es gerade 
für etwas weniger aktive Entwickler sehr schwierig, am Ball zu bleiben 
weil pro Woche manchmal vermutlich über 50 Beiträge geschrieben werden.

Es gibt bestimmt einige Möglichkeiten, das zu verbessern.
- Zwei Threads, z.B. "Part-DB 0.3.x Support" und "Part-DB Entwickler"
- Nur den Support Thread hier, Entwickler-Diskussion auslagern (wohin?)
- Ein eigenes kleines Forum für Part-DB mit mehreren Unterforen (nach 
Themengebieten), ein Unterforum nur für Entwickler (übertrieben?)
- andere Vorschläge? :-)

von Udo N. (weinbauer73)


Lesenswert?

Der Code ist ja nur ein Beispiel wie man das ganze umgehen kann. Ich 
habs ja nicht hochgeladen. Ich lade mal eine saubere Version vom Server 
und schieb das Problem in einen anderen Ordner. svn status meckert mir 
über meine Arbeitskopie, vielleicht ist deswegen der Fehler.

von Udo N. (weinbauer73)


Lesenswert?

Ich habe einen neuen Thread zur Version 0.3+ gestartet. Alles zu dieser 
Version nur noch dort reinschreiben, da es einfach übersichtlicher wird 
:-)

Beitrag "Lagerverwaltung Part-DB V0.3+"

Grüße
Udo

von Ron (Gast)


Lesenswert?

Wird dieses Tool eigentlich noch weiter entwickelt?
Oder ist die Entwicklung eingestellt?

lg
Ronny

von observer (Gast)


Lesenswert?

Hi,

wie oben steht, jetzt gibt es die Version 0.3+ in einem separaten 
Thread:

Beitrag "Lagerverwaltung Part-DB V0.3+"

@Moderator: Bitte ein "Vorhaengeschoss" an diesen Thread machen.

vg

von X.Y. (Gast)


Lesenswert?

Moin, nutzt es noch irgendwer? wollte es Installieren doch die Anleitung 
dazu ist Down. Kommen nochmal Updates oder wurde das Projekt aufgegeben?

MFG

von Tom L. (ossilampe)


Lesenswert?

Moin Moin,

Hier wurde ja schon lange nix mehr geschrieben, ist das Forum um die 
Lagerverwaltung noch aktiv???


Ich möchte anhand des Lagerortes eine Liste erstellen und diese dann 
ausdrucken.. Wie kann man das realisieren?

gruss

: Bearbeitet durch User
von Jan B. (do9jhb)


Lesenswert?

Tom L. schrieb:
> Moin Moin,
>
> Hier wurde ja schon lange nix mehr geschrieben, ist das Forum um die
> Lagerverwaltung noch aktiv???
>
>
> Ich möchte anhand des Lagerortes eine Liste erstellen und diese dann
> ausdrucken.. Wie kann man das realisieren?
>
> gruss

Es gibt mittlerweile eine neue Version (0.4 bzw 0.5 ist in Entwicklung): 
Beitrag "Lagerverwaltung Part-DB V0.4.x"

Neben einem verbesserten Design, und einer Benutzer und 
Rechteverwaltung, gibt es auch die Möglichkeit sich alle Teile in einem 
bestimmten Lagerort auflisten zu lassen. Das kann man dann vermutlich 
auch ausdrucken, dass dürfte dem was du haben willst ziemlich nahe 
kommen.

Hier gibt es eine Demo Installation der aktuellen Version:
http://part-db.bplaced.net

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.