Skip to content
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

REST API Schema-Intent Konzept in opengever.core umsetzen #5973

Closed
lukasgraf opened this issue Oct 8, 2019 · 4 comments
Closed

REST API Schema-Intent Konzept in opengever.core umsetzen #5973

lukasgraf opened this issue Oct 8, 2019 · 4 comments
Milestone

Comments

@lukasgraf
Copy link
Member

lukasgraf commented Oct 8, 2019

Harvest: Projekt - Umsetzung Neues User Interface GEVER 2019/2020 - Entwicklung

Der Vorschlag in #5968 (comment) soll in Zukunft in plone.restapi umgesetzt werden.

Wir werden dazu in plone.restapi den Vorschlag machen, dies wie beschrieben zu implementieren. Da dies aber eine relativ fundamentale Anpassung ist, ist damit zu rechnen dass noch einiger Diskussionsbedarf besteht, und die Umsetzung nicht in nächster Zeit erfolgen kann.

Daher wollen wir die Umsetzung dieses Konzeptes vorerst in opengever.core prototypen. Es soll dazu das Konzept wie beschrieben umgesetzt werden, aber ohne Änderungen in plone.restapi vorzunehmen, sondern indem die nötigen Services in GEVER entsprechend überschrieben und angepasst werden.

Folgende Anpassungen sollen gemacht werden:

Weitere Aufruf-Syntax für @sources, @querysources und @vocabularies einführen

Für diese drei Endpoints soll eine neue Aufruf-Syntax eingeführt werden, welche die Add-Semantik wiederspiegelt:

sources_add
querysources_add
vocabularies_add

(Siehe Vorschlag im referenzierten Ticket).

Die Endpoints müssen also überschrieben und so umgebaut werden, dass sie entweder 1 oder 2 Pfad-Parameter akzeptieren.

  • 1 Parameter: Der parameter ist field_name. Dies impliziert edit intent
  • 2 Parameter: Die Parameter sind portal_type und field_name, in dieser Reihenfolge. Dies impliziert add intent

Abhängig von der Aufruf-Syntax soll das Schema, von dem die Source, Querysource oder Vocabulary geholt wird, unterschiedlich bestimmt werden:

  • edit - es soll der portal_type des context ausgelesen werden
  • add - es soll der portal_type Pfad-Parameter verwendet werden

Über den portal_type wird dann die FTI geholt, und darüber das Schema, etc.. (muss voraussichtlich nicht angepasst werden).

Neuen endpoint @schema einführen

  • Soll möglichst viel von der Implementierung von @types/(portal_type) aus plone.restapi erben

  • Soll aber nur das serialisieren von Schemas anbieten, nicht das auflisten von existierenden / addable types

  • Im Gegensatz zu @types/(portal_type) soll es aber zwei Formen des Aufrufs geben:

Intent: edit
schema_edit

Intent: add
schema_add

  • Bei der Serialisierung des Schemas soll dann der Intent erhalten bleiben, wenn Vocabulary-like URLs konstruiert werden:
    • Bei add soll auf (container)/@sources/(portal_type)/(field_name) verlinkt werden
    • Bei edit soll auf (context)/@sources/(field_name) verlinkt werden
      (analog für @vocabularies und @querysources)

Voraussichtlich werden folgende Arbeiten nötig sein:

  • @sources, @querysources und @vocabularies endpoints überschreiben
  • Sicherstellen dass diese Endpoints auch auf dem IPloneSiteRoot verfügbar sind (dann aber nur mit add Intent verwendbar)
  • Neuen @schema endpoint registrieren (für IPloneSiteRoot und IContentish)
  • Die Logik für die Schema-Generierung aus plone.restapi für den @schema endpoint wiederverwenden, aber anpassen. Dazu werden vermutlich einige Funktionen aus plone.restapi.types.utils kopiert, gewrapped oder monkey-patched werden müssen.
@lukasgraf lukasgraf self-assigned this Oct 18, 2019
@lukasgraf lukasgraf added this to the Sprint #7 milestone Oct 18, 2019
@lukasgraf
Copy link
Member Author

Schätzung des verbleibenden Aufwands (siehe Tasks im verlinkten Draft-PR): 3 Story Points

@njohner
Copy link
Contributor

njohner commented Oct 22, 2019

Frontend: 5 SP

  • Use the schema endpoint
  • Treat add and edit forms separately
  • no hardcoded vocabularies

@njohner njohner self-assigned this Oct 22, 2019
@phgross phgross modified the milestones: Sprint #7, Sprint #8 Oct 22, 2019
@njohner njohner removed their assignment Oct 28, 2019
@lukasgraf lukasgraf self-assigned this Oct 28, 2019
@phgross
Copy link
Member

phgross commented Nov 5, 2019

Das ganze müsste ja nun auch im Frontend verwendet werden. Sonst haben wir keine Aussage ob das Konzept wie gewünscht funktioniert. Ich verschiebe den Issue deshalb wieder ins Todo.

@phgross phgross modified the milestones: Sprint #8, Sprint #9 Nov 12, 2019
@phgross
Copy link
Member

phgross commented Nov 12, 2019

Dieser Issue wurde umgesetzt und wird nun im UI in allen Formularen verwendet. Funktioniert wie gewünscht.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants