verejny kontaktnicek #71

Merged
ticvac merged 10 commits from kontaktnicek_pro_vsecny into master 2024-11-12 21:15:25 +01:00
Owner

Určitě bez bugů
veřejný kontaktníček v pdf a vcf

Určitě bez bugů veřejný kontaktníček v pdf a vcf
ticvac added 1 commit 2024-11-05 22:48:44 +01:00
zelvuska reviewed 2024-11-06 17:54:17 +01:00
@ -47,0 +53,4 @@
'kontaktnicek_vcf',
views.soustredeniKontaktnicekVcfView,
name='soustredeni_kontaktnicek'
),
Owner

Tady je nějaké divné odsazení…

Tady je nějaké divné odsazení…
zelvuska marked this conversation as resolved
zelvuska reviewed 2024-11-06 17:56:56 +01:00
@ -67,1 +77,4 @@
help_text='Exportuje se jen podle tohoto flagu (ne veřejnosti)')
kontaktnicek_vcf = models.FileField('kontaktníček vcf', upload_to=generate_filename_kontaktnicek, blank=True,)
kontaktnicek_pdf = models.FileField('kontaktníček pdf', upload_to=generate_filename_kontaktnicek, blank=True,)
Owner

Nemá to být null=True? (Ale já tomu nerozumím…)

Nemá to být `null=True`? (Ale já tomu nerozumím…)
zelvuska reviewed 2024-11-06 18:16:03 +01:00
@ -109,0 +119,4 @@
if (not request.user in [u.osoba.user for u in soustredeni.ucastnici.all()]):
if not request.user.je_org:
return HttpResponse("Nebyl jsi tam nebo nejsi org")
Owner

Asi bych napsal popisnější hlášku, vynechal bych tu část z orgem, a naopak bych tam připsal, že nejsi přihlášený (to se stane asi častěji než že bych se dostal na špatný kontaktníček).

Také si nejsem jistý, jestli HttpResponse je to správné. (Jakože vrátí to něco, co moc nevypadá jako M&M stránky, ne?)

Asi bych napsal popisnější hlášku, vynechal bych tu část z orgem, a naopak bych tam připsal, že nejsi přihlášený (to se stane asi častěji než že bych se dostal na špatný kontaktníček). Také si nejsem jistý, jestli HttpResponse je to správné. (Jakože vrátí to něco, co moc nevypadá jako M&M stránky, ne?)
Owner

Promiň, jestli jsou připomínky moc „takhle ne“ a málo „takhle ano“. Jen jsem se na to teď kouknu (měl jsem chuť to zamergeovat) a tohle jsem našel a nemám moc času na „takhle ano“. Klidně to tu nech viset, já někdy vyrobím „takhle ano“, případně to rozebereme v úterý…

Promiň, jestli jsou připomínky moc „takhle ne“ a málo „takhle ano“. Jen jsem se na to teď kouknu (měl jsem chuť to zamergeovat) a tohle jsem našel a nemám moc času na „takhle ano“. Klidně to tu nech viset, já někdy vyrobím „takhle ano“, případně to rozebereme v úterý…
ticvac added 1 commit 2024-11-12 18:37:24 +01:00
ticvac closed this pull request 2024-11-12 18:37:42 +01:00
ticvac reopened this pull request 2024-11-12 19:17:40 +01:00
ledoian requested changes 2024-11-12 19:40:47 +01:00
@ -14,0 +19,4 @@
# generate random string
length = 32
fname = "kontaktnicky/" + timezone.now().strftime('%Y-%m-%d-%H_%M')
fname += ''.join(secrets.choice(string.ascii_uppercase + string.digits) for _ in range(length))
Owner

Tohle nezachvá příponu, což je spíš bug – když se dívám na soubory na Gimlim, tak chci vědět, co jsou zač.

Tohle nezachvá příponu, což je spíš bug – když se dívám na soubory na Gimlim, tak chci vědět, co jsou zač.
@ -14,0 +20,4 @@
length = 32
fname = "kontaktnicky/" + timezone.now().strftime('%Y-%m-%d-%H_%M')
fname += ''.join(secrets.choice(string.ascii_uppercase + string.digits) for _ in range(length))
return os.path.join(settings.KOREKTURY_PDF_DIR, fname)
Owner

Prosím ne KOREKTURY_PDF_DIR!!

Prosím ne `KOREKTURY_PDF_DIR`!!
Owner

Also: možná je snazší a bezpečnější použít pathlib než os.path.join

Also: možná je snazší a bezpečnější použít `pathlib` než `os.path.join`…
@ -47,0 +52,4 @@
path(
'kontaktnicek_vcf',
views.soustredeniKontaktnicekVcfView,
name='soustredeni_kontaktnicek'
Owner

Stejný name pro obě URL nevypadá moc správně :-(

Stejný `name` pro obě URL nevypadá moc správně :-(
@ -107,2 +108,4 @@
template_name = 'soustredeni/export_do_abstraktu.html'
pk_url_kwarg = 'soustredeni' # v url bude <int:soustredeni> místo defaultně požadovaného <int:pk>
# kontaktnicek
Owner

Diakritika maybe?

Diakritika maybe?
zelvuska marked this conversation as resolved
@ -109,0 +113,4 @@
return soustredeniKontaktnicekView(request, soustredeni, "pdf")
def soustredeniKontaktnicekVcfView(request, soustredeni):
return soustredeniKontaktnicekView(request, soustredeni, "vcf")
Owner

Ty views jsou OK-ish. (Šlo by mít URL typu kontaktnicek_<typ:str> a rovnou používat výsledný view, ale asi to nepřidává moc a spíš to zhoršuje čitelnost…)

Ty views jsou OK-ish. (Šlo by mít URL typu `kontaktnicek_<typ:str>` a rovnou používat výsledný view, ale asi to nepřidává moc a spíš to zhoršuje čitelnost…)
ledoian marked this conversation as resolved
@ -109,0 +119,4 @@
soustredeni = get_object_or_404(Soustredeni, id=soustredeni)
if (not request.user in [u.osoba.user for u in soustredeni.ucastnici.all()]):
if not request.user.je_org: # nebyl jsi tam, nebo nejsi org
Owner

Uh, je to ekvivalentní s if request.user not in […] and not request.user.is_org:?

Uh, je to ekvivalentní s `if request.user not in […] and not request.user.is_org:`?
@ -109,0 +122,4 @@
if not request.user.je_org: # nebyl jsi tam, nebo nejsi org
raise Http404()
if not soustredeni.kontaktnicek_pdf and typ == "pdf": # není k dispozici
raise Http404()
Owner

404 není správný návratový kód (kontaktníček zjevně existuje, ale nemám k němu přístup), má být 403 (PermissionDenied se myslím jmenuje ta Djangová výjimka).

404 není správný návratový kód (kontaktníček zjevně existuje, ale nemám k němu přístup), má být 403 (`PermissionDenied` se myslím jmenuje ta Djangová výjimka).
@ -109,0 +123,4 @@
raise Http404()
if not soustredeni.kontaktnicek_pdf and typ == "pdf": # není k dispozici
raise Http404()
elif not soustredeni.kontaktnicek_vcf and typ == "vcf": # není k dispozici
Owner

Poněkud se mi nelíbí místní duplikace kódu, když se tam mění dohromady tři věci (až přidáme další, tak někde něco zapomeneme přepsat a bude to bug…). Co třeba:

# typ -> (field, mime_type, otevreni)
kontaktnicky = {
|   'pdf': (soustredeni.kontaktnicek_pdf, 'applcation/pdf', 'rb'),
|   'vcf': (soustredeni.kontaktnicek_vcf, 'text/vcard', 'r'), # vcf je texťák, nevím, jestli je potřeba ho otevítat binárně.
}
try:
	field, mime, otevreni = kontaktnicky[typ]
except KeyError as e:
	raise ValueError("Neznámý typ kontaktníčku") from e
if not field:
|   ...
with open(field.path, otevreni) as soubor:
|   return HttpResponse(soubor.read(), content_type=mime)
Poněkud se mi nelíbí místní duplikace kódu, když se tam mění dohromady tři věci (až přidáme další, tak někde něco zapomeneme přepsat a bude to bug…). Co třeba: ```python3 # typ -> (field, mime_type, otevreni) kontaktnicky = { | 'pdf': (soustredeni.kontaktnicek_pdf, 'applcation/pdf', 'rb'), | 'vcf': (soustredeni.kontaktnicek_vcf, 'text/vcard', 'r'), # vcf je texťák, nevím, jestli je potřeba ho otevítat binárně. } try: field, mime, otevreni = kontaktnicky[typ] except KeyError as e: raise ValueError("Neznámý typ kontaktníčku") from e if not field: | ... with open(field.path, otevreni) as soubor: | return HttpResponse(soubor.read(), content_type=mime) ```
Owner

Uh, ten if not field: ... byl náznak toho, že není potřeba výčet typů v if (not soustredeni.kontaktnicek_pdf and typ == "pdf") or (not soustredeni.kontaktnicek_vcf and typ == "vcf"):, sorry za neexplicitnost.

Uh, ten `if not field: ...` byl náznak toho, že není potřeba výčet typů v `if (not soustredeni.kontaktnicek_pdf and typ == "pdf") or (not soustredeni.kontaktnicek_vcf and typ == "vcf"):`, sorry za neexplicitnost.
@ -109,0 +129,4 @@
if typ == "pdf":
with open(soustredeni.kontaktnicek_pdf.path, 'rb') as pdf:
response = HttpResponse(pdf.read(), content_type='application/pdf')
return response
Owner

Možno rovnou:

with open() as whatever:
	return HttpResponse()
Možno rovnou: ```python3 with open(…) as whatever: return HttpResponse(…) ```
ticvac added 1 commit 2024-11-12 20:15:37 +01:00
ticvac added 1 commit 2024-11-12 20:20:46 +01:00
ticvac added 1 commit 2024-11-12 20:27:55 +01:00
ticvac added 1 commit 2024-11-12 20:31:10 +01:00
ticvac added 1 commit 2024-11-12 20:37:17 +01:00
ticvac added 1 commit 2024-11-12 20:37:54 +01:00
ticvac changed title from verejny kontaktnicek to WIP: verejny kontaktnicek 2024-11-12 20:44:28 +01:00
ticvac added 1 commit 2024-11-12 21:07:16 +01:00
ledoian changed title from WIP: verejny kontaktnicek to verejny kontaktnicek 2024-11-12 21:14:21 +01:00
zelvuska added 1 commit 2024-11-12 21:14:34 +01:00
ticvac merged commit 5ccb94d155 into master 2024-11-12 21:15:25 +01:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: mam/mamweb#71
No description provided.