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

EsupPortail / Esup-Pod / 8702385459

16 Apr 2024 08:26AM UTC coverage: 70.485%. First build
8702385459

Pull #1085

github

web-flow
bad link videojs lang file in claim_record page (#1105)

Co-authored-by: Charneau Franck <franck.charneau@univ-lr.fr>
Pull Request #1085: [DONE - FREEZE] Develop #3.6.0

739 of 989 new or added lines in 37 files covered. (74.72%)

10570 of 14996 relevant lines covered (70.49%)

0.7 hits per line

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

77.66
/pod/chapter/views.py
1
from django.http import HttpResponse
1✔
2
from django.http import HttpResponseForbidden
1✔
3
from django.shortcuts import render
1✔
4
from django.shortcuts import get_object_or_404
1✔
5
from django.template.loader import render_to_string
1✔
6
from django.contrib import messages
1✔
7
from django.contrib.auth.decorators import login_required
1✔
8
from django.utils.translation import ugettext as _
1✔
9
from django.views.decorators.csrf import csrf_protect
1✔
10
from pod.video.models import Video
1✔
11
from pod.chapter.models import Chapter
1✔
12
from pod.chapter.forms import ChapterForm
1✔
13
from pod.chapter.forms import ChapterImportForm
1✔
14
from django.middleware.csrf import get_token
1✔
15
from django.contrib.sites.shortcuts import get_current_site
1✔
16
from pod.main.utils import is_ajax
1✔
17
import json
1✔
18

19
__AVAILABLE_ACTIONS__ = ["new", "save", "modify", "delete", "cancel", "import", "export"]
1✔
20

21

22
@csrf_protect
1✔
23
@login_required(redirect_field_name="referrer")
1✔
24
def video_chapter(request, slug):
1✔
25
    video = get_object_or_404(Video, slug=slug, sites=get_current_site(request))
1✔
26
    if (
1✔
27
        request.user != video.owner
28
        and not (
29
            request.user.is_superuser or request.user.has_perm("chapter.change_chapter")
30
        )
31
        and (request.user not in video.additional_owners.all())
32
    ):
33
        messages.add_message(request, messages.ERROR, _("You cannot chapter this video."))
1✔
34
        return HttpResponseForbidden(
1✔
35
            "Only the owner and additional owners can add chapter."
36
        )
37

38
    list_chapter = video.chapter_set.all()
1✔
39

40
    if request.method == "POST":
1✔
41
        if (
1✔
42
            request.POST.get("action")
43
            and request.POST.get("action") in __AVAILABLE_ACTIONS__
44
        ):
45
            return eval(
1✔
46
                "video_chapter_{0}(request, video)".format(request.POST.get("action"))
47
            )
48
    else:
49
        return render(
1✔
50
            request,
51
            "video_chapter.html",
52
            {"video": video, "list_chapter": list_chapter},
53
        )
54

55

56
def video_chapter_new(request, video):
1✔
57
    """Display a new video chapter form."""
58
    list_chapter = video.chapter_set.all()
1✔
59
    form_chapter = ChapterForm(initial={"video": video})
1✔
60
    form_import = ChapterImportForm(user=request.user, video=video)
1✔
61
    if is_ajax(request):
1✔
62
        return render(
×
63
            request,
64
            "chapter/form_chapter.html",
65
            {
66
                "form_chapter": form_chapter,
67
                "form_import": form_import,
68
                "video": video,
69
            },
70
        )
71
    else:
72
        return render(
1✔
73
            request,
74
            "video_chapter.html",
75
            {
76
                "video": video,
77
                "list_chapter": list_chapter,
78
                "form_chapter": form_chapter,
79
                "form_import": form_import,
80
            },
81
        )
82

83

84
def toggle_valid_form__video_chapter(request, video):
1✔
85
    """Toggle the form validity."""
86
    list_chapter = video.chapter_set.all()
1✔
87
    if is_ajax(request):
1✔
NEW
88
        csrf_token_value = get_token(request)
×
NEW
89
        some_data_to_dump = {
×
90
            "list_chapter": render_to_string(
91
                "chapter/list_chapter.html",
92
                {
93
                    "list_chapter": list_chapter,
94
                    "video": video,
95
                    "csrf_token_value": csrf_token_value,
96
                },
97
                request=request,
98
            ),
99
            "video-elem": render_to_string(
100
                "videos/video-element.html",
101
                {"video": video},
102
                request=request,
103
            ),
104
        }
NEW
105
        data = json.dumps(some_data_to_dump)
×
NEW
106
        return HttpResponse(data, content_type="application/json")
×
107
    else:
108
        return render(
1✔
109
            request,
110
            "video_chapter.html",
111
            {"video": video, "list_chapter": list_chapter},
112
        )
113

114

115
def video_chapter_save(request, video):
1✔
116
    """Save a video chapter form request."""
117
    list_chapter = video.chapter_set.all()
1✔
118
    form_chapter = None
1✔
119

120
    chapter_id = request.POST.get("chapter_id")
1✔
121
    if chapter_id != "None" and chapter_id is not None:
1✔
122
        chapter = get_object_or_404(Chapter, id=chapter_id)
1✔
123
        form_chapter = ChapterForm(request.POST, instance=chapter)
1✔
124
    else:
125
        form_chapter = ChapterForm(request.POST)
1✔
126
    if form_chapter.is_valid():
1✔
127
        form_chapter.save()
1✔
128
        return toggle_valid_form__video_chapter(request, video)
1✔
129
    else:
130
        if is_ajax(request):
1✔
131
            csrf_token_value = get_token(request)
×
132
            some_data_to_dump = {
×
133
                "errors": "{0}".format(_("Please correct errors.")),
134
                "form": render_to_string(
135
                    "chapter/form_chapter.html",
136
                    {
137
                        "video": video,
138
                        "form_chapter": form_chapter,
139
                        "csrf_token_value": csrf_token_value,
140
                    },
141
                    request=request,
142
                ),
143
            }
144
            data = json.dumps(some_data_to_dump)
×
145
            return HttpResponse(data, content_type="application/json")
×
146
        else:
147
            return render(
1✔
148
                request,
149
                "video_chapter.html",
150
                {
151
                    "video": video,
152
                    "list_chapter": list_chapter,
153
                    "form_chapter": form_chapter,
154
                },
155
            )
156

157

158
def video_chapter_modify(request, video):
1✔
159
    """Display a video chapter modification form."""
160
    list_chapter = video.chapter_set.all()
1✔
161
    if request.POST.get("action", "").lower() == "modify":
1✔
162
        chapter = get_object_or_404(Chapter, id=request.POST.get("id"))
1✔
163
        form_chapter = ChapterForm(instance=chapter)
1✔
164
        if is_ajax(request):
1✔
165
            return render(
×
166
                request,
167
                "chapter/form_chapter.html",
168
                {"form_chapter": form_chapter, "video": video},
169
            )
170
        else:
171
            return render(
1✔
172
                request,
173
                "video_chapter.html",
174
                {
175
                    "video": video,
176
                    "list_chapter": list_chapter,
177
                    "form_chapter": form_chapter,
178
                },
179
            )
180

181

182
def video_chapter_delete(request, video):
1✔
183
    chapter = get_object_or_404(Chapter, id=request.POST.get("id"))
1✔
184
    chapter.delete()
1✔
185
    list_chapter = video.chapter_set.all()
1✔
186
    if is_ajax(request):
1✔
187
        csrf_token_value = get_token(request)
×
188
        some_data_to_dump = {
×
189
            "list_chapter": render_to_string(
190
                "chapter/list_chapter.html",
191
                {
192
                    "list_chapter": list_chapter,
193
                    "video": video,
194
                    "csrf_token_value": csrf_token_value,
195
                },
196
                request=request,
197
            ),
198
            "video-elem": render_to_string(
199
                "videos/video-element.html", {"video": video}, request=request
200
            ),
201
        }
202
        data = json.dumps(some_data_to_dump)
×
203
        return HttpResponse(data, content_type="application/json")
×
204
    else:
205
        return render(
1✔
206
            request,
207
            "video_chapter.html",
208
            {"video": video, "list_chapter": list_chapter},
209
        )
210

211

212
def video_chapter_cancel(request, video):
1✔
213
    list_chapter = video.chapter_set.all()
×
214

215
    return render(
×
216
        request,
217
        "video_chapter.html",
218
        {"video": video, "list_chapter": list_chapter},
219
    )
220

221

222
def video_chapter_import(request, video):
1✔
223
    list_chapter = video.chapter_set.all()
1✔
224
    form_chapter = ChapterForm(initial={"video": video})
1✔
225
    form_import = ChapterImportForm(request.POST, user=request.user, video=video)
1✔
226
    if form_import.is_valid():
1✔
227
        return toggle_valid_form__video_chapter(request, video)
1✔
228
    else:
229
        if is_ajax(request):
×
230
            some_data_to_dump = {
×
231
                "errors": "{0}".format(_("Please correct errors.")),
232
                "form": render_to_string(
233
                    "chapter/form_chapter.html",
234
                    {
235
                        "video": video,
236
                        "form_import": form_import,
237
                        "form_chapter": form_chapter,
238
                        "csrf_token": request.COOKIES["csrftoken"],
239
                    },
240
                ),
241
            }
242
            data = json.dumps(some_data_to_dump)
×
243
            return HttpResponse(data, content_type="application/json")
×
244
        else:
245
            return render(
×
246
                request,
247
                "video_chapter.html",
248
                {
249
                    "video": video,
250
                    "list_chapter": list_chapter,
251
                    "form_chapter": form_chapter,
252
                    "form_import": form_import,
253
                },
254
            )
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

© 2026 Coveralls, Inc