   User.findOrInsert authorId, accessToken, (err, author) ->
     return callback err if err
     publishing = (input.published and not article.published) || (input.scheduled_publish_at and not article.published)
-    article = _.extend article, input, updated_at: new Date
+    article = _.extend article, _.omit(input, 'sections'), updated_at: new Date
+    article.sections = [] unless input.sections?.length
     article.author = User.denormalizedForArticle author if author
     cb null, article, author, publishing
 

      slug: artwork.get('artist').id

getPartnerName = (artwork) ->
  if artwork.get('collection_institution')?.length > 0
    artwork.get('collecting_institution')
  else if artwork.get('partner')
    artwork.get('partner').name

    cb(null, article)

@generateArtworks = (input, article, accessToken, cb) ->
  article.sections = input.sections
  return cb(null, article) unless _.some input.sections, type: 'artworks'
  # Try to fetch and denormalize the artworks from Gravity asynchonously
  artworkIds = _.pluck (_.where input.sections, type: 'artworks' ), 'ids'
  Q.allSettled( for artworkId in _.flatten artworkIds
    requestBluebird
      .get("#{ARTSY_URL}/api/v1/artwork/#{artworkId}")
      .set('X-Xapp-Token': accessToken)
  ).done (responses) =>
    fetchedArtworks = _.map responses, (res) ->
      res.value?.body
    newSections = []
    for section in cloneDeep input.sections
      if section.type is 'artworks'
        section.artworks = []
        for artworkId in section.ids
          artwork = _.findWhere fetchedArtworks, _id: artworkId
          if artwork
            section.artworks.push denormalizedArtworkData artwork
          else
            section.ids = _.without section.ids, artworkId
        # Section shouldn't be added if there are no artworks
        section = {} if section.artworks.length is 0
      newSections.push section unless _.isEmpty section
    article.sections = newSections
    cb(null, article)

denormalizedArtworkData = (artwork) ->
  Artwork = Backbone.Model.extend ArtworkHelpers
  artwork = new Artwork artwork
  denormalizedArtwork =
    id: artwork.get('_id')
