def set_youku_playlist_view(request, youku_id): """ 根据youku的youku playlist属性,在优酷网上将youku对象添加到该playlist中 :param request: :param youku_id: :return: """ youku = Youku.objects.get(pk=youku_id) result = set_youku_playlist_online(youku.youku_video_id, youku.youku_playlist_id) return render_to_response('result.html', {'text': '更新playlist成功, youku_id为 ' + youku_id})
def update_youku_online_info_view(request, youku_video_id): updated_youku_video_id = update_youku_online_info(youku_video_id) youku = Youku.objects.get(youku_video_id=updated_youku_video_id) if youku.setted_youku_playlist: updated_youku_playlist_video_id = set_youku_playlist_online( youku_video_id, youku.setted_youku_playlist.id) if updated_youku_playlist_video_id: youku.youku_playlist = youku.setted_youku_playlist youku.save(update_fields=['youku_playlist']) return render_to_response('result.html', { 'text': '更新成功, 在优酷上的video id为 ' + updated_youku_video_id})
def set_youku_playlist_view(request, youku_id): """ 根据youku的youku playlist属性,在优酷网上将youku对象添加到该playlist中 :param request: :param youku_id: :return: """ youku = Youku.objects.get(pk=youku_id) result = set_youku_playlist_online(youku.youku_video_id, youku.youku_playlist_id) return render_to_response('result.html', {'text': '更新playlist成功, youku_id为 ' + youku_id})
def update_youku_online_info_view(request, youku_video_id): updated_youku_video_id = update_youku_online_info(youku_video_id) youku = Youku.objects.get(youku_video_id=updated_youku_video_id) if youku.setted_youku_playlist: updated_youku_playlist_video_id = set_youku_playlist_online( youku_video_id, youku.setted_youku_playlist.id) if updated_youku_playlist_video_id: youku.youku_playlist = youku.setted_youku_playlist youku.save(update_fields=['youku_playlist']) return render_to_response( 'result.html', {'text': '更新成功, 在优酷上的video id为 ' + updated_youku_video_id})
def save_formset(self, request, form, formset, change): """ 当Video Admin的页面保存inline对象(youku)时,如果更改了youku的playlist设置, 则在playlist_id的优酷playlist中删除youku_video_id视频, 并在优酷网上将视频添加到新设置的playlist中 同时更新youku的playlist属性的值 save_formset is called potentially many times during each add / change, once for every inline defined on your ModelAdmin. It is called by the base class implementation of save_related. form 为video的form formset是 inline对象 youku 的form :param request: :param form: :param formset: :param change: :return: """ instances = formset.save(commit=False) for obj in formset.deleted_objects: obj.delete() for instance in instances: # instance 为 youku 对象 instance.save() if "setted_youku_playlist" in formset.forms[0].changed_data: # 如果设置的setted_youku_playlist与youku_playlist不相同,则要在优酷网上将video # 从youku_playlist中删除,然后再将video添加到setted_youku_playlist中, # 最后将本地数据库中的youku_playlist设置为setted_youku_playlist setted_youku_playlist = formset.forms[0].cleaned_data["setted_youku_playlist"] origin_youku_playlist = formset.forms[0].cleaned_data["youku_playlist"] if setted_youku_playlist: if setted_youku_playlist != origin_youku_playlist: # todo 以下这段引用如果放在顶部则无法启动django server,原因未明 from video.function.youku_playlist import delete_video_from_playlist, set_youku_playlist_online # 只要改变了field['youku_playlist'],自动在playlist_id的优酷playlist # 中删除youku_video_id视频 if origin_youku_playlist: delete_video_from_playlist(instance.youku_video_id, origin_youku_playlist.id) playlist_id = set_youku_playlist_online(instance.youku_video_id, setted_youku_playlist.id) if playlist_id: instance.youku_playlist = instance.setted_youku_playlist instance.save(update_fields=["youku_playlist"]) formset.save_m2m()