Webfrontend #668

picture data cached as 'static' resource rather than encoded in the html response; also resize big images and create thumbnails

Added by Thomas Mielke almost 3 years ago. Updated about 2 years ago.

Status:ZurückgestelltStart date:
Priority:NormalDue date:
Assignee:Werkeverwaltung% Done:

70%

Category:-Estimated time:5.00 h
Target version:Repertoire 5) Production phase II

Description

the current method of displaying artist pictures is to encode & decode the picture data embedded in the html, which is a ressource intensive task. Better have a the images stored in a static file folder.

We also need to normalize the images to a reasonable size and provide thumbnails.

Alex & Thomas discussed the implementation already:

(14:16:18) Thomas: man kann bei Fields.Binary() einen Verzeichnisnamen angeben, damit das Binary nicht in der DB gespeichert wird; dabei werden auch die hashes als dateinamen verwendet, wenn ich mich richtig erinnere.
(14:19:19) Thomas: ich schaue mir aber jetzt erst einmal dein machwerk an...
(14:20:31) alexander.blum: wie gesagt, fang mit der news an
(14:25:30) Thomas: was ist ein "current web user tryton user"
(14:25:50) alexander.blum: es gibt einen tryton user pro web user
(14:26:06) alexander.blum: das war der 3-klang: (web_user, party, user) mit 1:1 verbindungen
(14:26:25) Thomas: ok...
(14:26:28) alexander.blum: hat udo so vorgesehen, falls mal doch der tryton client für user relevant werden könnte
(14:26:45) alexander.blum: und aus irgendwelchen gründen, an die ich mich nicht erinnere
(14:26:45) Thomas: ah
(14:26:51) alexander.blum: systemische
(14:26:55) alexander.blum: vielleicht
(14:27:08) alexander.blum: @ binary: du kannst einfach den getter überschreiben
(14:27:50) alexander.blum: beispiel in ado/src/trytond/trytond/ir/action.py:594
(14:28:07) Thomas: will aber nicht jedes mal neu hashen, wenn der hash nur gelesen werden soll
(14:28:13) alexander.blum: so bekommst du einen file pointer, den du genau so in den FileResponse packen kannst
(14:28:30) alexander.blum: nur der hash? wie meinst du?
(14:29:41) Thomas: FileResponse...
(14:29:51) Thomas: da bin ich noch nicht
(14:30:41) Thomas: weiß nicht was du meinst, in Action...
(14:31:03) alexander.blum: schau dir die felddefinition an
(14:31:37) Thomas: name = fields.Char('Name', required=True, translate=True)
type = fields.Char('Type', required=True, readonly=True)
usage = fields.Char('Usage')
keywords = fields.One2Many('ir.action.keyword', 'action',
'Keywords')
groups = fields.Many2Many('ir.action-res.group', 'action', 'group',
'Groups')
icon = fields.Many2One('ir.ui.icon', 'Icon')
active = fields.Boolean('Active', select=True)

(14:31:44) Thomas: welche davon?
(14:31:57) Thomas: ich weiß überhaupt nicht was die klasse macht
(14:32:36) alexander.blum: https://redmine.c3s.cc/projects/repertoire/wiki/Architecture
(14:32:40) alexander.blum: ah
(14:32:49) alexander.blum: report_content = fields.Function(fields.Binary('Content',
filename='report_content_name'),
(14:32:50) alexander.blum: das hier
(14:33:00) alexander.blum: wobei ...
(14:33:19) alexander.blum: du kommst ja an den filename
(14:33:42) alexander.blum: ich bin etwas verwirrt, was dich daran hindert, die datei einfach zu öffnen, wenn du an den filename kommst
(14:33:54) Thomas: ich weiß gerade nicht was du meinst
(14:34:19) Thomas: ich hab auch keine ahnung, ob die binaries in der db gespeichert werden oder in dateien
(14:34:33) Thomas: filename müsste leer sein, wenn in db gespeichert wird.
(14:34:55) Thomas: der code sollte da agnostisch sein.
(14:35:00) Thomas: finde ich
(14:35:21) Thomas: lass mich mal machen.
(14:35:34) Thomas: ich melde mich, wenn ich gegen eine wand laufe.
(14:35:44) alexander.blum: hm. ok, aber im moment vermute ich, dass es sehr einfach ist und keinen aufwand braucht
(14:36:00) Thomas: für dich
(14:36:04) alexander.blum: generell
(14:36:13) Thomas: für mich ist es eine sache von vielen stunden
(14:36:27) alexander.blum: daher will ich dir lieber den pointer mitgeben
(14:36:37) Thomas: im moment verwirrt es nur#
(14:36:48) Thomas: weil wir wohl nicht den gleichen ansatz haben
(14:36:53) alexander.blum: es ist vielleicht einfach, ich war am anfang selbst verwirrt
(14:37:23) alexander.blum: wenn du an den filename kommst (über artist.image.filename)
(14:37:33) Thomas: also, was spricht dagegen es so zu machen wie ich vorgeschlagen habe?
(14:37:45) Thomas: es gibt vielleicht gar keinen filenamen.
(14:37:52) Thomas: telefonieren?
(14:37:58) alexander.blum: ja, wäre einfacher


Related issues

Related to collecting_society - Userfeedback #770: Veröffentlichungen verschwinden Erledigt
Related to collecting_society - Userfeedback #795: Künstler anlegen mit Bild - Menüpunkt Künstler nicht mehr erreichbar Erledigt

History

#1 Updated by Thomas Mielke almost 3 years ago

  • Tracker changed from Unterstützung to Webfrontend

#2 Updated by Thomas Mielke almost 3 years ago

Maybe use attachments rather than binary blobs to store pictures, like content was before:

https://github.com/C3S/collecting_society/commit/471a0d732ff8566fd8db37787f0d58c5ed33439a#diff-4d0dfa13081e3abafdab0861463bb911

#3 Updated by Thomas Mielke almost 3 years ago

#4 Updated by Thomas Mielke almost 3 years ago

  • Related to Userfeedback #795: Künstler anlegen mit Bild - Menüpunkt Künstler nicht mehr erreichbar added

#5 Updated by Thomas Mielke almost 3 years ago

  • Status changed from Neu to In Bearbeitung
  • % Done changed from 10 to 70

#6 Updated by Thomas Mielke almost 3 years ago

Mormalization & thumbnailing done here:

https://github.com/C3S/collecting_society.portal.repertoire/commit/47ccdf233c31147cb3195a1a9a9d7d0e876a8570
https://github.com/C3S/collecting_society.portal.repertoire/commit/ef8e9bdfb58482c3f399ef2661aebf7de17f5758
https://github.com/C3S/collecting_society.portal.repertoire/commit/cfa84d2b672703fa05efb864b4e766667fa42bf6

This was quite urgent because requests timed out due to the encoding of big images and artists/releases list pages were no longer accessible.

We need further discussion about the best way to store the images, i.e. tryton attachments, and how to provide 'static' content.

#7 Updated by Thomas Mielke almost 3 years ago

  • Status changed from In Bearbeitung to Zurückgestellt
  • Assignee changed from Thomas Mielke to Werkeverwaltung

#8 Updated by Alexander Blum about 2 years ago

  • Target version changed from 5) Production phase II to Repertoire 5) Production phase II

#9 Updated by Alexander Blum about 2 years ago

  • Project changed from repertoire to collecting_society

Also available in: Atom PDF