---

- name: Get local python version
  become: false
  command: python -V
  delegate_to: localhost
  register: localhost_python
  changed_when: false

- name: Register local python version
  set_fact:
    localhost_python: >-
      {{
        localhost_python.stdout
        | regex_replace('^Python ([0-9])\\..*$', '\\1')
      }}
  changed_when: false

# TODO simplify this with filters
- name: Create user settings list
  set_fact:
    user_settings: >-
      [
        {%- for user in nextcloud_users -%}
          {%- for app_setting in user.settings -%}
            {%- if localhost_python == '2' -%}
              {%- for app, settings in app_setting.iteritems() -%}
                {%- for key, value in settings.iteritems() -%}
                  {
                    'user': "{{ user.name }}",
                    'app': "{{ app }}",
                    'key': "{{ key }}",
                    'value': "{{ value }}"
                  },
                {%- endfor -%}
              {%- endfor -%}
            {%- elif localhost_python == '3' -%}
              {%- for app, settings in app_setting.items() -%}
                {%- for key, value in settings.items() -%}
                  {
                    'user': "{{ user.name }}",
                    'app': "{{ app }}",
                    'key': "{{ key }}",
                    'value': "{{ value }}"
                  },
                {%- endfor -%}
              {%- endfor -%}
            {%- endif -%}
          {%- endfor -%}
        {%- endfor -%}
      ]

- name: Read existing config values
  command: "php occ user:setting {{ item.user }} {{ item.app }} {{ item.key }}"
  args:
    chdir: "{{ nextcloud_installation_dir }}"
  become: true
  become_user: "{{ nextcloud_file_owner }}"
  failed_when: false
  changed_when: false
  register: user_config_values
  loop: "{{ user_settings }}"

- name: Enable user settings
  command: >-
    php occ user:setting
      {{ item.0.user }}
      {{ item.0.app }}
      {{ item.0.key }}
      {{ item.0.value }}
  args:
    chdir: "{{ nextcloud_installation_dir }}"
  become: true
  become_user: "{{ nextcloud_file_owner }}"
  when: item.0.value != item.1.stdout
  loop: "{{ user_settings | zip(user_config_values.results) | list }}"