def METHOD_NAME(self):
    user = self.request.user
    if not user.is_authenticated:
        return
    cdata = self.cleaned_data.get("area")
    all_data = ContributionAreas.get_values()
    groups_to_remove = list(set(all_data) - set(cdata))
    groups_to_add = list(set(all_data).intersection(set(cdata)))
    for group_name in groups_to_add:
        add_to_contributors(
            user, user.profile.locale, ContributionAreas._value2member_map_[group_name].name
        )
    groups = []
    groups_to_remove += settings.LEGACY_CONTRIBUTOR_GROUPS
    for group_name in groups_to_remove:
        try:
            groups.append(Group.objects.get(name=group_name))
        except Group.DoesNotExist:
            continue
    user.groups.remove(*groups)