Merge pull request #5229 from FinnStutzenstein/os4-mediafiles-resources

[os4] no explicit resources for meetings
This commit is contained in:
Finn Stutzenstein 2020-03-13 09:18:01 +01:00 committed by GitHub
commit 8e3b25cd21
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -222,23 +222,29 @@ Interface mediafile {
projection_ids: projection[]; projection_ids: projection[];
attachement_ids: Fqid[]; attachement_ids: Fqid[];
meeting_id: meeting; meeting_id: meeting;
// Backreferences for meetings, if a mediafile is used as a special resource
// TODO: The id here is not necessary. This would also work:
// used_as: string[];
// with a list of tokens with `logo_` and `font_` prefix. E.g.:
// used_as: ["logo_web_header", "font_italic", "logo_projector_footer"]
logo_<token>: meeting;
font_<token>: meeting;
} }
// New: Resource // New: Resource
// Resources are meeting-specific or organsation wide. // Resources are organsation wide mediafiles. There should not be a file-manager
// For organisation-resources, no permission chacks are done (event the user // on this layer, but a way to customize fonts, logos and other organisation-wide
// must not be logged in). If a meeting-resource is requested, it is checked, if // resources. There are no permission checks (so the user must not be logged in to
// the user can see the meeting (Anonymous, guest, member). // access the resources). A resource has a token, e.g. `web_header` or
// A resource has a token, e.g. `web_header` or `pdf_font_italic`, so the client // `pdf_font_italic`, so the client knowns, where to put the resource. They are
// knowns, where to put the resource. They are delivered by the mediafile server // delivered by the media service with the URL `<media-prefix>/resource/<id>`.
// with the URL `<media-prefix>/resource/<id>`
Interface Resource { Interface Resource {
id: number; id: number;
token: string; token: string;
filesize: number; filesize: number;
mimetype: string; mimetype: string;
// Either the meeting is set, or the organsation.
meeting_id: meeting;
organisation_id: organisation; organisation_id: organisation;
} }
Interface motion { Interface motion {
@ -592,8 +598,18 @@ Interface meeting {
// if a user is assigned to at least one group. This "query" must be checked, // if a user is assigned to at least one group. This "query" must be checked,
// if it can be performed. // if it can be performed.
// Logos and Fonts
logo_<token>: Mediafile;
font_<token>: Mediafile;
// Examples:
// logo_web_header: Mediafile;
// font_italic_pdf: Mediafile;
// The client can define these resources. There is no need
// to have whitelist/blacklist on the server. The tokens must
// be checked: They must match `[a-z]([a-z_]*[a-z])?` and must
// not be longer than 32 characters.
// Other relations // Other relations
resource_ids: resource[]; // Links to resource/meeting_id
committee_id: committee; // Links to committee/meeting_ids committee_id: committee; // Links to committee/meeting_ids
default_meeting_for_committee_id: committee; // Links to committee/default_meeting_id default_meeting_for_committee_id: committee; // Links to committee/default_meeting_id
present_user_ids: user[]; // Links to user/is_present_in_meeting_ids present_user_ids: user[]; // Links to user/is_present_in_meeting_ids