mirror of
https://github.com/Dispatcharr/Dispatcharr.git
synced 2026-01-23 18:54:58 +00:00
46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
# apps/m3u/forms.py
|
|
from django import forms
|
|
from .models import M3UAccount, M3UFilter
|
|
import re
|
|
|
|
class M3UAccountForm(forms.ModelForm):
|
|
class Meta:
|
|
model = M3UAccount
|
|
fields = [
|
|
'name',
|
|
'server_url',
|
|
'uploaded_file',
|
|
'server_group',
|
|
'max_streams',
|
|
'is_active',
|
|
]
|
|
|
|
def clean_uploaded_file(self):
|
|
uploaded_file = self.cleaned_data.get('uploaded_file')
|
|
if uploaded_file:
|
|
if not uploaded_file.name.endswith('.m3u'):
|
|
raise forms.ValidationError("The uploaded file must be an M3U file.")
|
|
return uploaded_file
|
|
|
|
def clean(self):
|
|
cleaned_data = super().clean()
|
|
url = cleaned_data.get('server_url')
|
|
file = cleaned_data.get('uploaded_file')
|
|
# Ensure either `server_url` or `uploaded_file` is provided
|
|
if not url and not file:
|
|
raise forms.ValidationError("Either an M3U URL or a file upload is required.")
|
|
return cleaned_data
|
|
|
|
|
|
class M3UFilterForm(forms.ModelForm):
|
|
class Meta:
|
|
model = M3UFilter
|
|
fields = ['m3u_account', 'filter_type', 'regex_pattern', 'exclude']
|
|
|
|
def clean_regex_pattern(self):
|
|
pattern = self.cleaned_data['regex_pattern']
|
|
try:
|
|
re.compile(pattern)
|
|
except re.error:
|
|
raise forms.ValidationError("Invalid regex pattern")
|
|
return pattern
|