-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PERSON: Abo-Filter nach Alter und Sprache #290
Conversation
def first_language_with_correspondence_language | ||
lang = entry.correspondence_language.presence | ||
lang ? lang.upcase : 'DE' | ||
# TBD: move to youth wagon? https://github.com/hitobito/hitobito_youth/blob/3322054e2d64db19f8b049773e61f68e7f614546/app/domain/export/tabular/people/participation_nds_row.rb#L70 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@carlobeltrame Das könnte meiner Meinung nach in den youth-Wagon übernommen werden. https://github.com/hitobito/hitobito_youth/blob/3322054e2d64db19f8b049773e61f68e7f614546/app/domain/export/tabular/people/participation_nds_row.rb#L70
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ja, finde ich auch, aber dann würde ich die Logik noch restriktiver schreiben. In der Spezifikation von J+S sind nur DE, FR, IT und Andere als Beispielwerte aufgeführt. Wenn wir das in den Youth Wagon verschieben gibt es potenziell noch mehr Sprachen (z.B. bei der Stiftung junger Auslandschweizer) die da in Zukunft mal zu ungültigen NDS-Exports führen könnten. Also wenn verschieben, dann lieber in einem Mapping nachschauen, und auf "Andere" zurückfallen wenns nicht de, fr oder it ist.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Erledigt im PR hitobito/hitobito_youth#35
@@ -0,0 +1,7 @@ | |||
class ReplaceCorrespondanceLanguageWithCoreLanguage < ActiveRecord::Migration[6.1] | |||
def change | |||
Person.where(correspondence_language: nil).update_all(correspondence_language: :de) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@carlobeltrame hier liegt das für den Moment vermeitlich grösste Problem: das Feld correspondence_language
kann null sein, während language
not null ist. Damit wird dieses Feld neu ein Pflichtfeld, was ja jeweils auf pfadipolitischer Ebene nicht unumstritten ist. Ich nehme hier auch gleich @simfeld dazu.
Was meint ihr?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ja gute Frage. Man könnte natürlich beginnen, den Kantonalverband der Haupt-Rolle jeder Person herauszusuchen, und anhand von dem die Sprache intelligent zu setzen... Kann man aber beliebig weit treiben weil es auch noch Kantone mit mehreren Sprachen gibt... Da hätte ich auch gerne einen Rat von @simfeld oder @Michael-Schaer wie weit wir hier gehen sollen.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was ist denn die Default-Korrespondenzsprache beim Versand von E-Mails wenn man keine gesetzt hat? Ich nehme an auch Deutsch? Insofern wäre für mich folgendes Vorgehen in Ordnung:
- Migration setzt per Default
language
auf DE - PBS-Release-Notes kündigen dies an und man kann das somit verhindern indem man seine Korrespondenzsprache setzt vor dem Release
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ich glaube die Mails achten bisher nicht auf die Korrespondenzsprache, könnte aber falsch liegen.
Deinen Vorschlag finde ich gut.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Swing, Cosinus und ich haben uns heute auch noch abgesprochen. Wenn möglich, wäre ein Matching nach Kanton gut. Da die KVs Kantone zugeordnet haben, sollte ein Matching gut möglich sein. Hier der Vorschlag für die Aufteilung:
DE
Aargau Appenzell Innerrhoden Appenzell Ausserrhoden Bern Basel-Land Basel-Stadt
Glarus Graubünden Luzern Nidwalden Obwalden St. Gallen Schaffhausen Solothurn Schwyz Thurgau Uri Zug ZürichFR
Freiburg Genf Jura Waadt Wallis NeuenburgIT
Tessin
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ich habe das noch entsprechend in der Tech Spec ergänzt
70a0cdb
to
c0b5af3
Compare
@@ -0,0 +1,23 @@ | |||
class ReplaceCorrespondanceLanguageWithCoreLanguage < ActiveRecord::Migration[6.1] | |||
CANTONS_LANGUAGE = { | |||
# de: [:ag, :ai, :ar, :be, :bl, :bs, :gl, :gr, :lu, :nw, :ow, :sg, :sh, :so, :sz, :tg, :ur, :zg, :zh], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Das ist sowieso der default, kann ganz weggelassen werden
def infer_person_language(person) | ||
return person.language if person.language.present? | ||
|
||
canton = person.find_kantonalverband&.kantonalverband_cantons&.first&.to_sym |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@carlobeltrame Ich habe im pbs wagon die Methode Person#find_kantonalverband gefunden, aber ich glaube sie berücksichtigt die gelöschten Rollen nicht wie in der Tech Spec vorgegeben. Was denkst du? soll ich diese Logik trotzdem nochmal bauen?
def first_language_with_correspondence_language | ||
lang = entry.correspondence_language.presence | ||
lang ? lang.upcase : 'DE' | ||
# TBD: move to youth wagon? https://github.com/hitobito/hitobito_youth/blob/3322054e2d64db19f8b049773e61f68e7f614546/app/domain/export/tabular/people/participation_nds_row.rb#L70 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Erledigt im PR hitobito/hitobito_youth#35
d37677e
to
d97649e
Compare
def change | ||
Person.update_all("language = correspondence_language") | ||
remove_column :people, :correspondence_language, :string, limit: 5 | ||
|
||
Person.where(language: nil).find_each do |person| | ||
person.update!(language: infer_person_language(person)) | ||
end | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Denke hier macht es Sinn die #change
Methode in eine #up
und #down
Methode zu ändern.
Und eine Spec für die Migration fände ich auch noch nice.
Beispiel: https://github.com/hitobito/hitobito_pbs/blob/master/spec/migrations/prolong_j_s_qualifications_2021_spec.rb
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@TheWalkingLeek finde ich beides gut. Beim schreiben der migration spec bin ich auf folgendes Problem gestossen. In dieser Migration entferne ich das correspondence_language Feld, was das Testen enorm erschwert (wenn die DB auf dem letzten Stand ist, gibt es das Feld dann nicht mehr). Ich habe schon versucht, die Migration Spec so zu schreiben, dass die Migrationen danach down
'd werden und dann getestet wird, aber es tauchen immer wieder Probleme auf. Damit ich hier nicht noch mehr Zeit verschwende, schlage ich vor einfach die #infer_person_language
zu refactoren und diese dann zu testen, nicht die ganze Migration. Was meinst du?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ja das klingt sinnvoll. Migrations-specs können dadurch manchmal etwas mühsam sein aber die meiste Logik passiert ja sowieso im #infer_person_language
. Das wäre demnach meines Erachtens nach auch der wichtigste Teil für einen Test, sollte dann also passen :)
d97649e
to
aae7c5a
Compare
app/helpers/people_pbs_helper.rb
Outdated
def format_person_salutation(person) | ||
person.salutation_value | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ich glaube diese Methode dürfen wir nicht löschen, das wird noch gebraucht. Zwar nicht genau mit diesem Namen, aber im format_helper im Core irgendwo wird nach einer so benannten Methode gesucht, wenn ein salutation Feld auf einer Person gerendert wird.
|
||
included do | ||
alias_method_chain :first_language, :correspondence_language |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wir müssen diese Methode weiterhin überschreiben, weil die Base-Implementation immer 'DE' zurückgibt (Jubla hat z.B. nur Gruppen in der Deutschschweiz).
20affc1
to
4f333ec
Compare
4f333ec
to
e825a8b
Compare
Resolves hitobito#1919