Redmine custom field értékadások

Sziasztok.

Adott egy telepített Redmine, sikerült külső adatbázisból authentikálni a felhasználókat és a controller_account_success_authentication_after hook-on keresztül a belépés folyamán hozzá tudom adni a felhasználót egy megfelelő csoporthoz.
A kérdés, hogy ugyanazen hook-on belül hogy tudok értéket adni egy előzőleg már definiált felhasználó típusú custom field-nek?

Elég sok mindent kipróbáltam már, de sajnos a Ruby-hoz nem értek, csak néhány napja kezdtem foglalkozni vele a Redmine jóvoltából.

Bónusz kérdés: a custom field-ek alapértelmezett értékeinél lehet-e valamilyen placeholdert alkalmazni, mert erre vonatkozóan nem találtam túl sok információt. A cél az lenne, hogy a belépés alatt az első kérdésben meghatározottak szerint a felhasználó kapna egy flag-et és egy új issue felvitelekor ezt a flag-et automatikusan hozzá kellene rendelni egy issue típusú custom field-hez.
Így a felhasználó által létrehozott issue gyakorlatilag örökölné a felhasználóhoz tartozó flag aktuális állapotát.

Ha valaki tud a fentiekben segíteni azt előre is köszönöm.

Üdv: Zoli

Hozzászólások

Ohm, ezzel a flagezessel mit szeretnel megoldani? Miert van az az erzesem, hogy rossz iranyba mesz?

"Felhasznalo tipusu custom field" - milyen objektumnak van ilyen custom field-je? A belepteteskor tudod, hogy melyik ilyen objektumot szeretned megszerezni?

Egyaltalan, mi a feladat?
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Ohm, ezzel a flagezessel mit szeretnel megoldani? Miert van az az erzesem, hogy rossz iranyba mesz?

Valószínűleg rossz irányba, de mint írtam nem értek a Ruby-hoz, így csak a saját fejem után mentem.

Tehát a feladat: a külső adatbázisban, ahonnan authentikálok a felhasználókhoz tartozik egy logikai érték (kiemelt felhasználó). Azt szeretném, hogy az authentikáció során ezt az értéket hozzá tudjam rendelni a felhasználó Redmine profiljához és ha nyit egy új hibajegyet, akkor az is tartalmazza ezt az értéket (azért, hogy ha a felhasználó státusza a későbbiek során megváltozik, a hibajegyé ne változzon).

Ezért létrehoztam két custom field-et, egyet a felhasználóhoz (felhasznalo tipusu custom field) egyet pedig a hibajegyekhez. Mivel a beléptetés során a felhasználót hozzá tudom adni egy kiválasztott csoporthoz, úgy gondoltam, hogy ugyanígy beállítom ezt az említett logikai értéket is. De arra, hogy ezt hogy kell megtenni sajnos nem jöttem rá, nem találtam a user objektumhoz olyan metódust, amin keresztül kezelné a custom field-eket.

A feladat második részét pedig úgy képzeltem, hogy ha az előzőt sikerült megoldani, akkor a hibajegy nyitása során ezt a felhasználói státuszt a hibajegyhez tartozó custom field-be egy placeholder segítségével, a custom field létrehozásakor megadható alapértelmezett értékkel örökíteném át. Viszont itt sem találtam meg, hogy léteznek-e ilyen placeholder-ek és ha igen, akkor milyenek.

Üdv: Zoli

Itt nem a Ruby tudassal van baj, hanem az elmelettel.

Elmondom, en mit ertettem meg, es en hogy csinalnam.

Vannak felhasznaloid egy external db-ben, van egy parameter is_elevated, erteke true/false. Szeretned ezt az erteket szerepeltetni a redmine oldalon.

Szerintem megoldas:
1 megkozelites) letrehozok a felhasznalon egy boolean tipusu custom field-et (is_elevated), alapertelmezett erteke false. Ha a masik db azt mondja, hogy marpedig o egy kiemelt user, akkor atbokom true-ra.
2 megkozelites) letrehozok egy elevated_users nevu csoportot, aminek fixen ismerem a nevet. Amikor a user belep, akkor megnezem, hogy az external db szerint az user elevated-e. Ha igen, megnezem, hogy a redmine oldalan tagja-e az elevated_users csoportnak ( Group.find_by_name('elevated_users').members.collect(&:name).include?(current_user.name) ). Ha nem, akkor cumi, be kell rakni (ha jo a kapcsolat, akkor ezt barmelyik oldalrol kezdemenyezheted), ha tagja, akkor skip.

Es ennyi. En a 2. megoldast favorizalnam, mert akkor a csoportnak maganak kulon jogokat is lehetne csinalni, amikor erre szukseg vagyon, raadasul nem kell custom field sehova.

A kodot csak peldanak irtam, nem ismerem a Redmine belso apijat, szoval nezd meg, mit kell pontosan lekerned. Ha nagyon kell, jovo heten ra tudok nezni, de nem igerek semmit.

--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Vannak felhasznaloid egy external db-ben, van egy parameter is_elevated, erteke true/false. Szeretned ezt az erteket szerepeltetni a redmine oldalon.

Pontosan.

1 megkozelites) letrehozok a felhasznalon egy boolean tipusu custom field-et (is_elevated), alapertelmezett erteke false. Ha a masik db azt mondja, hogy marpedig o egy kiemelt user, akkor atbokom true-ra.

Ez az amit szerettem volna, de nem tudom, hogy hogyan tudok true értéket adni neki. Vagy közvetlenül az adatbázisban gondoltad átírni?

2 megkozelites) letrehozok egy elevated_users nevu csoportot, aminek fixen ismerem a nevet. Amikor a user belep, akkor megnezem, hogy az external db szerint az user elevated-e. Ha igen, megnezem, hogy a redmine oldalan tagja-e az elevated_users csoportnak ( Group.find_by_name('elevated_users').members.collect(&:name).include?(current_user.name) ). Ha nem, akkor cumi, be kell rakni (ha jo a kapcsolat, akkor ezt barmelyik oldalrol kezdemenyezheted), ha tagja, akkor skip.

Ezt sikerült megoldani és működik is, a probléma, hogy ezzel még nem tudom megmondani, hogy az aki a hibajegyet létrehozta a létrehozás pillanatában kiemelt felhasználó volt-e vagy sem (a későbbiek során a felhasználó ezen státusza változhat).

Alternatív megoldás lehetne, a 2. módszerrel és egy issue custom field-el megoldani, hogy a field csak akkor jelenjen meg a hibajegy felvitelekor, ha a felhasználó tagja az elevated_users csoportnak, de ilyen finom jogosultsági beállítást nem találtam még a külső modulok között sem.

Köszönöm az eddigi segítséged, nézegetem én is, ha esetleg lesz rá időd és ránézel azt megköszönöm.

Üdv: Zoli

Boolean tipusu custom field-et nem tudsz felvenni? Annak a default erteke false (a rails-nal a nil a default ertek, de boolean field eseteben ez mindegy, mert a nil false-t is jelent - a boolean fieldek eseteben).
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal