# Неудача при добавлении темы навсегда блокирует её установку

**URL:** https://meta.discourse.org/t/failing-to-add-a-theme-permanently-prevents-that-theme-from-being-added/293061
**Category:** Bug
**Created:** [26.Январь.2024 14:53:28 UTC](https://meta.discourse.org/t/failing-to-add-a-theme-permanently-prevents-that-theme-from-being-added/293061 "2024-01-26T14:53:28Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Firepup650](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/firepup650/32/465200_2.png) [@Firepup650](https://meta.discourse.org/u/Firepup650)
#### Post date: [26.Январь.2024 14:53:28 UTC](https://meta.discourse.org/t/failing-to-add-a-theme-permanently-prevents-that-theme-from-being-added/293061/1 "2024-01-26T14:53:28Z")

</div>

Только что столкнулся с этим на новом форуме. Я попытался добавить тему, но это не удалось из-за одного из расширений файлов. Затем я временно разрешил `*`, чтобы попытаться исправить проблему, после чего при попытке добавить тему начал получать ошибки 500.

Сообщение

```plaintext
Не удалось корректно обработать перехваченный ответ: ActiveRecord::RecordNotUnique : PG::UniqueViolation: ОШИБКА: дубликат значения ключа нарушает уникальное ограничение "index_child_themes_on_parent_theme_id_and_child_theme_id"
ДЕТАЛИ: Ключ (parent_theme_id, child_theme_id)=(50, 35) уже существует.

```

Трассировка стека

```plaintext
rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:69:in `exec_params'
rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:69:in `exec_params'
activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:768:in `block (2 levels) in exec_no_cache'
activesupport-7.0.8/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
activesupport-7.0.8/lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
activerecord-7.0.8/lib/active_record/connection_adapters/postgresql_adapter.rb:767:in `block in exec_no_cache'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

```

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [29.Январь.2024 05:14:40 UTC](https://meta.discourse.org/t/failing-to-add-a-theme-permanently-prevents-that-theme-from-being-added/293061/2 "2024-01-29T05:14:40Z")

</div>

О, странно, похоже, мы некорректно обрабатываем очистку при ошибке.

Это воспроизводится?

---

<div class="post-metadata">

### Author: ![Firepup650](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/firepup650/32/465200_2.png) [@Firepup650](https://meta.discourse.org/u/Firepup650)
#### Post date: [29.Январь.2024 14:38:48 UTC](https://meta.discourse.org/t/failing-to-add-a-theme-permanently-prevents-that-theme-from-being-added/293061/3 "2024-01-29T14:38:48Z")

</div>

Я перепроверю, но шаги для воспроизведения должны быть следующими:

1. Найдите тему с файлом, который по умолчанию не разрешён (или удалите всё из списка разрешённых расширений темы или сделайте что-то подобное).
2. Попробуйте импортировать тему.
3. Убедитесь, что импорт не удался из-за расширения файла.
4. Разрешите соответствующие расширения (или просто `*`).
5. Попробуйте снова импортировать тему, но это всё равно не сработает.

Также, возможно, к теме должны быть прикреплены какие-то компоненты темы, но я не уверен.

Изначально я вызвал эту проблему с помощью [собственной темы](https://github.com/Firepup6500/discourse-firepup-s-theme), но, насколько мне известно, теоретически это может вызвать большинство тем.

Редактирование:  
Верно, единственное реальное обязательное условие здесь — заблокированный файл, поэтому тема с пользовательским шрифтом, логотипом и т. д. может вызвать эту проблему, если вы запретите соответствующее расширение файла. (Кроме того, загрузка сотрудниками, apparently, переопределяет загрузку тем, поэтому убедитесь, что файл не разрешён ни в одном из этих настроек).

---

<div class="post-metadata">

### Author: ![Don](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/don/32/228726_2.png) [@Don](https://meta.discourse.org/u/Don)
#### Post date: [06.Апрель.2024 12:32:37 UTC](https://meta.discourse.org/t/failing-to-add-a-theme-permanently-prevents-that-theme-from-being-added/293061/5 "2024-04-06T12:32:37Z")

</div>

Привет 👋

Я проверил вашу тему, похоже, проблема в вашем файле `about.json`.

В компонентах есть дублирование.

Строка 29 и строка 38 🔽

> <https://github.com/Firepup6500/discourse-firepup-s-theme/blob/88cee0032428e6a456a5960b6265e71517e16e3c/about.json#L29>

> <https://github.com/Firepup6500/discourse-firepup-s-theme/blob/88cee0032428e6a456a5960b6265e71517e16e3c/about.json#L38>

* * *

Однако вы устанавливаете довольно много компонентов одновременно с темой. Все ли они необходимы? 🙂

---

<div class="post-metadata">

### Author: ![Firepup650](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/firepup650/32/465200_2.png) [@Firepup650](https://meta.discourse.org/u/Firepup650)
#### Post date: [06.Апрель.2024 14:40:03 UTC](https://meta.discourse.org/t/failing-to-add-a-theme-permanently-prevents-that-theme-from-being-added/293061/6 "2024-04-06T14:40:03Z")

</div>

> [@Don](#):
>
> Я проверил вашу тему, похоже, проблема в вашем `about.json`.
> 
> В компонентах есть дублирование

Ой, моя ошибка, извините.

> [@Don](#):
>
> Однако вы устанавливаете довольно много компонентов одновременно с темой. Все ли они необходимы?

Я никогда не планировал, что кто-то ещё будет использовать эту тему, она просто сильно настроена под мои предпочтения, и в ней есть те компоненты темы, которые я люблю иметь под рукой.
