• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

EsupPortail / Esup-Pod / 5322792349

pending completion
5322792349

push

github

web-flow
Merge pull request #863 from EsupPortail/develop

#3.3.0

- Import external video from url, youtube, peertube and BigBlueButton
- Change xapi actor to deal with Moodle
- Update template to BS5.3 and improve compliance for W3C
- Use redis to cache session and improve logging
- refactor of encoding/transcripting to move it in separate application
- Fixbug on categories, recorder, user liste, tags cloud

1484 of 1484 new or added lines in 51 files covered. (100.0%)

9011 of 12517 relevant lines covered (71.99%)

0.76 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

52.04
/pod/video_encode_transcript/admin.py
1
from django.contrib import admin
1✔
2

3
from django.contrib.sites.shortcuts import get_current_site
1✔
4
from django.contrib.sites.models import Site
1✔
5
from .models import EncodingAudio, EncodingVideo, VideoRendition
1✔
6
from .models import EncodingLog
1✔
7
from .models import EncodingStep
1✔
8
from .models import PlaylistVideo
1✔
9
from pod.video.models import Video
1✔
10

11

12
class EncodingVideoAdmin(admin.ModelAdmin):
1✔
13
    """Admin model for EncodingVideo."""
14

15
    list_display = ("video", "get_resolution", "encoding_format")
1✔
16
    list_filter = ["encoding_format", "rendition"]
1✔
17
    search_fields = ["id", "video__id", "video__title"]
1✔
18

19
    def get_resolution(self, obj):
1✔
20
        """Get the resolution of the video rendition."""
21
        return obj.rendition.resolution
×
22

23
    get_resolution.short_description = "resolution"
1✔
24

25
    def get_queryset(self, request):
1✔
26
        """Get the queryset based on the request."""
27
        qs = super().get_queryset(request)
×
28
        if not request.user.is_superuser:
×
29
            qs = qs.filter(video__sites=get_current_site(request))
×
30
        return qs
×
31

32
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
1✔
33
        """Customize the form field for foreign keys."""
34
        if (db_field.name) == "video":
×
35
            kwargs["queryset"] = Video.objects.filter(sites=Site.objects.get_current())
×
36
        if (db_field.name) == "rendition":
×
37
            kwargs["queryset"] = VideoRendition.objects.filter(
×
38
                sites=Site.objects.get_current()
39
            )
40
        return super().formfield_for_foreignkey(db_field, request, **kwargs)
×
41

42

43
class EncodingAudioAdmin(admin.ModelAdmin):
1✔
44
    """Admin model for EncodingAudio."""
45

46
    list_display = ("video", "encoding_format")
1✔
47
    list_filter = ["encoding_format"]
1✔
48
    search_fields = ["id", "video__id", "video__title"]
1✔
49

50
    def get_queryset(self, request):
1✔
51
        """Get the queryset based on the request."""
52
        qs = super().get_queryset(request)
×
53
        if not request.user.is_superuser:
×
54
            qs = qs.filter(video__sites=get_current_site(request))
×
55
        return qs
×
56

57
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
1✔
58
        """Customize the form field for foreign keys."""
59
        if (db_field.name) == "video":
×
60
            kwargs["queryset"] = Video.objects.filter(sites=Site.objects.get_current())
×
61
        return super().formfield_for_foreignkey(db_field, request, **kwargs)
×
62

63

64
class EncodingLogAdmin(admin.ModelAdmin):
1✔
65
    """Admin model for EncodingLog."""
66

67
    def video_id(self, obj):
1✔
68
        """Get the video ID."""
69
        return obj.video.id
×
70

71
    list_display = (
1✔
72
        "id",
73
        "video_id",
74
        "video",
75
    )
76
    readonly_fields = ("video", "log")
1✔
77
    search_fields = ["id", "video__id", "video__title"]
1✔
78

79
    def get_queryset(self, request):
1✔
80
        """Get the queryset based on the request."""
81
        qs = super().get_queryset(request)
×
82
        if not request.user.is_superuser:
×
83
            qs = qs.filter(video__sites=get_current_site(request))
×
84
        return qs
×
85

86

87
class EncodingStepAdmin(admin.ModelAdmin):
1✔
88
    """Admin model for EncodingStep."""
89

90
    list_display = ("video", "num_step", "desc_step")
1✔
91
    readonly_fields = ("video", "num_step", "desc_step")
1✔
92
    search_fields = ["id", "video__id", "video__title"]
1✔
93

94
    def get_queryset(self, request):
1✔
95
        """Get the queryset based on the request."""
96
        qs = super().get_queryset(request)
×
97
        if not request.user.is_superuser:
×
98
            qs = qs.filter(video__sites=get_current_site(request))
×
99
        return qs
×
100

101

102
class VideoRenditionAdmin(admin.ModelAdmin):
1✔
103
    """Admin model for VideoRendition."""
104

105
    list_display = (
1✔
106
        "resolution",
107
        "video_bitrate",
108
        "audio_bitrate",
109
        "encode_mp4",
110
    )
111

112
    def get_form(self, request, obj=None, **kwargs):
1✔
113
        """Get the form to be used in the admin."""
114
        if not request.user.is_superuser:
×
115
            exclude = ()
×
116
            exclude += ("sites",)
×
117
            self.exclude = exclude
×
118
        form = super(VideoRenditionAdmin, self).get_form(request, obj, **kwargs)
×
119
        return form
×
120

121
    def save_model(self, request, obj, form, change):
1✔
122
        """Save the VideoRendition model."""
123
        super().save_model(request, obj, form, change)
×
124
        if not change:
×
125
            obj.sites.add(get_current_site(request))
×
126
            obj.save()
×
127

128
    def get_queryset(self, request):
1✔
129
        """Get the queryset based on the request."""
130
        qs = super().get_queryset(request)
×
131
        if not request.user.is_superuser:
×
132
            qs = qs.filter(sites=get_current_site(request))
×
133
        return qs
×
134

135

136
class PlaylistVideoAdmin(admin.ModelAdmin):
1✔
137
    autocomplete_fields = ["video"]
1✔
138
    list_display = ("name", "video", "encoding_format")
1✔
139
    search_fields = ["id", "video__id", "video__title"]
1✔
140
    list_filter = ["encoding_format"]
1✔
141

142
    def get_queryset(self, request):
1✔
143
        qs = super().get_queryset(request)
×
144
        if not request.user.is_superuser:
×
145
            qs = qs.filter(video__sites=get_current_site(request))
×
146
        return qs
×
147

148
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
1✔
149
        if (db_field.name) == "video":
×
150
            kwargs["queryset"] = Video.objects.filter(sites=Site.objects.get_current())
×
151

152
        return super().formfield_for_foreignkey(db_field, request, **kwargs)
×
153

154

155
admin.site.register(EncodingVideo, EncodingVideoAdmin)
1✔
156
admin.site.register(EncodingAudio, EncodingAudioAdmin)
1✔
157
admin.site.register(EncodingLog, EncodingLogAdmin)
1✔
158
admin.site.register(EncodingStep, EncodingStepAdmin)
1✔
159
admin.site.register(VideoRendition, VideoRenditionAdmin)
1✔
160
admin.site.register(PlaylistVideo, PlaylistVideoAdmin)
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc