99 lines
3.1 KiB
Python
99 lines
3.1 KiB
Python
from django.contrib import admin,messages
|
|
from django.utils.translation import ngettext
|
|
from django.utils import timezone
|
|
from prompt_toolkit.shortcuts import print_container
|
|
from import_export import resources
|
|
from .models import SimpsonsData,urlData
|
|
from .utils import mark_episode_watched,unwatch_all_episodes,generate_new_urls_for_episode
|
|
from core.admin import UniversalModelAdmin
|
|
|
|
# Register your models here.
|
|
|
|
DB = 'simpsons_db'
|
|
|
|
@admin.action(description="Mark episode as seen")
|
|
def make_seen(modeladmin, request, queryset):
|
|
updated = queryset.update(seen="True",modified_at=timezone.now())
|
|
|
|
for query in queryset.values():
|
|
print(query)
|
|
season_number = query.get('season')
|
|
episode_number = query.get('episode')
|
|
mark_episode_watched(season_number,episode_number,"watched")
|
|
|
|
modeladmin.message_user(
|
|
request,
|
|
ngettext(
|
|
"%d episode was successfully marked as seen.",
|
|
"%d episodes were successfully marked as seen.",
|
|
updated,
|
|
)
|
|
% updated,
|
|
messages.SUCCESS,
|
|
)
|
|
|
|
@admin.action(description="Mark episode as not seen")
|
|
def make_unseen(modeladmin, request, queryset):
|
|
updated = queryset.update(seen="False")
|
|
for query in queryset.values():
|
|
print(query)
|
|
season_number = query.get('season')
|
|
episode_number = query.get('episode')
|
|
mark_episode_watched(season_number,episode_number,"unwatched")
|
|
|
|
modeladmin.message_user(
|
|
request,
|
|
ngettext(
|
|
"%d episode was successfully marked as not seen.",
|
|
"%d episodes were successfully marked as not seen.",
|
|
updated,
|
|
)
|
|
% updated,
|
|
messages.SUCCESS,
|
|
)
|
|
|
|
@admin.action(description="mark all of them as unseen on betaserie")
|
|
def unseen_betaserie(modeladmin, request, queryset):
|
|
unwatch_all_episodes()
|
|
|
|
@admin.action(description="generate new urls for episode")
|
|
def generate_new_urls(modeladmin, request, queryset):
|
|
generate_new_urls_for_episode()
|
|
|
|
|
|
|
|
@admin.register(SimpsonsData)
|
|
class EpisodeAdmin(UniversalModelAdmin):
|
|
list_display = [field.name for field in SimpsonsData._meta.fields if field.name != 'id']
|
|
list_display += ['clickable_links']
|
|
list_filter = ['seen','modified_at']
|
|
#list_filter = ['seen']
|
|
fields = ['season', 'episode', 'url', 'seen']
|
|
actions = [make_seen,make_unseen,unseen_betaserie,generate_new_urls]
|
|
search_fields = ['season', 'episode', 'url', 'seen']
|
|
|
|
def get_queryset(self, request):
|
|
return super().get_queryset(request).using(DB)
|
|
|
|
def save_model(self, request, obj, form, change):
|
|
obj.save(using=DB)
|
|
|
|
def delete_model(self, request, obj):
|
|
obj.delete(using=DB)
|
|
|
|
def delete_queryset(self, request, queryset):
|
|
queryset.using(DB).delete()
|
|
|
|
@admin.register(urlData)
|
|
class urldataAdmin(UniversalModelAdmin):
|
|
list_display = ('url_example', 'prefix', 'infix', 'suffix','addedDate')
|
|
|
|
|
|
fieldsets = [
|
|
(
|
|
None,
|
|
{
|
|
'fields': (('prefix', 'infix', 'suffix'), 'url_example')
|
|
},
|
|
)
|
|
] |