old_contents: from django.conf import settings
  from django.db.models import signals
  
  import badger
  from badger.models import Badge, Award, Progress
  
  
  def update_badges(badge_data, overwrite=False):
      """Creates or updates list of badges
  
      :arg badge_data: list of dicts. keys in the dict correspond to the
          Badge model class. Also, you can pass in ``prerequisites``.
      :arg overwrite: whether or not to overwrite the existing badge
  
      :returns: list of Badge instances---one per dict passed in
  
      """
      badges = []
      for data in badge_data:
          badges.append(update_badge(data, overwrite=overwrite))
      return badges
  
  
  def update_badge(data_in, overwrite=False):
      # Clone the data, because we might delete fields
      data = dict(**data_in)
  
      # If there are prerequisites, ensure they're real badges and remove
      # from the set of data fields.
      if 'prerequisites' not in data:
          prerequisites = None
      else:
          prerequisites = [get_badge(n)
              for n in data.get('prerequisites', [])]
          del data['prerequisites']
  
      badge, created = Badge.objects.get_or_create(title=data['title'],
                                                   defaults=data)
  
      # If overwriting, and not just created, then save with current fields.
      if overwrite and not created:
          badge.save(**data)
  
      # Set prerequisites if overwriting, or badge is newly created.
      if (overwrite or created) and prerequisites:
          badge.prerequisites.clear()
          badge.prerequisites.add(*prerequisites)
  
      return badge
  
  
  def get_badge(slug_or_badge):
      """Return badge specified by slug or by instance
  
      :arg slug_or_badge: slug or Badge instance
  
      :returns: Badge instance
  
      """
      if isinstance(slug_or_badge, Badge):
          b = slug_or_badge
      else:
          b = Badge.objects.get(slug=slug_or_badge)
      return b
  
  
  def award_badge(slug_or_badge, awardee, awarder=None):
      """Award a badge to an awardee, with optional awarder
  
      :arg slug_or_badge: slug or Badge instance to award
      :arg awardee: User this Badge is awarded to
      :arg awarder: User who awarded this Badge
  
      :returns: Award instance
  
      :raise BadgeAwardNotAllowedexception: ?
  
      :raise BadgeAlreadyAwardedException: if the badge is unique and
          has already been awarded to this user
  
      """
      b = get_badge(slug_or_badge)
      return b.award_to(awardee=awardee, awarder=awarder)
  
  
  def get_progress(slug_or_badge, user):
      """Get a progress record for a badge and awardee
  
      :arg slug_or_badge: slug or Badge instance
      :arg user: User to check progress for
  
      :returns: Progress instance
  
      """
      b = get_badge(slug_or_badge)
      return b.progress_for(user)
  
new_contents: from django.conf import settings
  from django.db.models import signals
  
  import badger
  from badger.models import Badge, Award, Progress
  
  
  def update_badges(badge_data, overwrite=False):
      """Creates or updates list of badges
  
      :arg badge_data: list of dicts. keys in the dict correspond to the
          Badge model class. Also, you can pass in ``prerequisites``.
      :arg overwrite: whether or not to overwrite the existing badge
  
      :returns: list of Badge instances---one per dict passed in
  
      """
      badges = []
      for data in badge_data:
          badges.append(update_badge(data, overwrite=overwrite))
      return badges
  
  
  def update_badge(data_in, overwrite=False):
      # Clone the data, because we might delete fields
      data = dict(**data_in)
  
      # If there are prerequisites, ensure they're real badges and remove
      # from the set of data fields.
      if 'prerequisites' not in data:
          prerequisites = None
      else:
          prerequisites = [get_badge(n)
              for n in data.get('prerequisites', [])]
          del data['prerequisites']
  
      badge, created = Badge.objects.get_or_create(title=data['title'],
                                                   defaults=data)
  
      # If overwriting, and not just created, then save with current fields.
      if overwrite and not created:
          for k, v in data.items():
              setattr(badge, k, v)
          badge.save()
  
      # Set prerequisites if overwriting, or badge is newly created.
      if (overwrite or created) and prerequisites:
          badge.prerequisites.clear()
          badge.prerequisites.add(*prerequisites)
  
      return badge
  
  
  def get_badge(slug_or_badge):
      """Return badge specified by slug or by instance
  
      :arg slug_or_badge: slug or Badge instance
  
      :returns: Badge instance
  
      """
      if isinstance(slug_or_badge, Badge):
          b = slug_or_badge
      else:
          b = Badge.objects.get(slug=slug_or_badge)
      return b
  
  
  def award_badge(slug_or_badge, awardee, awarder=None):
      """Award a badge to an awardee, with optional awarder
  
      :arg slug_or_badge: slug or Badge instance to award
      :arg awardee: User this Badge is awarded to
      :arg awarder: User who awarded this Badge
  
      :returns: Award instance
  
      :raise BadgeAwardNotAllowedexception: ?
  
      :raise BadgeAlreadyAwardedException: if the badge is unique and
          has already been awarded to this user
  
      """
      b = get_badge(slug_or_badge)
      return b.award_to(awardee=awardee, awarder=awarder)
  
  
  def get_progress(slug_or_badge, user):
      """Get a progress record for a badge and awardee
  
      :arg slug_or_badge: slug or Badge instance
      :arg user: User to check progress for
  
      :returns: Progress instance
  
      """
      b = get_badge(slug_or_badge)
      return b.progress_for(user)
  
subject: Fix update_badges misuse of model.save()