def _set_version_moderation_status(version, team, user, status, updates_meta=True): if not user_can_moderate(version.language.video, user): raise SuspiciousOperation("User cannot approve this version") version.moderation_status = status version.save() if updates_meta: video_cache.invalidate_cache(version.video.video_id) _update_search_index(version.video) return version
def add_moderation( video, team, user): """ Adds moderation and approves all """ if video.moderated_by : raise AlreadyModeratedException("Video is already moderated") if not team.can_add_moderation(user) : raise SuspiciousOperation("User cannot set this video as moderated") video.moderated_by = team video.save() SubtitleVersion.objects.filter(language__video__id = video.pk, moderation_status=UNMODERATED).update(moderation_status=APPROVED) video_cache.invalidate_cache(video.video_id) _update_search_index(video) return True
def remove_moderation( video, team, user): """ Removes the moderation lock for that video, sets all the sub versions to approved , invalidates the cache and updates the search index. """ if not video.moderated_by: return None if not team.can_remove_moderation( user) : raise SuspiciousOperation("User cannot unset this video as moderated") for lang in video.subtitlelanguage_set.all(): latest = lang.latest_version(public_only=False) if latest and latest.moderation_status == REJECTED: # rollback to the last moderated status latest_approved = lang.latest_version(public_only=Tue) v = latest_approved.rollback(user) v.save() num = SubtitleVersion.objects.filter(language__video=video).update(moderation_status=UNMODERATED) video.moderated_by = None; video.save() video_cache.invalidate_cache(video.video_id) _update_search_index(video) return num