Esempio n. 1
0
def set_preference(request):
    code = 1
    message = ''
    new_preferences = request.POST

    preferences = json.decode(request.user.profile.preferences)
    for preference_name, preference_value in list(new_preferences.items()):
        if preference_value in ['true', 'false']:
            preference_value = True if preference_value == 'true' else False
        if preference_name in SINGLE_FIELD_PREFS:
            setattr(request.user.profile, preference_name, preference_value)
        elif preference_name in INTEGER_FIELD_PREFS:
            if preference_name == "days_of_unread" and int(
                    preference_value) != request.user.profile.days_of_unread:
                UserSubscription.all_subs_needs_unread_recalc(request.user.pk)
            setattr(request.user.profile, preference_name,
                    int(preference_value))
            if preference_name in preferences:
                del preferences[preference_name]
        elif preference_name in SPECIAL_PREFERENCES:
            if preference_name == 'autofollow_friends':
                social_services = MSocialServices.get_user(request.user.pk)
                social_services.autofollow = preference_value
                social_services.save()
            elif preference_name == 'dashboard_date':
                request.user.profile.dashboard_date = datetime.datetime.utcnow(
                )
        else:
            if preference_value in ["true", "false"]:
                preference_value = True if preference_value == "true" else False
            preferences[preference_name] = preference_value
        if preference_name == 'intro_page':
            logging.user(
                request,
                "~FBAdvancing intro to page ~FM~SB%s" % preference_value)

    request.user.profile.preferences = json.encode(preferences)
    request.user.profile.save()

    logging.user(request, "~FMSaving preference: %s" % new_preferences)
    response = dict(code=code,
                    message=message,
                    new_preferences=new_preferences)
    return response