Commit Graph

125 Commits

Author SHA1 Message Date
Keoni Mahelona b1bdd6d9be
feat(api): added filters on genre & md5 for files api (#3127)
### Description
Added filters for genre and md5 to the files API, e.g.
`/api/v2/files?genre=soul`

**This is a new feature**: Yes

**I have updated the documentation to reflect these changes**: No
There should be a schema and docs that are generated automatically. I
don't know where that is.


### Testing Notes

**What I did:**
- Used docker to deploy locally
- Confirmed filters work at
http://localhost:8080/api/v2/files?genre=Soul

**How you can replicate my testing:**
- `make clean dev`
- Upload some files!
- Visit http://localhost:8080/api/v2/files
- You can use the filters
<img width="658" alt="Screenshot 2024-12-23 at 01 36 01"
src="https://github.com/user-attachments/assets/ba19f7f3-fb3e-495d-8937-d451c70d326c"
/>
<img width="652" alt="Screenshot 2024-12-23 at 01 35 56"
src="https://github.com/user-attachments/assets/c7191131-a963-463a-b52f-9d0952192555"
/>

_How can the reviewer validate this PR?_
- See above
- wrote tests to confirm filters work
2025-01-08 16:54:53 +00:00
Scott McGrath 82d5af2dfb
fix(legacy): migrations from airtime 2.5.1 (#3123)
### Description

This fixes various problems in legacy migrations that were preventing a
successful database migration from Airtime 2.5.1. Previously, following
[the
procedure](https://libretime.org/docs/admin-manual/install/migrate-from-airtime/)
using the migrations provided in the Libretime 4.2.0 installer, without
the fixes in this PR, would either fail completely, or cause all of the
imported data to be completely deleted.


_migrations.py
If schema_version is not found in the table cc_prefs, it then checks for
system_version to have a value of '2.5.1' (in case this is an airtime
2.5.1 migration which will not have any schema_version in cc_pref). If
found, it prevents loading of the schema file, which is critical to
preserving the imported Airtime data.

0006_2_5_5
Removed a redundant addition of the image_path and description columns
to cc_show (done in earlier migration 003_2_5_2)

0015_2_5_17
Fixed a syntax error with adding the artwork column to cc_files

0023_3_0_0_alpha_9_1
Removed a redundant addition of the artwork column to cc_files (done in
earlier migration 0015_2_5_7)

### Documentation Changes

The [airtime migration
documentation](https://libretime.org/docs/admin-manual/install/migrate-from-airtime/)
already suggests a procedure to be followed, it just didn't work because
of problems within these migrations. The procedure as documented should
now work for those coming from Airtime 2.5.1.

### Testing Notes

**What I did:**

I attempted to migrate an actual airtime 2.5.1 database from a
production system containing a large amount of shows, tracks, and users.
I observed that the migration completed without errors, and that the
expected system state was achieved within Libretime. Specifically, the
calendar, library, authentication, and other aspects are populated with
the data that was present in the migrated Airtime database, and
Libretime is able to function using this data.

**How you can replicate my testing:**

Install Libretime 4.2.0. Restore a sample postrgresql database backup
from an Airtime 2.5.1 server. Apply the database migration. Restart the
services. Login and view the library, calender, etc.

### **Links**

Closes: #3121  
May also be related to, or even close (as a duplicate): #2563
2024-12-21 10:09:19 +00:00
Thomas Göttgens 2ac7e8a506
feat(api): enable writes to schedule table (#3109)
this fixes #3088

---------

Co-authored-by: Kyle Robbertze <paddatrapper@users.noreply.github.com>
2024-11-18 16:10:54 +00:00
Thomas Göttgens 7992a9be2d
fix: intro/outro playlist unset was impossible (#3101)
this reinstates the boolean fields in the database from the original PR
to work around a foreign key contraint. THE UI remains unchanged
2024-10-21 18:34:39 +01:00
Thomas Göttgens 299be3c142
feat: use custom intro/outro playlists per show (#2941)
### Description

Having a global intro and outro playlist in settings is not very
flexible for special programming. This adds an override intro/outro
playlist per show. If it is not set, the global one is used. also it's
ignored if there's no autloading at all.

**I have updated the documentation to reflect these changes**:

Yes

### Testing Notes

**What I did:**
Schedule 2 shows, one without defining custom lists, one with defining
custom lists. one hour before the show starts it should be populated
correctly. If you define a global list it shojuld be replaced with the
per-show list.

---------

Co-authored-by: Thomas Göttgens <tgoettgens@mail.com>
2024-10-14 21:07:41 +01:00
Kyle Robbertze 81e8fa90ed
chore: fix linting ignore comments (#3084)
### Description

There is now a too-many-positional-arguments check
2024-09-30 16:08:23 +01:00
Thomas Göttgens 9757b1b78c
feat(api): implement file deletion (#2960)
This implements the file delete to the Django API. Previously, the code was only manipulating the database while leaving the file in place.

Co-authored-by: jo <ljonas@riseup.net>
2024-05-05 22:44:30 +02:00
Jonas L 35d0dec4a8
fix: apply replay gain preferences on scheduled files (#2945)
### Description

The replay gain preferences are applied in the legacy code, but the
playout code was missing this feature. The replay gain was not applied
when playout fetched the schedules.


37d1a7685e/legacy/application/models/Schedule.php (L881-L886)
2024-02-08 20:29:10 +01:00
renovate[bot] 7a3fffd45f
chore(deps): update pre-commit hook psf/black-pre-commit-mirror to v24 (#2917)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[psf/black-pre-commit-mirror](https://togithub.com/psf/black-pre-commit-mirror)
| repository | major | `23.12.1` -> `24.1.1` |

Note: The `pre-commit` manager in Renovate is not supported by the
`pre-commit` maintainers or community. Please do not report any problems
there, instead [create a Discussion in the Renovate
repository](https://togithub.com/renovatebot/renovate/discussions/new)
if you have any questions.

---

### Release Notes

<details>
<summary>psf/black-pre-commit-mirror
(psf/black-pre-commit-mirror)</summary>

###
[`v24.1.1`](https://togithub.com/psf/black-pre-commit-mirror/compare/24.1.0...24.1.1)

[Compare
Source](https://togithub.com/psf/black-pre-commit-mirror/compare/24.1.0...24.1.1)

###
[`v24.1.0`](https://togithub.com/psf/black-pre-commit-mirror/compare/23.12.1...24.1.0)

[Compare
Source](https://togithub.com/psf/black-pre-commit-mirror/compare/23.12.1...24.1.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/libretime/libretime).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xMzUuMCIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: jo <ljonas@riseup.net>
2024-02-02 20:24:25 +01:00
Jonas L b2c1ceb89f
fix(api): paths with question marks chars are handled by X-Accel-Redirect (#2875)
Use the filepath_to_uri function instead.
2024-01-07 15:07:01 +01:00
Jonas L 72268ad9bb
fix(api): let nginx handle the media file content type (#2862) 2024-01-01 13:07:35 +01:00
Jonas L 0ce63f3bf0
fix(api): ensure non ascii paths are handled by X-Accel-Redirect (#2861) 2024-01-01 12:58:19 +01:00
Jonas L 4603c1759f
feat!: use nginx to serve media files (#2860)
Closes #2522

To reduce the strain on the API service, we moved the media file serving
to the Nginx web server. The API is still handling the authentication,
but delegates the serving using the `X-Accel-Redirect` header.

BREAKING CHANGE: The media file serving is now handled by Nginx instead
of the API service. The `storage.path` field is now used in the Nginx
configuration, so make sure to update the Nginx configuration file if
you change it.
2023-12-30 18:59:15 +01:00
Jonas L 43221d9d7f
fix(api): move gunicorn worker config to python file (#2854)
### Description

Passing the --lifespan flag to gunicorn does not forward the option to
uvicorn.
2023-12-29 17:47:50 +01:00
Jonas L 0d2d1a2673
feat!: the `general.secret_key` configuration field is now required (#2841)
BREAKING CHANGE: The `general.secret_key` configuration field is now
required. Make sure to update your configuration file and add a secret
key.

Closes #2426
2023-12-27 18:15:47 +01:00
Jonas L d80100a216
refactor(api): fix deprecation warnings (#2839)
Fix some deprecation warnings related to the pydantic upgrade.
2023-12-27 15:46:38 +01:00
Jonas L 651bb9261c
chore(api): disable duplicate-code check (#2799)
* chore(api): disable duplicate-code check

* refactor: fix linting errors
2023-12-18 18:54:07 +01:00
jo c2c0be1fbc feat(api): add email configuration 2023-06-02 07:44:34 +01:00
Jonas L 001466f8fd
feat(legacy): move session store to database (#2523) 2023-05-30 22:25:50 +02:00
jo a8e2ce7732 fix(api): upgrade django code (pre-commit) 2023-04-24 20:46:48 +01:00
Jonas L 7962c0adf6
feat(api): add cors headers middleware (#2479) 2023-03-23 14:40:30 +00:00
Jonas L d800c5e280
feat: use secret_key config field instead of api_key (#2444)
Fixes #2426
2023-03-22 09:14:11 +00:00
Jonas L c7381a4f80
fix(api): cast string value to int enum (#2461) 2023-03-15 21:19:04 +00:00
jo b7214b5d46 feat: add sentry sdk 2023-03-14 14:59:45 +00:00
jo a60d83311b feat: add python packages version 2023-03-14 14:59:45 +00:00
jo 72aa1c1dae fix(api): explicit FileImportStatusEnum in schema 2023-03-14 13:29:55 +01:00
jo 38bff1d4df test(api): fix linting errors 2023-03-14 11:23:14 +00:00
jo 861698987c refactor: don't use f-string on logging statements
The strings are now be formatted if the logging level is enabled.
2023-02-26 19:09:51 +02:00
jo 87de25052a cuepoints analyzer disabled by default 2023-02-15 10:13:32 +02:00
jo f5e46c6f3d feat: configure cue points analysis per track type 2023-02-15 10:13:32 +02:00
jo f8f6fda794 chore: raise from specific exceptions 2023-02-03 07:36:58 +02:00
renovate[bot] f585172850
chore(deps): update dependency django to v4 (#2268)
* chore(deps): update dependency django to v4

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: jo <ljonas@riseup.net>
2022-12-07 10:20:36 +01:00
Jonas L cff98f2d23
feat(legacy): remove db allowed_cors_origins preference (#2095)
- Remove after deprecation in eb8e7b3415
2022-10-11 13:38:31 +02:00
jo e54c8d22e1 feat: delete cc_pref stream preferences rows
- Delete the previously deprecated cc_pref stream preferences rows.
2022-10-11 11:32:51 +02:00
jo 8a6b5907be feat: drop cc_stream_setting table
- Remove the previously deprecated cc_stream_setting table.
2022-10-11 11:32:51 +02:00
jo 3d124eba7e fix(api): allow single digit version for legacy schema 2022-10-11 11:32:51 +02:00
jo 10a60d3673 chore: bump legacy schema version 2022-09-15 17:11:01 +02:00
jo 882f8e04c6 chore(api): rename legacy migration files 2022-09-15 17:11:01 +02:00
Jonas L 9b3207b8a4
feat: move timezone preference to config file (#2096)
BREAKING CHANGE: The timezone preference moved to the configuration
file.
2022-09-14 12:48:08 +02:00
Jonas L 35476f9d6d
feat(api): move /api-auth to /api/browser (#2094) 2022-09-06 21:30:43 +02:00
Jonas L ef1de34111
fix(playout): missing live show events (#2087) 2022-09-06 14:09:04 +02:00
jo 12d2d4b15a feat(api): add /info and /stream/* endpoints 2022-09-06 13:21:54 +02:00
jo 5bf62dd9cb feat(legacy): read stream config from file
- We don't delete the stream preferences from the database to prevent data loss. This will be handled in a future release.
2022-09-06 13:21:54 +02:00
jo 65d3552fc7 feat: remove cc_stream_setting models
- We don't drop the cc_stream_setting table from the database to prevent data loss. This will be handled in a future release.
2022-09-06 13:21:54 +02:00
jo 2a74649882 feat(api): remove set passwords command 2022-09-06 13:21:54 +02:00
Jonas L 1147853c63
feat(shared): pass config data via init (#2042) 2022-08-12 15:12:39 +02:00
Jonas L 7082c9693d
test(api): conftest at top level for global fixture access (#2038) 2022-08-10 12:36:56 +02:00
jo 406d42323a feat: move stream stats status to pref table 2022-08-07 08:50:06 +02:00
jo 2b533d4724 feat: move stream liquisoap status to pref table 2022-08-07 08:50:06 +02:00
Jonas L 6c59ff588b
feat: move off_air_meta stream setting to pref table (#2023) 2022-08-06 19:18:40 +02:00