2010-07-09 9 views
2

J'ai vérifié IRC pour redmine et n'ai pas pu obtenir d'aide. J'ai été confronté à des problèmes de météo pour coller ceci sur Superuser, ServerFault ou ici, mais comme mon problème est techniquement axé sur la programmation, j'ai décidé de chercher de l'aide ici.Redmine - Ruby - Recherche de la valeur d'un champ personnalisé

Nous avons un système de référentiel Mercurial avec une mise en page basée sur des projets qui répondent à nos besoins. J'ai écrit des scripts shell qui fonctionnent de manière délicieuse pour gérer le dépôt et les mettre dans des endroits corrects, etc. J'essaie d'appeler ces scripts et de leur transmettre les paramètres de Redmine. Je modifie l'application/controllers/projects_controller.rb (lignes 75 -> 87)

J'ai réussi à extraire les paramètres du projet et l'utilisateur actuel, mais j'ai ajouté deux champs personnalisés (en utilisant les champs personnalisés dans Redmine Administration) et j'essaie d'accéder aux valeurs de ces champs personnalisés. Est-ce que quelqu'un a une idée de comment je peux obtenir ces derniers?

Ma déclaration d'essai de travail en cours est inférieure à:

system "echo '#{@project.identifier}, #{User.current}' >> /tmp/rm.log" 

Répondre

3

Utilisez le modèle CustomField. Par exemple,

# Find the first Custom Field 
    cf = CustomField.first 
    # Get the name 
    puts cf.name 
    # Find out if this Custom Field is for all projects 
    cf.is_for_all? 
    # If not, find out which projects are using it 
    cf.projects 

Pour comprendre cela, je viens d'installer Redmine-1.0.0 poussé autour de la source et le script/console.

+0

J'ai réussi à le résoudre. Je crois que ce qui précède fonctionne, mais j'ai fini par accéder à la base de données MySmine de Redmine depuis un script Perl pour récupérer les données en utilisant l'identifiant pour trouver l'id de projet et ensuite trouver le champ personnalisé via un innerjoin. Je posterai le code demain matin pour kriss, puisqu'il est investi dans cette question. –

1
use DBI; 

$dbServer=''; 
$user=''; 
$pass=''; 
$ident=$ARGV[0]; 

my $dsn = "dbi:mysql:database=redmine;host=$dbServer;port=3306"; 
my $dbh = DBI->connect($dsn, "$user","$pass") or die "Can't connet to the Database: $DBI::errstr\n"; 
my $sth = $dbh->prepare("SELECT value FROM custom_values c INNER JOIN projects p ON c.customized_id=p.id WHERE p.identifier='$ident' LIMIT 1"); 
$sth -> execute(); 
my @row=$sth->fetchrow_array(); 
my [email protected][0]; 

Appeler le script ci-dessus (au lieu de faire écho dans l'original), et en passant ensuite dans l'identifiant du projet que nous avons déjà, le paramètre personnalisé peut être utilisé de quelque manière nessacary. Ce code pour saisir un seul champ personnalisé (je n'utilisais qu'un seul.)

+0

Merci. J'ai encore des choses à régler, mais ça me donne un début. – kriss