Aktywne Wpisy
kupczyk +439
OlaKordasOfficial +250
Lewaki się spłakały do moderacji i wpis usunięty, to napiszę jeszcze raz bez przekleństw.
Spróbujcie otworzyć lokal, w którym będziecie obsługiwać tylko białych heteroseksualnych ludzi. Zakaz wstępu dla czarnych, beżowych i lpg. Zobaczycie, co was spotka. Tymczasem we wspaniałym postępowym, toleranyjnym świecie możecie sobie bezkarnie dyskryminować rodziny z dziećmi i sugerować, że nawet pies jest wyżej w hierarchii.
#bekazlewactwa #bekazpodludzi #lewackalogika
Spróbujcie otworzyć lokal, w którym będziecie obsługiwać tylko białych heteroseksualnych ludzi. Zakaz wstępu dla czarnych, beżowych i lpg. Zobaczycie, co was spotka. Tymczasem we wspaniałym postępowym, toleranyjnym świecie możecie sobie bezkarnie dyskryminować rodziny z dziećmi i sugerować, że nawet pies jest wyżej w hierarchii.
#bekazlewactwa #bekazpodludzi #lewackalogika
Kod tutaj: https://pastebin.com/ti7Yq3fq
Co miał robić program:
Docelowo miał pobrać dane od użytkownika, a potem pozamieniać konkretne wartości w przygotowanych wcześniej plikach docx (takich jakby szablonach). Takie szybkie generowanie powtarzalnych formularzy i wniosków.
Po kolei kodu może nie będę tłumaczył, coś tam pomógł chat gpt, ale najważniejsze:
mamy słownik wszystkich gotowych formularzy z parami kluczy i wartości gdzie klucz to rzecz podmieniana a po dwukropku już gotowa wartość (docelowo wiadomo, będę pytał użytkownika). Podmiana też nie zmienia stylu formatowania tekstu w plikach.
Później mamy pętlę, gdzie w zależności od tego, jaką cyfrę podał użytkownik, do pustego słownika kopiujemy wartość z tego głównego słownika. Później pary kluczy i wartości są używane w metodzie i generują docelowy plik.
Jako że jestem na początku swojej przygody z programowaniem i się tak wdrażam to jak widzicie jakieś rażące błędy to dawajcie znać, chętnie poczytam i na 100% się czegoś też nauczę. Na dzień dobry już mi nie pasuje, że w pętli mam jeżeli warunek == 1 to, analogicznie jeżeli warunek == 2 to itd. Na bank się da to jakoś poprawić.
Docelowo chciałbym, żeby użytkownik mógł wpisać nie tylko jedną cyfrę, np. 1, 2, 4, ale na tę chwilę nie umiem sformułować warunku, bo w obecnej chwili wyszedłby z tego niemały potwór.
Aha, wiem, że nie ma to żadnej walidacji i nie sprawdza w żaden sposób użytkownika, ale na to przyjdzie jeszcze czas.
replacetextindocx efektywnie pracuje na słowniku z jednym tylko kluczem. Słownik z jednym kluczem nie ma racji bytu, dane których potrzebujesz są w słowniku zagnieżdżonym w środku, tam jak najbardziej ma on sens. Zauważ że iterujesz po docreplacements.items() tylko raz, po to żeby wyciągnąć do osobnej zmiennej jedyny klucz
def replace_text_in_docx(docx_path):
replacements = dictOfRecepientRequests[docx_path]
doc = docx.Document(docx_path)
...
a
choices_map = {
'1': "zdO.docx",
'2': "umigO.docx",
}
wtedy zupełnie pozbywasz się tych ifów a wywołanie funkcji zawsze wygląda tak samo:
replace_text_in_docx(choices_map[chosenRecepients])
Jednak teraz mamy dwa słowniki a literały takie jak "zdO.docx" są kluczami jednego a wartościami drugiego, można więc pokusić
snake_case
a stałe
SCREAMING_SNAKE_CASE
tego już nie zmieniałem żeby nie gmatwać dodatkowo
części merytorycznej nie sprawdzę teraz, pewnie dopiero wieczorem ale ma to oczywiście sens.
bardzo ważna uwaga co do zmiennych - uczyłem się z jakiegoś kursu na udemy i tam właśnie zmienne były pisane aaaaBaaaaCaaa stąd te zmienne u mnie ale już będę się stosował do tego nazewnictwa.
i przy okazji: dużo wiecej trzeba na juniora? :Do
@Calka_internowana: do mapowania liczb nie jest potrzebny słownik, wystarczy zwykła tablica, chyba że przewidujesz dziury w numeracji.
@Calka_internowana:
To jest tak dobre że powinno trafić pod tag #codereview.
Wniosek do jednego urzędu jest udostępniany w pdf z polami które można wypełnić bezpośrednio w przeglądarce pdfów. Stwierdziłem, że może przekonwertuje sobie wniosek do docx, ale jak to bywa, wykrzaczyło bo wniosek ma dużo grafik, kolumn i innych problematycznych rzeczy. Myślałem, że obejdę to poprzez pola tekstowe.
Pola tekstowe, tak
3. template jest obiektem typu Path i jako taki ma atrybut name https://docs.python.org/3/library/pathlib.html#pathlib.PurePath.name