modifications as per benkraft's comments.

(I kept the counts on survey creation because it's a get_or_create)

(that update_or_create function 1.7 has looks shiny)