Refactor change description field serialization

Review Request #7766 — Created Nov. 12, 2015 and submitted

Information

Review Board
release-2.0.x

Reviewers

Change description serialization has been refactored into three
methods:

  • serialization of lists of models,
  • serialization of lists of plain old data, and
  • serialization of singletons (which are stored as a list with a single
    element in the ChangeDescription's fields_fields field).

This allows for code de-duplication and consolidation for the
BaseReviewRequestField and BaseCommaEditableField. The logic for
serialization has also been corrected to only attempt to serialize
added and removed entries when they exist.

The serialization of lists of models has also been corrected.
Previously, there were no BaseReviewRequestField instances that
serialized lists of models. If there were, they would have thrown an
exception because the default implementation attempted to serialize
them from a tuple not wrapped within a list.

  • Ran unit tests.
  • Used this with an upcoming change; it worked correctly.
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/reviews/fields.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/reviews/fields.py
    
    
  2. 
      
brennie
david
  1. Ship It!
  2. 
      
brennie
Review request changed
Status:
Completed
Change Summary:
Pushed to release-2.0.x (11feecb)