def serialize_status_field(self, obj, **kwargs): return ReviewRequest.status_to_string(obj.status)
def __init__(self, request, review_request, changedesc, collapsed, data): """Initialize the entry. Args: request (django.http.HttpRequest): The request object. review_request (reviewboard.reviews.models.ReviewRequest): The review request that the change is for. changedesc (reviewboard.changedescs.models.ChangeDescription): The change description for this entry. collapsed (bool): Whether the entry is collapsed by default. data (ReviewRequestPageData): Pre-queried data for the review request page. """ BaseReviewRequestPageEntry.__init__(self, changedesc.timestamp, collapsed) if status_updates_feature.is_enabled(request=request): StatusUpdatesEntryMixin.__init__(self) self.changedesc = changedesc self.fields_changed_groups = [] cur_field_changed_group = None # See if there was a review request status change. status_change = changedesc.fields_changed.get('status') if status_change: assert 'new' in status_change self.new_status = ReviewRequest.status_to_string( status_change['new'][0]) else: self.new_status = None # Process the list of fields, in order by fieldset. These will be # put into groups composed of inline vs. full-width field values, # for render into the box. fieldsets = get_review_request_fieldsets( include_main=True, include_change_entries_only=True) for fieldset in fieldsets: for field_cls in fieldset.field_classes: field_id = field_cls.field_id if field_id not in changedesc.fields_changed: continue inline = field_cls.change_entry_renders_inline if (not cur_field_changed_group or cur_field_changed_group['inline'] != inline): # Begin a new group of fields. cur_field_changed_group = { 'inline': inline, 'fields': [], } self.fields_changed_groups.append(cur_field_changed_group) if issubclass(field_cls, ReviewRequestPageDataMixin): field = field_cls(review_request, request=request, data=data) else: field = field_cls(review_request, request=request) cur_field_changed_group['fields'] += \ field.get_change_entry_sections_html( changedesc.fields_changed[field_id])
def __init__(self, request, review_request, changedesc, collapsed, locals_vars): """Initialize the entry. Args: request (django.http.HttpRequest): The request object. review_request (reviewboard.reviews.models.ReviewRequest): The review request that the change is for. changedesc (reviewboard.changedescs.models.ChangeDescription): The change description for this entry. collapsed (bool): Whether the entry is collapsed by default. locals_vars (dict): A dictionary of the local variables inside the review detail view. This is done because some of the fields in the change description may make use of some of the maps maintained while building the page in order to avoid adding additional queries .. seealso:: :py:data:`~reviewboard.reviews.fields.Field.locals_vars` """ super(ChangeEntry, self).__init__(changedesc.timestamp, collapsed) self.changedesc = changedesc self.fields_changed_groups = [] cur_field_changed_group = None # See if there was a review request status change. status_change = changedesc.fields_changed.get('status') if status_change: assert 'new' in status_change self.new_status = ReviewRequest.status_to_string( status_change['new'][0]) else: self.new_status = None # Process the list of fields, in order by fieldset. These will be # put into groups composed of inline vs. full-width field values, # for render into the box. fieldsets = get_review_request_fieldsets( include_main=True, include_change_entries_only=True) for fieldset in fieldsets: for field_cls in fieldset.field_classes: field_id = field_cls.field_id if field_id not in changedesc.fields_changed: continue inline = field_cls.change_entry_renders_inline if (not cur_field_changed_group or cur_field_changed_group['inline'] != inline): # Begin a new group of fields. cur_field_changed_group = { 'inline': inline, 'fields': [], } self.fields_changed_groups.append(cur_field_changed_group) if hasattr(field_cls, 'locals_vars'): field = field_cls(review_request, request=request, locals_vars=locals_vars) else: field = field_cls(review_request, request=request) cur_field_changed_group['fields'] += \ field.get_change_entry_sections_html( changedesc.fields_changed[field_id])