本文整理汇总了Python中reviewboard.changedescs.models.ChangeDescription.has_modified_fields方法的典型用法代码示例。如果您正苦于以下问题:Python ChangeDescription.has_modified_fields方法的具体用法?Python ChangeDescription.has_modified_fields怎么用?Python ChangeDescription.has_modified_fields使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类reviewboard.changedescs.models.ChangeDescription
的用法示例。
在下文中一共展示了ChangeDescription.has_modified_fields方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: ReviewRequestDraft
# 需要导入模块: from reviewboard.changedescs.models import ChangeDescription [as 别名]
# 或者: from reviewboard.changedescs.models.ChangeDescription import has_modified_fields [as 别名]
#.........这里部分代码省略.........
timestamp (datetime.datetime, optional):
The datetime that should be used for all timestamps for objects
published
(:py:class:`~reviewboard.diffviewer.models.diff_set.DiffSet`,
:py:class:`~reviewboard.changedescs.models.ChangeDescription`)
over the course of the method.
Returns:
reviewboard.changedescs.models.ChangeDescription:
The change description that results from this publish (if any).
If this is an initial publish, there will be no change description
(and this function will return ``None``).
"""
if timestamp is None:
timestamp = timezone.now()
if not review_request:
review_request = self.review_request
if not self.changedesc and review_request.public:
self.changedesc = ChangeDescription()
if not user:
if self.changedesc:
user = self.changedesc.get_user(self)
else:
user = review_request.submitter
self.copy_fields_to_request(review_request)
# If no changes were made, raise exception and do not save
if self.changedesc and not self.changedesc.has_modified_fields():
raise NotModifiedError()
if validate_fields:
if not (self.target_groups.exists() or
self.target_people.exists()):
raise PublishError(
ugettext('There must be at least one reviewer before this '
'review request can be published.'))
if not review_request.summary.strip():
raise PublishError(
ugettext('The draft must have a summary.'))
if not review_request.description.strip():
raise PublishError(
ugettext('The draft must have a description.'))
if (review_request.created_with_history and
self.diffset and
self.diffset.commit_count == 0):
raise PublishError(
ugettext('There are no commits attached to the diff.'))
if self.diffset:
if (review_request.created_with_history and not
self.diffset.is_commit_series_finalized):
raise PublishError(ugettext(
'This commit series is not finalized.'))
self.diffset.history = review_request.diffset_history
self.diffset.timestamp = timestamp
self.diffset.save(update_fields=('history', 'timestamp'))
示例2: ReviewRequestDraft
# 需要导入模块: from reviewboard.changedescs.models import ChangeDescription [as 别名]
# 或者: from reviewboard.changedescs.models.ChangeDescription import has_modified_fields [as 别名]
#.........这里部分代码省略.........
# can change, but so can captions within each screenshot.
screenshots = list(self.screenshots.all())
caption_changes = {}
for s in review_request.screenshots.all():
if s in screenshots and s.caption != s.draft_caption:
caption_changes[s.id] = {
'old': (s.caption,),
'new': (s.draft_caption,),
}
s.caption = s.draft_caption
s.save(update_fields=['caption'])
# Now scan through again and set the caption correctly for newly-added
# screenshots by copying the draft_caption over. We don't need to
# include this in the changedescs here because it's a new screenshot,
# and update_list will record the newly-added item.
for s in screenshots:
if s.caption != s.draft_caption:
s.caption = s.draft_caption
s.save(update_fields=['caption'])
if caption_changes and self.changedesc:
self.changedesc.fields_changed['screenshot_captions'] = \
caption_changes
update_list(review_request.screenshots, self.screenshots,
'screenshots', name_field="caption")
# There's no change notification required for this field.
review_request.inactive_screenshots = self.inactive_screenshots.all()
# Files are treated like screenshots. The list of files can
# change, but so can captions within each file.
files = list(self.file_attachments.all())
caption_changes = {}
for f in review_request.file_attachments.all():
if f in files and f.caption != f.draft_caption:
caption_changes[f.id] = {
'old': (f.caption,),
'new': (f.draft_caption,),
}
f.caption = f.draft_caption
f.save(update_fields=['caption'])
# Now scan through again and set the caption correctly for newly-added
# files by copying the draft_caption over. We don't need to include
# this in the changedescs here because it's a new screenshot, and
# update_list will record the newly-added item.
for f in files:
if f.caption != f.draft_caption:
f.caption = f.draft_caption
f.save(update_fields=['caption'])
if caption_changes and self.changedesc:
self.changedesc.fields_changed['file_captions'] = caption_changes
update_list(review_request.file_attachments, self.file_attachments,
'files', name_field="display_name")
# There's no change notification required for this field.
review_request.inactive_file_attachments = \
self.inactive_file_attachments.all()
if self.diffset:
self.diffset.history = review_request.diffset_history
self.diffset.save(update_fields=['history'])
# If no changes were made, raise exception and do not save
if self.changedesc and not self.changedesc.has_modified_fields():
raise NotModifiedError()
if self.changedesc:
self.changedesc.timestamp = timezone.now()
self.changedesc.rich_text = self.rich_text
self.changedesc.public = True
self.changedesc.save()
review_request.changedescs.add(self.changedesc)
review_request.rich_text = self.rich_text
review_request.save()
if send_notification:
review_request_published.send(sender=review_request.__class__,
user=user,
review_request=review_request,
changedesc=self.changedesc)
return self.changedesc
def get_review_request(self):
"""Returns the associated review request."""
return self.review_request
class Meta:
app_label = 'reviews'
ordering = ['-last_updated']
示例3: ReviewRequestDraft
# 需要导入模块: from reviewboard.changedescs.models import ChangeDescription [as 别名]
# 或者: from reviewboard.changedescs.models.ChangeDescription import has_modified_fields [as 别名]
#.........这里部分代码省略.........
For the 'screenshot_captions' field, the value will be a dictionary
of screenshot ID/dict pairs with the following fields:
* ``old``: The old value of the field
* ``new``: The new value of the field
For the ``diff`` field, there is only ever an ``added`` field,
containing the ID of the new diffset.
The ``send_notification`` parameter is intended for internal use only,
and is there to prevent duplicate notifications when being called by
ReviewRequest.publish.
"""
if not review_request:
review_request = self.review_request
if not self.changedesc and review_request.public:
self.changedesc = ChangeDescription()
if not user:
if self.changedesc:
user = self.changedesc.get_user(self)
else:
user = review_request.submitter
self.copy_fields_to_request(review_request)
if self.diffset:
self.diffset.history = review_request.diffset_history
self.diffset.save(update_fields=['history'])
# If no changes were made, raise exception and do not save
if self.changedesc and not self.changedesc.has_modified_fields():
raise NotModifiedError()
if validate_fields:
if not (self.target_groups.exists() or
self.target_people.exists()):
raise PublishError(
ugettext('There must be at least one reviewer before this '
'review request can be published.'))
if not review_request.summary.strip():
raise PublishError(
ugettext('The draft must have a summary.'))
if not review_request.description.strip():
raise PublishError(
ugettext('The draft must have a description.'))
if self.changedesc:
self.changedesc.user = user
self.changedesc.timestamp = timezone.now()
self.changedesc.public = True
self.changedesc.save()
review_request.changedescs.add(self.changedesc)
review_request.description_rich_text = self.description_rich_text
review_request.testing_done_rich_text = self.testing_done_rich_text
review_request.rich_text = self.rich_text
review_request.save()
if send_notification:
review_request_published.send(sender=review_request.__class__,
user=user,