Feat: packaging (#127)

- Add configuration files for packaging
- Precommit now uses ruff

Co-authored-by: bkfox <thomas bkfox net>
Reviewed-on: rc/aircox#127
This commit is contained in:
Thomas Kairos
2023-10-11 10:58:34 +02:00
parent 5ea092dba6
commit f7a61fe6c0
82 changed files with 332 additions and 935 deletions

View File

@ -18,9 +18,7 @@ class EpisodeAdminForm(ModelForm):
class EpisodeAdmin(SortableAdminBase, PageAdmin):
form = EpisodeAdminForm
list_display = PageAdmin.list_display
list_filter = tuple(
f for f in PageAdmin.list_filter if f != "pub_date"
) + (
list_filter = tuple(f for f in PageAdmin.list_filter if f != "pub_date") + (
"diffusion__start",
"pub_date",
)

View File

@ -14,13 +14,9 @@ class DateFieldFilter(filters.FieldListFilter):
def __init__(self, field, request, params, model, model_admin, field_path):
self.field_generic = f"{field_path}__"
self.date_params = {
k: v for k, v in params.items() if k.startswith(self.field_generic)
}
self.date_params = {k: v for k, v in params.items() if k.startswith(self.field_generic)}
exact_lookup = (
"date" if isinstance(field, models.DateTimeField) else "exact"
)
exact_lookup = "date" if isinstance(field, models.DateTimeField) else "exact"
# links as: (label, param, input_type|None, value)
self.links = [
@ -29,17 +25,11 @@ class DateFieldFilter(filters.FieldListFilter):
(_("Until"), self.field_generic + "lte", self.input_type),
]
if field.null:
self.links.insert(
0, (_("None"), self.field_generic + "isnull", None, "1")
)
self.links.insert(0, (_("None"), self.field_generic + "isnull", None, "1"))
self.query_attrs = {
k: v for k, v in request.GET.items() if k not in self.date_params
}
self.query_attrs = {k: v for k, v in request.GET.items() if k not in self.date_params}
self.query_string = urlencode(self.query_attrs)
super().__init__(
field, request, params, model, model_admin, field_path
)
super().__init__(field, request, params, model, model_admin, field_path)
def expected_parameters(self):
return [link[1] for link in self.links]
@ -59,11 +49,7 @@ class DateFieldFilter(filters.FieldListFilter):
"value": value,
"type": link[2],
"query_attrs": self.query_attrs,
"query_string": urlencode({link[1]: value})
+ "&"
+ self.query_string
if value
else self.query_string,
"query_string": urlencode({link[1]: value}) + "&" + self.query_string if value else self.query_string,
}

View File

@ -50,11 +50,7 @@ class BasePageAdmin(admin.ModelAdmin):
change_form_template = "admin/aircox/page_change_form.html"
def cover_thumb(self, obj):
return (
mark_safe('<img src="{}"/>'.format(obj.cover.icons["64"]))
if obj.cover
else ""
)
return mark_safe('<img src="{}"/>'.format(obj.cover.icons["64"])) if obj.cover else ""
def get_changeform_initial_data(self, request):
data = super().get_changeform_initial_data(request)
@ -65,9 +61,7 @@ class BasePageAdmin(admin.ModelAdmin):
def _get_common_context(self, query, extra_context=None):
extra_context = extra_context or {}
parent = query.get("parent", None)
extra_context["parent"] = (
None if parent is None else Page.objects.get_subclass(id=parent)
)
extra_context["parent"] = None if parent is None else Page.objects.get_subclass(id=parent)
return extra_context
def render_change_form(self, request, context, *args, **kwargs):
@ -94,9 +88,7 @@ class PageAdmin(BasePageAdmin):
search_fields = BasePageAdmin.search_fields + ("category__title",)
fieldsets = deepcopy(BasePageAdmin.fieldsets)
fieldsets[0][1]["fields"].insert(
fieldsets[0][1]["fields"].index("slug") + 1, "category"
)
fieldsets[0][1]["fields"].insert(fieldsets[0][1]["fields"].index("slug") + 1, "category")
fieldsets[1][1]["fields"] += ("featured", "allow_comments")

View File

@ -38,9 +38,7 @@ class SoundInline(admin.TabularInline):
max_num = 0
def audio(self, obj):
return mark_safe(
'<audio src="{}" controls></audio>'.format(obj.file.url)
)
return mark_safe('<audio src="{}" controls></audio>'.format(obj.file.url))
audio.short_description = _("Audio")
@ -86,13 +84,7 @@ class SoundAdmin(SortableAdminBase, admin.ModelAdmin):
def related(self, obj):
# TODO: link to episode or program edit
return (
obj.episode.title
if obj.episode
else obj.program.title
if obj.program
else ""
)
return obj.episode.title if obj.episode else obj.program.title if obj.program else ""
related.short_description = _("Program / Episode")