Esempio n. 1
0
def get_vids_from_profile(profile_id, request):
    try:
        profile = UserProfile.objects.get(pk=profile_id)
    except UserProfile.DoesNotExist:
        return None

    user = profile.user
    user_channels = profile.channels.all().values_list('id', flat=True).distinct()
    my_videos = Video.objects.filter(Q(uploader=user) | Q(channel__id__in=user_channels)).order_by('-created')
    my_videos_count = my_videos.count()

    if my_videos:
        my_videos_list = []
        for vid in my_videos:
            if vid.channel:
                # if video is part of a channel
                # account_level of channel owner will be used
                account_level = vid.channel.owner.userprofile.account_level
            else:
                # else use account_level of uploader
                account_level = vid.uploader.userprofile.account_level

            video_dict = {}
            video_dict['video'] = vid
            video_dict['account_level'] = account_level
            check_video = is_expired(vid)
            if account_level.video_validity and not vid.youtube_embed_url:
                video_dict['expired'] = check_video
                video_dict['days_left'] = days_left(vid)
            my_videos_list.append(video_dict)

        paginator = Paginator(my_videos_list, 25)

        try:
            page = int(request.GET.get('page', '1'))
        except ValueError:
            page = 1
        # If page request (9999) is out of range, deliver last page of results.
        try:
            latest_submissions_page = paginator.page(page)
        except (EmptyPage, InvalidPage):
            latest_submissions_page = paginator.page(paginator.num_pages)

        next_page = latest_submissions_page.next_page_number()
        prev_page = latest_submissions_page.previous_page_number()
        context = {'latest_submissions_page':latest_submissions_page, 'paginator':paginator, 'next_page':next_page,
                       'prev_page':prev_page, 'my_videos_count':my_videos_count}
    else:
        context = None

    return context
Esempio n. 2
0
    def handle_noargs(self, **options):
        videos = Video.objects.all()
        notify = {}
        delete = {}
        clear_video = {}
        for video in videos:
            if video.uploader:
                if video.channel:
                    # if video is part of a channel
                    # account_level of channel owner will be used
                    account_level = video.channel.owner.userprofile.account_level
                else:
                    # else use account_level of uploader
                    account_level = video.uploader.userprofile.account_level

                if account_level.video_validity and not video.youtube_embed_url:
                    if not video.expired:
                        expired = is_expired(video)
                        if expired:
                            # Notify user
                            user_expired_vids = notify.get(
                                str(video.uploader.id), [])
                            user_expired_vids.append(video)
                            notify[str(video.uploader.id)] = user_expired_vids
                    else:
                        print 'Video has already expired! %s; slug=%s' % (
                            video, video.slug)
                        if is_deletable(video):
                            user_deleted_vids = delete.get(
                                str(video.uploader.id), [])
                            user_deleted_vids.append(video)
                            delete[str(video.uploader.id)] = user_deleted_vids
                        else:
                            print ">>> Not deletable"
                            #send_delete_warning(video)

            else:
                if not video.youtube_embed_url:
                    if not video.expiry_date:
                        expiry_date = video.created + datetime.timedelta(
                            days=DAYS_BEFORE_EXPIRATION)
                        video.expiry_date = expiry_date
                        video.save()
                    expired = days_left(video)
                    if not video.expired:
                        if expired <= 0:
                            video_status = True
                            video.expired = True
                            video.save()
                    else:
                        if is_deletable(video):
                            user_deleted_vids = delete.get('None', [])
                            user_deleted_vids.append(video)
                            delete['None'] = user_deleted_vids
                            #send_delete_warning(video)
            if video.youtube_embed_url:
                today = datetime.date.today()
                print "Checking if %s's youtube expiry, %s, has expired." % (
                    video, video.youtube_video_expiry_date)
                if video.youtube_video_expiry_date:
                    days = video.youtube_video_expiry_date.date() - today
                    print "YouTube Video Expiry Days left: %s" % days.days
                    if days.days <= 0:
                        user_clear_vids = delete.get(str(video.uploader.id),
                                                     [])
                        user_clear_vids.append(video)
                        clear_video[str(video.uploader.id)] = user_clear_vids

        print "List of videos to notify users about expiration:"
        print notify
        print "List of videos to notify users about deletion:"
        print delete

        # Send actual notifications here

        print "Expiring videos"
        # For expiring videos
        for user, vids in notify.items():
            print user, vids
            uploader = User.objects.get(id=int(user))
            expired_video_names = "".join([v.title + "\n\t" for v in vids])
            print "Expired video names:"
            print expired_video_names

            message = \
"""
Hello %(username)s,

    You have videos expiring today, %(now)s!

        %(expired_video_names)s

    Other users and you won't be able to view the video from %(site)s, but you will have an option to download it or send it to Youtube for another 30 days.
    However after the 30 days it will be deleted from the site.


Thanks,

-------------------------
%(site)s Team
""" % \
            ({'expired_video_names': expired_video_names,
              'now': datetime.date.today().isoformat(),
              'username': uploader.username,
              'site': SITE,})

            send_mail('%s: Video Expired' % SITE,
                      message,
                      "no-reply@%s.com" % SITE.lower(), [uploader.email],
                      fail_silently=False)
            print 'Email Sent to username: %s! %s has expired.' % (
                uploader, expired_video_names)

        print "Videos to delete"
        # For videos to delete
        for user2, vids2 in delete.items():
            print user2, vids2
            deletable_video_names = "".join([v.title + "\n\t" for v in vids2])
            print "Deletable video names:"
            print deletable_video_names
            # Delete the actual videos
            print vids2
            for v in vids2:
                v.delete()
                print "Permanently deleted: ", v.title

            #Handles old videos with uploader are set to None
            if not user2 == 'None':
                uploader = User.objects.get(id=int(user2))
                message = \
"""
Hello %(username)s,

    The following videos have been deleted from %(site)s today, %(now)s!

        %(deletable_video_names)s

    The video has already exceeded the allowable time it would be stored on %(site)s.com, for further info contact us.


Thanks,

-------------------------
%(site)s Team
""" % \
            ({'username': uploader.username,
                'now': datetime.date.today().isoformat(),
                'deletable_video_names': deletable_video_names,
                'site': SITE,})

                send_mail('%s: Video Deleted' % SITE,
                          message,
                          "no-reply@%s.com" % SITE.lower(), [uploader.email],
                          fail_silently=False)

        for user3, vids3 in clear_video.items():
            print user3, vids3
            uploader = User.objects.get(id=int(user3))
            clear_videoupload_names = "".join(
                [vid3.title + "\n\t" for vid3 in vids3])
            print "Deletable video files:"
            print clear_videoupload_names
            # Delete the videofiles
            for vid3 in vids3:
                try:
                    delete_videoupload(vid3)
                    vid3.youtube_video_expiry_date = None
                    vid3.save()
                    print "Deleted video file on server: ", vid3.title
                    message = \
"""
Hello %(username)s,

    The following videos have been deleted from %(site)s today, %(now)s!

        %(deletable_video_names)s

    The video has already exceeded the allowable time it would be stored on %(site)s.com, for further info contact us.


Thanks,

-------------------------
%(site)s Team
""" % \
                    ({'username': uploader.username,
                      'now': datetime.date.today().isoformat(),
                      'deletable_video_names': clear_videoupload_names,
                      'site': SITE,})

                    send_mail('%s: Video Deleted' % SITE,
                              message,
                              "no-reply@%s.com" % SITE.lower(),
                              [uploader.email],
                              fail_silently=False)
                    print "Email Sent to %s" % uploader.username
                except os.error:
                    print 'ERROR when deleting'
Esempio n. 3
0
    def handle_noargs(self, **options):
        videos = Video.objects.all()
        notify = {}
        delete = {}
        clear_video = {}
        for video in videos:
            if video.uploader:
                if video.channel:
                    # if video is part of a channel
                    # account_level of channel owner will be used
                    account_level = video.channel.owner.userprofile.account_level
                else:
                    # else use account_level of uploader
                    account_level = video.uploader.userprofile.account_level

                if account_level.video_validity and not video.youtube_embed_url:
                    if not video.expired:
                        expired = is_expired(video)
                        if expired:
                            # Notify user
                            user_expired_vids = notify.get(str(video.uploader.id), [])
                            user_expired_vids.append(video)
                            notify[str(video.uploader.id)] = user_expired_vids
                    else:
                        print 'Video has already expired! %s; slug=%s' % (video, video.slug)
                        if is_deletable(video):
                            user_deleted_vids = delete.get(str(video.uploader.id), [])
                            user_deleted_vids.append(video)
                            delete[str(video.uploader.id)] = user_deleted_vids
                        else:
                            print ">>> Not deletable"
                            #send_delete_warning(video)
                            
            else:
                if not video.youtube_embed_url:
                    if not video.expiry_date:
                        expiry_date = video.created + datetime.timedelta(days=DAYS_BEFORE_EXPIRATION)
                        video.expiry_date = expiry_date
                        video.save()
                    expired = days_left(video)
                    if not video.expired:
                        if expired <= 0:
                            video_status = True
                            video.expired = True
                            video.save()
                    else:
                        if is_deletable(video):
                            user_deleted_vids = delete.get('None', [])
                            user_deleted_vids.append(video)
                            delete['None'] = user_deleted_vids
                            #send_delete_warning(video)
            if video.youtube_embed_url:
                today = datetime.date.today()
                print "Checking if %s's youtube expiry, %s, has expired." % (video, video.youtube_video_expiry_date)
                if video.youtube_video_expiry_date:
                    days = video.youtube_video_expiry_date.date() - today
                    print "YouTube Video Expiry Days left: %s" % days.days
                    if days.days <= 0:
                        user_clear_vids = delete.get(str(video.uploader.id), [])
                        user_clear_vids.append(video)
                        clear_video [str(video.uploader.id)] = user_clear_vids

        print "List of videos to notify users about expiration:"
        print notify
        print "List of videos to notify users about deletion:"
        print delete

        # Send actual notifications here

        print "Expiring videos"
        # For expiring videos
        for user, vids in notify.items():
            print user, vids
            uploader = User.objects.get(id=int(user))
            expired_video_names = "".join([v.title + "\n\t" for v in vids])
            print "Expired video names:"
            print expired_video_names

            message = \
"""
Hello %(username)s,

    You have videos expiring today, %(now)s!

        %(expired_video_names)s

    Other users and you won't be able to view the video from %(site)s, but you will have an option to download it or send it to Youtube for another 30 days.
    However after the 30 days it will be deleted from the site.


Thanks,

-------------------------
%(site)s Team
""" % \
            ({'expired_video_names': expired_video_names,
              'now': datetime.date.today().isoformat(),
              'username': uploader.username,
              'site': SITE,})

            send_mail('%s: Video Expired' % SITE,
                      message,
                      "no-reply@%s.com" % SITE.lower(),
                      [uploader.email], fail_silently=False)
            print 'Email Sent to username: %s! %s has expired.' % (uploader, expired_video_names)

        print "Videos to delete"
        # For videos to delete
        for user2, vids2 in delete.items():
            print user2, vids2
            deletable_video_names = "".join([v.title + "\n\t" for v in vids2])
            print "Deletable video names:"
            print deletable_video_names
            # Delete the actual videos
            print vids2
            for v in vids2:
                v.delete()
                print "Permanently deleted: ", v.title

            #Handles old videos with uploader are set to None
            if not user2 == 'None':
                uploader = User.objects.get(id=int(user2))
                message = \
"""
Hello %(username)s,

    The following videos have been deleted from %(site)s today, %(now)s!

        %(deletable_video_names)s

    The video has already exceeded the allowable time it would be stored on %(site)s.com, for further info contact us.


Thanks,

-------------------------
%(site)s Team
""" % \
            ({'username': uploader.username,
              'now': datetime.date.today().isoformat(),
              'deletable_video_names': deletable_video_names,
              'site': SITE,})

                send_mail('%s: Video Deleted' % SITE,
                      message,
                      "no-reply@%s.com" % SITE.lower(),
                      [uploader.email], fail_silently=False)

        for user3, vids3 in clear_video.items():
            print user3, vids3
            uploader = User.objects.get(id=int(user3))
            clear_videoupload_names = "".join([vid3.title + "\n\t" for vid3 in vids3])
            print "Deletable video files:"
            print clear_videoupload_names
            # Delete the videofiles
            for vid3 in vids3:
                try:
                    delete_videoupload(vid3)
                    vid3.youtube_video_expiry_date = None
                    vid3.save()
                    print "Deleted video file on server: ", vid3.title
                    message = \
"""
Hello %(username)s,

    The following videos have been deleted from %(site)s today, %(now)s!

        %(deletable_video_names)s

    The video has already exceeded the allowable time it would be stored on %(site)s.com, for further info contact us.


Thanks,

-------------------------
%(site)s Team
""" % \
                    ({'username': uploader.username,
                      'now': datetime.date.today().isoformat(),
                      'deletable_video_names': clear_videoupload_names,
                      'site': SITE,})

                    send_mail('%s: Video Deleted' % SITE,
                              message,
                              "no-reply@%s.com" % SITE.lower(),
                              [uploader.email], fail_silently=False)
                    print "Email Sent to %s" % uploader.username
                except os.error:
                    print 'ERROR when deleting'