[IMP] mail, *: auto add implicit attributes of identifying fields

Automatically add `required` and `readonly` on identifying fields and
remove them from field definition.

Task-2955910.
* = calendar, hr, im_livechat, rating, snailmail, website_livechat

closes odoo/odoo#98283

Related: odoo/enterprise#30511
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
This commit is contained in:
Louis Wicket (wil)
2022-08-17 19:48:53 +02:00
parent e916f944af
commit 5d43fad9e6
150 changed files with 21 additions and 381 deletions
@@ -25,8 +25,6 @@ registerModel({
}),
id: attr({
identifying: true,
readonly: true,
required: true,
}),
name: attr(),
start: attr(),
-2
View File
@@ -164,8 +164,6 @@ registerModel({
*/
id: attr({
identifying: true,
readonly: true,
required: true,
}),
/**
* Partner related to this employee.
@@ -158,8 +158,6 @@ registerModel({
publicLivechatGlobalOwner: one('PublicLivechatGlobal', {
identifying: true,
inverse: 'chatbot',
readonly: true,
required: true,
}),
scriptId: attr({
compute: '_computeScriptId',
@@ -9,8 +9,6 @@ registerModel({
chabotOwner: one('Chatbot', {
identifying: true,
inverse: 'currentStep',
readonly: true,
required: true,
}),
data: attr(),
},
@@ -10,7 +10,6 @@ addFields('DiscussSidebarCategory', {
discussAsLivechat: one('Discuss', {
identifying: true,
inverse: 'categoryLivechat',
readonly: true,
}),
});
@@ -610,8 +610,6 @@ registerModel({
publicLivechatGlobalOwner: one('PublicLivechatGlobal', {
identifying: true,
inverse: 'livechatButtonView',
readonly: true,
required: true,
}),
serverUrl: attr({
compute: '_computeServerUrl',
@@ -8,8 +8,6 @@ registerModel({
fields: {
id: attr({
identifying: true,
readonly: true,
required: true,
}),
name: attr(),
},
@@ -94,8 +94,6 @@ registerModel({
publicLivechatGlobalOwner: one('PublicLivechatGlobal', {
identifying: true,
inverse: 'publicLivechat',
readonly: true,
required: true,
}),
name: attr({
compute: '_computeName',
@@ -36,8 +36,6 @@ registerModel({
publicLivechatGlobalOwner: one('PublicLivechatGlobal', {
identifying: true,
inverse: 'feedbackView',
readonly: true,
required: true,
}),
widget: attr(),
},
@@ -97,8 +97,6 @@ registerModel({
publicLivechatGlobalOwner: one('PublicLivechatGlobal', {
identifying: true,
inverse: 'notificationHandler',
readonly: true,
required: true,
}),
},
});
@@ -25,8 +25,6 @@ registerModel({
data: attr(),
id: attr({
identifying: true,
readonly: true,
required: true,
}),
legacyPublicLivechatMessage: attr(),
},
@@ -21,8 +21,6 @@ registerModel({
publicLivechatWindowOwner: one('PublicLivechatWindow', {
identifying: true,
inverse: 'publicLivechatView',
readonly: true,
required: true,
}),
widget: attr(),
},
@@ -44,8 +44,6 @@ registerModel({
livechatButtonViewOwner: one('LivechatButtonView', {
identifying: true,
inverse: 'chatWindow',
readonly: true,
required: true,
}),
publicLivechatView: one('PublicLivechatView', {
default: insertAndReplace(),
@@ -21,6 +21,7 @@ export class ModelField {
identifying = false,
inverse,
isCausal = false,
model,
readonly = false,
related,
relationType,
@@ -69,6 +70,7 @@ export class ModelField {
* relation is removed, the related record is automatically deleted.
*/
this.isCausal = isCausal;
this.model = model;
/**
* Determines whether the field is read only. Read only field
* can't be updated once the record is created.
@@ -137,6 +139,12 @@ export class ModelField {
* model name this relation refers to.
*/
this.to = to;
if (this.identifying) {
this.readonly = true;
if (model.identifyingMode === 'and') {
this.required = true;
}
}
}
/**
+13 -5
View File
@@ -506,14 +506,23 @@ export class ModelManager {
throw new Error(`Relational field "${model}/${fieldName}" has "sort" with a relation of type "${field.relationType}" but "sort" is only supported for "many".`);
}
}
// 3. Computed field.
// 3. Check for redundant attributes on identifying fields.
if (field.identifying) {
if ('readonly' in field) {
throw new Error(`Identifying field(${fieldName}) on ${model} has unnecessary "readonly" attribute (readonly is implicit for identifying fields).`);
}
if ('required' in field && model.identifyingMode === 'and') {
throw new Error(`Identifying field(${fieldName}) on ${model} has unnecessary "required" attribute (required is implicit for AND identifying fields).`);
}
}
// 4. Computed field.
if (field.compute && !(typeof field.compute === 'string')) {
throw new Error(`Property "compute" of field(${fieldName}) on ${model} must be a string (instance method name).`);
}
if (field.compute && !(model.prototype[field.compute])) {
throw new Error(`Property "compute" of field(${fieldName}) on ${model} does not refer to an instance method of this model.`);
}
// 4. Related field.
// 5. Related field.
if (field.compute && field.related) {
throw new Error(`field(${fieldName}) on ${model} cannot be a related and compute field at the same time.`);
}
@@ -624,9 +633,6 @@ export class ModelManager {
if (!field) {
throw new Error(`Identifying field "${identifyingField}" is not a field on ${model}.`);
}
if (!field.readonly) {
throw new Error(`Identifying field "${identifyingField}" on ${model} is lacking readonly.`);
}
if (field.to) {
if (field.relationType !== 'one') {
throw new Error(`Identifying field "${identifyingField}" on ${model} has a relation of type "${field.relationType}" but identifying field is only supported for "one".`);
@@ -1084,6 +1090,7 @@ export class ModelManager {
// Allows the inverse of an identifying field to be
// automatically generated.
isCausal: field.identifying,
model: this.models[field.to],
},
));
return inverseField;
@@ -1196,6 +1203,7 @@ export class ModelManager {
for (const [fieldName, fieldData] of registry.get(model.name).get('fields')) {
model.fields[fieldName] = new ModelField(Object.assign({}, fieldData, {
fieldName,
model,
}));
if (fieldData.sum) {
const [relationFieldName, contributionFieldName] = fieldData.sum.split('.');
@@ -289,8 +289,6 @@ registerModel({
icon: attr(),
id: attr({
identifying: true,
readonly: true,
required: true,
}),
isCurrentPartnerAssignee: attr({
compute: '_computeIsCurrentPartnerAssignee',
@@ -33,8 +33,6 @@ registerModel({
chatter: one('Chatter', {
identifying: true,
inverse: 'activityBoxView',
readonly: true,
required: true,
}),
isActivityListVisible: attr({
default: true,
@@ -46,8 +46,6 @@ registerModel({
irModel: one('ir.model', {
identifying: true,
inverse: 'activityGroup',
readonly: true,
required: true,
}),
overdue_count: attr({
default: 0,
@@ -79,14 +79,10 @@ registerModel({
activityGroup: one('ActivityGroup', {
identifying: true,
inverse: 'activityGroupViews',
readonly: true,
required: true,
}),
activityMenuViewOwner: one('ActivityMenuView', {
identifying: true,
inverse: 'activityGroupViews',
readonly: true,
required: true,
}),
},
});
@@ -106,8 +106,6 @@ registerModel({
popoverViewOwner: one('PopoverView', {
identifying: true,
inverse: 'activityMarkDonePopoverContentView',
readonly: true,
required: true,
}),
},
});
@@ -12,8 +12,6 @@ registerModel({
displayName: attr(),
id: attr({
identifying: true,
readonly: true,
required: true,
}),
},
});
@@ -170,14 +170,10 @@ registerModel({
activity: one('Activity', {
identifying: true,
inverse: 'activityViews',
required: true,
readonly: true,
}),
activityBoxView: one('ActivityBoxView', {
identifying: true,
inverse: 'activityViews',
readonly: true,
required: true,
}),
/**
* Determines whether the details are visible.
@@ -330,8 +330,6 @@ registerModel({
filename: attr(),
id: attr({
identifying: true,
readonly: true,
required: true,
}),
/**
* States whether this attachment is deletable.
@@ -36,8 +36,6 @@ registerModel({
chatter: one('Chatter', {
identifying: true,
inverse: 'attachmentBoxView',
readonly: true,
required: true,
}),
/**
* States the OWL component displaying this attachment box.
@@ -49,8 +49,6 @@ registerModel({
*/
attachment: one('Attachment', {
identifying: true,
readonly: true,
required: true,
}),
attachmentDeleteConfirmDialog: one('Dialog', {
inverse: 'attachmentCardOwnerAsAttachmentDeleteConfirm',
@@ -62,8 +60,6 @@ registerModel({
attachmentList: one('AttachmentList', {
identifying: true,
inverse: 'attachmentCards',
readonly: true,
required: true,
}),
hasMultipleActions: attr({
compute: '_computeHasMultipleActions',
@@ -85,8 +85,6 @@ registerModel({
dialogOwner: one('Dialog', {
identifying: true,
inverse: 'attachmentDeleteConfirmView',
readonly: true,
required: true,
}),
},
});
@@ -115,8 +115,6 @@ registerModel({
*/
attachment: one('Attachment', {
identifying: true,
readonly: true,
required: true,
}),
attachmentDeleteConfirmDialog: one('Dialog', {
inverse: 'attachmentImageOwnerAsAttachmentDeleteConfirm',
@@ -128,8 +126,6 @@ registerModel({
attachmentList: one('AttachmentList', {
identifying: true,
inverse: 'attachmentImages',
readonly: true,
required: true,
}),
/**
* Determines whether `this` should display a download button.
@@ -139,7 +139,6 @@ registerModel({
attachmentBoxViewOwner: one('AttachmentBoxView', {
identifying: true,
inverse: 'attachmentList',
readonly: true,
}),
/**
* States the attachment cards that are displaying this nonImageAttachments.
@@ -174,7 +173,6 @@ registerModel({
composerViewOwner: one('ComposerView', {
identifying: true,
inverse: 'attachmentList',
readonly: true,
}),
/**
* States the attachment that are an image.
@@ -224,7 +222,6 @@ registerModel({
messageViewOwner: one('MessageView', {
identifying: true,
inverse: 'attachmentList',
readonly: true,
}),
/**
* States the attachment that are not an image.
@@ -251,7 +251,6 @@ registerModel({
identifying: true,
inverse: 'attachmentViewer',
isCausal: true,
readonly: true,
}),
/**
* Style of the image (scale + rotation).
@@ -96,7 +96,6 @@ registerModel({
attachmentOwner: one("Attachment", {
identifying: true,
inverse: 'attachmentViewerViewable',
readonly: true,
}),
accessToken: attr({
compute: "_computeAccessToken",
@@ -89,7 +89,6 @@ registerModel({
chatWindowOwnerAsNewMessage: one('ChatWindow', {
identifying: true,
inverse: 'newMessageAutocompleteInputView',
readonly: true,
}),
component: attr(),
customClass: attr({
@@ -99,12 +98,10 @@ registerModel({
discussSidebarCategoryOwnerAsAddingItem: one('DiscussSidebarCategory', {
identifying: true,
inverse: 'addingItemAutocompleteInputView',
readonly: true,
}),
discussViewOwnerAsMobileAddItemHeader: one('DiscussView', {
identifying: true,
inverse: 'mobileAddItemHeaderAutocompleteInputView',
readonly: true,
}),
isFocusOnMount: attr({
compute: '_computeIsFocusOnMount',
@@ -117,7 +114,6 @@ registerModel({
messagingMenuOwnerAsMobileNewMessageInput: one('MessagingMenu', {
identifying: true,
inverse: 'mobileNewMessageAutocompleteInputView',
readonly: true,
}),
placeholder: attr({
compute: '_computePlaceholder',
@@ -151,8 +151,6 @@ registerModel({
callMainView: one('CallMainView', {
identifying: true,
inverse: 'callActionListView',
readonly: true,
required: true,
}),
callView: one('CallView', {
related: 'callMainView.callView',
@@ -175,7 +175,6 @@ registerModel({
welcomeView: one('WelcomeView', {
identifying: true,
inverse: 'callDemoView',
readonly: true,
}),
},
});
@@ -36,8 +36,6 @@ registerModel({
thread: one('Thread', {
identifying: true,
inverse: 'callInviteRequestPopup',
readonly: true,
required: true,
}),
},
});
@@ -164,8 +164,6 @@ registerModel({
callView: one('CallView', {
identifying: true,
inverse: 'callMainView',
required: true,
readonly: true,
}),
channel: one('Thread', {
related: 'callView.channel',
@@ -10,13 +10,9 @@ registerModel({
callMainViewOwner: one('CallMainView', {
identifying: true,
inverse: 'mainTiles',
readonly: true,
required: true,
}),
channelMember: one('ChannelMember', {
identifying: true,
readonly: true,
required: true,
}),
participantCard: one('CallParticipantCard', {
default: insertAndReplace(),
@@ -68,8 +68,6 @@ registerModel({
callActionListView: one('CallActionListView', {
identifying: true,
inverse: 'callOptionMenu',
readonly: true,
required: true,
}),
callView: one('CallView', {
related: 'callActionListView.callView',
@@ -170,7 +170,6 @@ registerModel({
mainViewTileOwner: one('CallMainViewTile', {
identifying: true,
inverse: 'participantCard',
readonly: true,
}),
/**
* Determines if this card has to be displayed in a minimized form.
@@ -206,7 +205,6 @@ registerModel({
sidebarViewTileOwner: one('CallSidebarViewTile', {
identifying: true,
inverse: 'participantCard',
readonly: true,
}),
callParticipantVideoView: one('CallParticipantVideoView', {
compute: '_computeCallParticipantVideoView',
@@ -39,8 +39,6 @@ registerModel({
callParticipantCardOwner: one('CallParticipantCard', {
identifying: true,
inverse: 'callParticipantVideoView',
readonly: true,
required: true,
}),
rtcSession: one('RtcSession', {
compute: '_computeRtcSession',
@@ -84,7 +84,6 @@ registerModel({
userSetting: one('UserSetting', {
identifying: true,
inverse: 'callSettingsMenu',
readonly: true,
}),
},
});
@@ -19,8 +19,6 @@ registerModel({
callView: one('CallView', {
identifying: true,
inverse: 'callSidebarView',
readonly: true,
required: true,
}),
sidebarTiles: many('CallSidebarViewTile', {
compute: '_computeSidebarTiles',
@@ -10,13 +10,9 @@ registerModel({
callSidebarViewOwner: one('CallSidebarView', {
identifying: true,
inverse: 'sidebarTiles',
readonly: true,
required: true,
}),
channelMember: one('ChannelMember', {
identifying: true,
readonly: true,
required: true,
}),
participantCard: one('CallParticipantCard', {
default: insertAndReplace(),
@@ -31,8 +31,6 @@ registerModel({
rtc: one('Rtc', {
identifying: true,
inverse: 'callSystrayMenu',
readonly: true,
required: true,
}),
},
});
@@ -230,8 +230,6 @@ registerModel({
threadView: one('ThreadView', {
identifying: true,
inverse: 'callView',
readonly: true,
required: true,
}),
},
onChanges: [
@@ -71,8 +71,6 @@ registerModel({
fields: {
id: attr({
identifying: true,
readonly: true,
required: true,
}),
/**
* The keyword to use a specific canned response.
-2
View File
@@ -92,8 +92,6 @@ registerModel({
channel_type: attr(),
id: attr({
identifying: true,
readonly: true,
required: true,
}),
memberCount: attr({
related: 'thread.memberCount',
@@ -128,8 +128,6 @@ registerModel({
*/
name: attr({
identifying: true,
readonly: true,
required: true,
}),
suggestable: one('ComposerSuggestable', {
default: insertAndReplace(),
@@ -238,7 +238,6 @@ registerModel({
chatWindow: one('ChatWindow', {
identifying: true,
inverse: 'channelInvitationForm',
readonly: true,
}),
/**
* States the OWL component of this channel invitation form.
@@ -275,7 +274,6 @@ registerModel({
identifying: true,
inverse: 'channelInvitationForm',
isCausal: true,
readonly: true,
}),
/**
* States the OWL ref of the "search" input of this channel invitation
@@ -19,14 +19,10 @@ registerModel({
channelInvitationFormOwner: one('ChannelInvitationForm', {
identifying: true,
inverse: 'selectablePartnerViews',
readonly: true,
required: true,
}),
partner: one('Partner', {
identifying: true,
inverse: 'channelInvitationFormSelectablePartnerViews',
readonly: true,
required: true,
}),
personaImStatusIconView: one('PersonaImStatusIconView', {
compute: '_computePersonaImStatusIconView',
@@ -9,14 +9,10 @@ registerModel({
channelInvitationFormOwner: one('ChannelInvitationForm', {
identifying: true,
inverse: 'selectedPartnerViews',
readonly: true,
required: true,
}),
partner: one('Partner', {
identifying: true,
inverse: 'channelInvitationFormSelectedPartnerViews',
readonly: true,
required: true,
}),
},
});
@@ -81,8 +81,6 @@ registerModel({
}),
id: attr({
identifying: true,
readonly: true,
required: true,
}),
isStreaming: attr({
compute: '_computeIsStreaming',
@@ -79,12 +79,10 @@ registerModel({
channelMemberListViewOwnerAsOffline: one('ChannelMemberListView', {
identifying: true,
inverse: 'offlineCategoryView',
readonly: true,
}),
channelMemberListViewOwnerAsOnline: one('ChannelMemberListView', {
identifying: true,
inverse: 'onlineCategoryView',
readonly: true,
}),
channelMemberViews: many('ChannelMemberView', {
compute: '_computeChannelMemberViews',
@@ -61,7 +61,6 @@ registerModel({
chatWindowOwner: one('ChatWindow', {
identifying: true,
inverse: 'channelMemberListView',
readonly: true,
}),
offlineCategoryView: one('ChannelMemberListCategoryView', {
compute: '_computeOfflineCategoryView',
@@ -76,7 +75,6 @@ registerModel({
threadViewOwner: one('ThreadView', {
identifying: true,
inverse: 'channelMemberListView',
readonly: true,
}),
},
});
@@ -48,14 +48,10 @@ registerModel({
channelMemberListCategoryViewOwner: one('ChannelMemberListCategoryView', {
identifying: true,
inverse: 'channelMemberViews',
readonly: true,
required: true,
}),
channelMember: one('ChannelMember', {
identifying: true,
inverse: 'channelMemberViews',
readonly: true,
required: true,
}),
hasOpenChat: attr({
compute: '_computeHasOpenChat',
@@ -660,7 +660,6 @@ registerModel({
managerAsNewMessage: one('ChatWindowManager', {
identifying: true,
inverse: 'newMessageChatWindow',
readonly: true,
}),
name: attr({
compute: '_computeName',
@@ -684,7 +683,6 @@ registerModel({
thread: one('Thread', {
identifying: true,
inverse: 'chatWindow',
readonly: true,
}),
/**
* States the `ThreadView` displaying `this.thread`.
@@ -29,8 +29,6 @@ registerModel({
chatWindowOwner: one('ChatWindow', {
identifying: true,
inverse: 'chatWindowHeaderView',
readonly: true,
required: true,
}),
},
});
-2
View File
@@ -439,8 +439,6 @@ registerModel({
*/
id: attr({
identifying: true,
readonly: true,
required: true,
}),
/**
* Determiners whether the attachment box is visible initially.
@@ -42,8 +42,6 @@ registerModel({
chatter: one('Chatter', {
identifying: true,
inverse: 'topbar',
readonly: true,
required: true,
}),
},
});
-2
View File
@@ -62,8 +62,6 @@ registerModel({
*/
frequency: attr({
identifying: true,
readonly: true,
required: true,
}),
tickInterval: attr({
compute: '_computeTickInterval',
@@ -13,7 +13,6 @@ registerModel({
activityViewOwner: one('ActivityView', {
identifying: true,
inverse: 'clockWatcher',
readonly: true,
}),
clock: one('Clock', {
inverse: 'watchers',
@@ -22,7 +21,6 @@ registerModel({
messageViewOwner: one('MessageView', {
identifying: true,
inverse: 'clockWatcher',
readonly: true,
}),
},
});
@@ -187,7 +187,6 @@ registerModel({
messageViewInEditing: one('MessageView', {
identifying: true,
inverse: 'composerForEditing',
readonly: true,
}),
/**
* Placeholder displayed in the composer textarea when it's empty
@@ -221,7 +220,6 @@ registerModel({
thread: one('Thread', {
identifying: true,
inverse: 'composer',
readonly: true,
}),
},
});
@@ -10,12 +10,10 @@ registerModel({
cannedResponse: one('CannedResponse', {
identifying: true,
inverse: 'suggestable',
readonly: true,
}),
channelCommand: one('ChannelCommand', {
identifying: true,
inverse: 'suggestable',
readonly: true,
}),
composerSuggestionListViewExtraComposerSuggestionViewItems: many('ComposerSuggestionListViewExtraComposerSuggestionViewItem', {
inverse: 'suggestable',
@@ -28,12 +26,10 @@ registerModel({
partner: one('Partner', {
identifying: true,
inverse: 'suggestable',
readonly: true,
}),
thread: one('Thread', {
identifying: true,
inverse: 'suggestable',
readonly: true,
}),
},
});
@@ -64,8 +64,6 @@ registerModel({
composerViewOwner: one('ComposerView', {
identifying: true,
inverse: 'composerSuggestedRecipientListView',
readonly: true,
required: true,
}),
hasShowMoreButton: attr({
default: false,
@@ -9,14 +9,10 @@ registerModel({
composerSuggestedRecipientListViewOwner: one('ComposerSuggestedRecipientListView', {
identifying: true,
inverse: 'composerSuggestedRecipientViews',
readonly: true,
required: true,
}),
suggestedRecipientInfo: one('SuggestedRecipientInfo', {
identifying: true,
inverse: 'composerSuggestedRecipientViews',
readonly: true,
required: true,
}),
},
});
@@ -121,8 +121,6 @@ registerModel({
composerViewOwner: one('ComposerView', {
identifying: true,
inverse: 'composerSuggestionListView',
readonly: true,
required: true,
}),
/**
* Determines whether the currently active suggestion should be scrolled
@@ -15,8 +15,6 @@ registerModel({
composerSuggestionListViewOwner: one('ComposerSuggestionListView', {
identifying: true,
inverse: 'composerSuggestionListViewExtraComposerSuggestionViewItems',
readonly: true,
required: true,
}),
composerSuggestionView: one('ComposerSuggestionView', {
default: insertAndReplace(),
@@ -28,8 +26,6 @@ registerModel({
suggestable: one('ComposerSuggestable', {
identifying: true,
inverse: 'composerSuggestionListViewExtraComposerSuggestionViewItems',
readonly: true,
required: true,
}),
},
});
@@ -15,8 +15,6 @@ registerModel({
composerSuggestionListViewOwner: one('ComposerSuggestionListView', {
identifying: true,
inverse: 'composerSuggestionListViewMainComposerSuggestionViewItems',
readonly: true,
required: true,
}),
composerSuggestionView: one('ComposerSuggestionView', {
default: insertAndReplace(),
@@ -28,8 +26,6 @@ registerModel({
suggestable: one('ComposerSuggestable', {
identifying: true,
inverse: 'composerSuggestionListViewMainComposerSuggestionViewItems',
readonly: true,
required: true,
}),
},
});
@@ -117,12 +117,10 @@ registerModel({
composerSuggestionListViewExtraComposerSuggestionViewItemOwner: one('ComposerSuggestionListViewExtraComposerSuggestionViewItem', {
identifying: true,
inverse: 'composerSuggestionView',
readonly: true,
}),
composerSuggestionListViewMainComposerSuggestionViewItemOwner: one('ComposerSuggestionListViewMainComposerSuggestionViewItem', {
identifying: true,
inverse: 'composerSuggestionView',
readonly: true,
}),
/**
* The text that identifies this suggestion in a mention.
@@ -1379,7 +1379,6 @@ registerModel({
chatter: one('Chatter', {
identifying: true,
inverse: 'composerView',
readonly: true,
}),
/**
* States the OWL component of this composer view.
@@ -1545,7 +1544,6 @@ registerModel({
messageViewInEditing: one('MessageView', {
identifying: true,
inverse: 'composerViewInEditing',
readonly: true,
}),
/**
* This is the invisible textarea used to compute the composer height
@@ -1613,7 +1611,6 @@ registerModel({
threadView: one('ThreadView', {
identifying: true,
inverse: 'composerView',
readonly: true,
}),
useDragVisibleDropZone: one('UseDragVisibleDropZone', {
default: insertAndReplace(),
-2
View File
@@ -25,8 +25,6 @@ registerModel({
}),
id: attr({
identifying: true,
readonly: true,
required: true,
}),
name: attr(),
},
@@ -45,8 +45,6 @@ registerModel({
dialogOwner: one('Dialog', {
identifying: true,
inverse: 'deleteMessageConfirmView',
readonly: true,
required: true,
}),
message: one('Message', {
compute: '_computeMessage',
-5
View File
@@ -184,7 +184,6 @@ registerModel({
attachmentCardOwnerAsAttachmentDeleteConfirm: one('AttachmentCard', {
identifying: true,
inverse: 'attachmentDeleteConfirmDialog',
readonly: true,
}),
attachmentDeleteConfirmView: one('AttachmentDeleteConfirmView', {
compute: '_computeAttachmentDeleteConfirmView',
@@ -194,12 +193,10 @@ registerModel({
attachmentImageOwnerAsAttachmentDeleteConfirm: one('AttachmentImage', {
identifying: true,
inverse: 'attachmentDeleteConfirmDialog',
readonly: true,
}),
attachmentListOwnerAsAttachmentView: one('AttachmentList', {
identifying: true,
inverse: 'attachmentListViewDialog',
readonly: true,
}),
attachmentViewer: one('AttachmentViewer', {
compute: '_computeAttachmentViewer',
@@ -224,7 +221,6 @@ registerModel({
followerOwnerAsSubtypeList: one('Follower', {
identifying: true,
inverse: 'followerSubtypeListDialog',
readonly: true,
}),
followerSubtypeList: one('FollowerSubtypeList', {
compute: '_computeFollowerSubtypeList',
@@ -243,7 +239,6 @@ registerModel({
messageActionListOwnerAsDeleteConfirm: one('MessageActionList', {
identifying: true,
inverse: 'deleteConfirmDialog',
readonly: true,
}),
/**
* Content of dialog that is directly linked to a record that models
@@ -379,12 +379,10 @@ registerModel({
discussAsChannel: one('Discuss', {
identifying: true,
inverse: 'categoryChannel',
readonly: true,
}),
discussAsChat: one('Discuss', {
identifying: true,
inverse: 'categoryChat',
readonly: true,
}),
/**
* Determines the filtered and sorted discuss sidebar category items
@@ -227,8 +227,6 @@ registerModel({
category: one('DiscussSidebarCategory', {
identifying: true,
inverse: 'categoryItems',
readonly: true,
required: true,
}),
/**
* Determines the contribution of this discuss sidebar category item to
@@ -290,8 +288,6 @@ registerModel({
thread: one('Thread', {
identifying: true,
inverse: 'discussSidebarCategoryItem',
readonly: true,
required: true,
}),
},
});
@@ -29,17 +29,14 @@ registerModel({
discussViewOwnerAsHistory: one('DiscussView', {
identifying: true,
inverse: 'historyView',
readonly: true,
}),
discussViewOwnerAsInbox: one('DiscussView', {
identifying: true,
inverse: 'inboxView',
readonly: true,
}),
discussViewOwnerAsStarred: one('DiscussView', {
identifying: true,
inverse: 'starredView',
readonly: true,
}),
mailbox: one('Mailbox', {
compute: '_computeMailbox',
@@ -137,8 +137,6 @@ registerModel({
discuss: one('Discuss', {
identifying: true,
inverse: 'discussView',
readonly: true,
required: true,
}),
historyView: one('DiscussSidebarMailboxView', {
default: insertAndReplace(),
@@ -96,12 +96,10 @@ registerModel({
chatterOwner: one('Chatter', {
identifying: true,
inverse: 'dropZoneView',
readonly: true,
}),
composerViewOwner: one('ComposerView', {
identifying: true,
inverse: 'dropZoneView',
readonly: true,
}),
/**
* Counts how many drag enter/leave happened on self and children. This
-2
View File
@@ -37,8 +37,6 @@ registerModel({
}),
unicode: attr({
identifying: true,
readonly: true,
required: true,
}),
},
});
@@ -11,8 +11,6 @@ registerModel({
}),
categoryName: attr({
identifying: true,
readonly: true,
required: true,
}),
emojiCategoryViews: many('EmojiCategoryView', {
inverse: 'emojiCategory',
@@ -59,8 +59,6 @@ registerModel({
emojiPickerViewOwner: one('EmojiPickerView', {
identifying: true,
inverse: 'emojiCategoryBarView',
readonly: true,
required: true,
}),
},
});
@@ -29,14 +29,10 @@ registerModel({
emojiCategory: one('EmojiCategory', {
identifying: true,
inverse: 'emojiCategoryViews',
readonly: true,
required: true,
}),
emojiCategoryBarViewOwner: one('EmojiCategoryBarView', {
identifying: true,
inverse: 'emojiCategoryViews',
readonly: true,
required: true,
}),
emojiCategoryBarViewOwnerAsActiveByUser: one('EmojiCategoryBarView', {
inverse: 'activeByUserCategoryView',
@@ -26,8 +26,6 @@ registerModel({
emojiPickerViewOwner: one('EmojiPickerView', {
identifying: true,
inverse: 'emojiGridView',
readonly: true,
required: true,
}),
emojiViews: many('EmojiView', {
compute: '_computeEmojiViews',
@@ -24,8 +24,6 @@ registerModel({
popoverViewOwner: one('PopoverView', {
identifying: true,
inverse: 'emojiPickerView',
readonly: true,
required: true,
}),
},
});
@@ -36,14 +36,10 @@ registerModel({
emoji: one('Emoji', {
identifying: true,
inverse: 'emojiViews',
readonly: true,
required: true,
}),
emojiGridView: one('EmojiGridView', {
identifying: true,
inverse: 'emojiViews',
readonly: true,
required: true,
}),
isHovered: attr({
default: false,
@@ -190,22 +190,18 @@ registerModel({
activityView: one('ActivityView', {
identifying: true,
inverse: 'fileUploader',
readonly: true,
}),
attachmentBoxView: one('AttachmentBoxView', {
identifying: true,
inverse: 'fileUploader',
readonly: true,
}),
chatterOwner: one('Chatter', {
identifying: true,
inverse: 'fileUploader',
readonly: true,
}),
composerView: one('ComposerView', {
identifying: true,
inverse: 'fileUploader',
readonly: true,
}),
fileInput: attr({
compute: '_computeFileInput',
@@ -65,7 +65,6 @@ registerModel({
chatterOwner: one('Chatter', {
identifying: true,
inverse: 'followButtonView',
readonly: true,
}),
isDisabled: attr({
compute: '_computeIsDisabled',
@@ -184,8 +184,6 @@ registerModel({
}),
id: attr({
identifying: true,
readonly: true,
required: true,
}),
isActive: attr({
default: true,
@@ -49,7 +49,6 @@ registerModel({
chatterOwner: one('Chatter', {
identifying: true,
inverse: 'followerListMenuView',
readonly: true,
}),
followerViews: many('FollowerView', {
compute: '_computeFollowerViews',
@@ -43,8 +43,6 @@ registerModel({
}),
id: attr({
identifying: true,
readonly: true,
required: true,
}),
isDefault: attr({
default: false,
@@ -70,7 +70,6 @@ registerModel({
identifying: true,
inverse: 'followerSubtypeList',
isCausal: true,
readonly: true,
}),
follower: one('Follower', {
related: 'dialogOwner.followerOwnerAsSubtypeList',
@@ -26,14 +26,10 @@ registerModel({
followerSubtypeListOwner: one('FollowerSubtypeList', {
identifying: true,
inverse: 'followerSubtypeViews',
readonly: true,
required: true,
}),
subtype: one('FollowerSubtype', {
identifying: true,
inverse: 'followerSubtypeViews',
readonly: true,
required: true,
}),
},
});
@@ -39,14 +39,10 @@ registerModel({
follower: one('Follower', {
identifying: true,
inverse: 'followerViews',
readonly: true,
required: true,
}),
followerListMenuViewOwner: one('FollowerListMenuView', {
identifying: true,
inverse: 'followerViews',
readonly: true,
required: true,
}),
},
});
-2
View File
@@ -47,8 +47,6 @@ registerModel({
}),
id: attr({
identifying: true,
required: true,
readonly: true,
}),
im_status: attr(),
isOnline: attr({
@@ -28,8 +28,6 @@ registerModel({
iconUrl: attr(),
id: attr({
identifying: true,
required: true,
readonly: true,
}),
model: attr({
required: true,
@@ -50,8 +50,6 @@ registerModel({
}),
id: attr({
identifying: true,
readonly: true,
required: true,
}),
name: attr(),
},
@@ -27,13 +27,9 @@ registerModel({
activityViewOwner: one('ActivityView', {
identifying: true,
inverse: 'mailTemplateViews',
readonly: true,
required: true,
}),
mailTemplate: one('MailTemplate', {
identifying: true,
readonly: true,
required: true,
}),
},
});
-3
View File
@@ -118,17 +118,14 @@ registerModel({
messagingAsHistory: one('Messaging', {
identifying: true,
inverse: 'history',
readonly: true,
}),
messagingAsInbox: one('Messaging', {
identifying: true,
inverse: 'inbox',
readonly: true,
}),
messagingAsStarred: one('Messaging', {
identifying: true,
inverse: 'starred',
readonly: true,
}),
name: attr({
compute: '_computeName',
-2
View File
@@ -690,8 +690,6 @@ registerModel({
}),
id: attr({
identifying: true,
readonly: true,
required: true,
}),
isCurrentUserOrGuestAuthor: attr({
compute: '_computeIsCurrentUserOrGuestAuthor',
@@ -187,8 +187,6 @@ registerModel({
messageView: one('MessageView', {
identifying: true,
inverse: 'messageActionList',
readonly: true,
required: true,
}),
/**
* Determines the reaction popover that is active on this message action list.
@@ -45,12 +45,10 @@ registerModel({
threadNeedactionPreviewViewOwner: one('ThreadNeedactionPreviewView', {
identifying: true,
inverse: 'messageAuthorPrefixView',
readonly: true,
}),
threadPreviewViewOwner: one('ThreadPreviewView', {
identifying: true,
inverse: 'messageAuthorPrefixView',
readonly: true,
}),
},
});

Some files were not shown because too many files have changed in this diff Show More