patacrep / patanet

Web interface for LaTeX songbook generation
GNU Affero General Public License v3.0
10 stars 3 forks source link

Des chansons disparaissent si plusieurs ont le même titre #98

Closed paternal closed 9 years ago

paternal commented 10 years ago

Déjà évoqué dans #96, mais je le recopie ici pour être sûr qu'il n'est pas oublié.

Si deux chansons ont le même titre, une seule des deux apparait. C'est un comportement non souhaité, car rien n'interdit que deux chansons différentes aient le même titre (exemples).

Je n'ai pas regardé la base de donnée, mais je suppose que la clef qui identifie de manière unique une chanson dans la base est actuellement le titre. Pour corriger cela, il suffit de faire en sorte que cette clef soit le nom du fichier.

Et pour la gestion des datadirs, on peut considérer comme clef le couple (datadir, chemin). Comme ça :

Par contre, ça veut dire que si un jour on autorise autre chose qu'un datadir ou un nom de fichier comme source des chansons, cela ne fonctionne plus.

Luthaf commented 10 years ago

Je n'ai pas regardé la base de donnée, mais je suppose que la clef qui identifie de manière unique une chanson dans la base est actuellement le titre. Pour corriger cela, il suffit de faire en sorte que cette clef soit le nom du fichier.

Non, on a un id séparé, basé sur un entier. Par contre, lors de l'import des chansons en base de donnée, on ignore les chansons ayant le même titre (pour pouvoir faire tourner l'import plusieurs fois). Mais la fonction d'import des chansons doit être modifiée et améliorée pour permettre les mises à jours dans tous les sens.

on se débarrasse de la nécessité du dépôt

On a une nécessité du dépôt car c'est git qui gère pour nous les versions des fichiers. Ainsi on peut permettre aux utilisateurs de corriger en ligne les paroles/accords des chansons, en mode wiki ; tout en gardant un historique des modifications clair.

Pour la gestion des datadirs, je pensais plus à une clef étrangère dans la table Song vers une table Datadir:

Datadir:
    id
    name (pour l'affichage en zone d'admin et la synchronisation)
    url (pour les dépôts git à synchroniser avec un dépôt distant)
oliverpool commented 9 years ago

Plutôt que de se baser sur le titre, je propose qu'on se base sur le chemin pour l'unicité des chansons.

Concernant l'import, je vois (au moins) trois aspects pour la synchronisation de la BDD avec les fichiers .sg:

Au niveau de l'interface, comment faut-il le gérer ? Je propose un truc du style: (à corriger en fonction de la facilité d'implémentation des options/arguments)

La dernière commande correspondrait à une mise à jour complète

Luthaf commented 9 years ago

Plutôt que de se baser sur le titre, je propose qu'on se base sur le chemin pour l'unicité des chansons.

La pair datadir/path_in_datadir correspond de manière unique au chemin. Donc ces deux versions sont équivalentes. L'avantage d'utiliser un datadir est que dans ce cas patacrep génère un cache des chansons qui accélère la compilation.

Je propose un truc du style: (à corriger en fonction de la facilité d'implémentation des options/arguments)

Pas de problème pour avoir des options, même plusieurs à la fois. Les options proposées me semble pas mal. Il faudrait juste commencer par gérer plusieurs datadir depuis patanet, et ça se fera tout seul (ou presque ^^) après.

oliverpool commented 9 years ago

Ok, Du coup "on" attend la gestion des datadir (ou au moins les bases techniques), pour mettre à jour importsongs

Luthaf commented 9 years ago

Je pourrais me remettre plus sérieusement à patanet une fois la seconde semaine de janvier, mes partiels et la sortie de patacrep v4.0 passés !

oliverpool commented 9 years ago

ok, pas de soucis Bon courage pour tes partiels !

(à partir de demain, je risque de ne plus trop avoir de disponibilités pour coder...)