<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>53884</bug_id>
          
          <creation_ts>2025-04-17 17:22:29 +0300</creation_ts>
          <short_desc>Не работает замена папок</short_desc>
          <delta_ts>2025-12-02 14:59:39 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>gpupdate</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=45645</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vladislav Glinkin">glinkinvd</reporter>
          <assigned_to name="Valery Sinelnikov">greh</assigned_to>
          <cc>greh</cc>
    
    <cc>kotjuhovma</cc>
    
    <cc>nir</cc>
    
    <cc>sin</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>263144</commentid>
    <comment_count>0</comment_count>
    <who name="Vladislav Glinkin">glinkinvd</who>
    <bug_when>2025-04-17 17:22:29 +0300</bug_when>
    <thetext>Версия пакета: gpupdate-0.13.2-alt1

Шаги воспроизведения:
1. Компьютер -&gt; Административные шаблоны -&gt; Система ALT -&gt; Групповые политики -&gt; Экспериментальные групповые политики -&gt; Включено
2. Компьютер -&gt; Административные шаблоны -&gt; Система ALT -&gt; Групповые политики -&gt; Механизмы GPUpdate:
-   Управление локальными каталогами -&gt; Включено
-   Управление локальными каталогами для пользователей -&gt; Включено
3. Открыть раздел Компьютер - Настройки - Настройки системы - Папки
4. Создать папку и запустить gpupdate на клиентской машине
5. Изменить ранее созданную папку в GPUI: поменять путь и выбрать &quot;Действие -&gt; Изменить&quot;

Фактический результат:
Предыдущая папка сохраняется, создаётся новая.

Ожидаемый результат:
Предыдущая папка удаляется, создаётся новая.

Дополнительно:
Аналогично https://bugzilla.altlinux.org/47645, причина в том, что работаем с FOLDERS.XML, которое не сохраняет предыдущее значение.

gpoa/frontend/appliers/folder.py:
    def act(self):
        if self.hidden_folder == True and str(self.folder_path.name)[0] != &apos;.&apos;:
            path_components = list(self.folder_path.parts)
            path_components[-1] = &apos;.&apos; + path_components[-1]
            new_folder_path = Path(*path_components)
            self.folder_path = new_folder_path
        if self.action == FileAction.CREATE:
            self._create_action()
        if self.action == FileAction.UPDATE:
            self._create_action()
        if self.action == FileAction.DELETE:
            self._delete_action()
        if self.action == FileAction.REPLACE:
            self._delete_action()
            self._create_action()

    def _delete_action(self):
        if self.folder_path.exists():
            if self.action == FileAction.REPLACE:
                self.delete_folder = True
            remove_dir_tree(self.folder_path,
                self.delete_files,
                self.delete_folder,
                self.delete_sub_folders)

gpoa/gpt/folders.py:
def read_folders(folders_file):
    folders = list()

    for fld in get_xml_root(folders_file):
        props = fld.find(&apos;Properties&apos;)
        path = props.get(&apos;path&apos;)
        action = props.get(&apos;action&apos;, default=&apos;C&apos;)
        fld_obj = folderentry(path, action)
        fld_obj.set_delete_folder(folder_int2bool(props.get(&apos;deleteFolder&apos;, default=1)))
        fld_obj.set_delete_sub_folders(folder_int2bool(props.get(&apos;deleteSubFolders&apos;, default=1)))
        fld_obj.set_delete_files(folder_int2bool(props.get(&apos;deleteFiles&apos;, default=1)))
        fld_obj.set_hidden_folder(folder_int2bool(props.get(&apos;hidden&apos;, default=0)))

        folders.append(fld_obj)


    return folders

Полагаю, что если изменить логику работы таким образом, чтобы оперировать вводными данными из dconf - то будет работать, поскольку там сохраняется предыдущее значение в Previous/Software/BaseALT/Policies/Preferences/Machine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278284</commentid>
    <comment_count>1</comment_count>
    <who name="Котюхов Михаил Андреевич">kotjuhovma</who>
    <bug_when>2025-12-02 14:59:39 +0300</bug_when>
    <thetext>Актуально для версий:
 gpupdate-0.14.0-alt1
 
Воспроизводится на системах,обновленных до sisyphus:
 kworkstation-11.1.1-x86-64
 education-11.0-x86-64-kde
 education-11.0-x86-64-xfce
 workstation-11.1-x86-64</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>