Пример #1
0
def set_video_not_appropriate(request):
    if request.method == 'POST':
        try:
            args = {}
            args.update(csrf(request))
            relevant = request.POST['relevant']
            level = request.POST['level']
            video_id = request.POST['video_id']

            Survey.objects.update_or_create(
                video_id=video_id, userId=request.user.id,
                defaults={'relevant': relevant,
                          'level': level,
                          'userId': request.user.id,
                          'mistakes': None,
                          'presentation': None,
                          'informative': None,
                          'quality': None})

            video = Video.objects.filter(idvideo=video_id).first()
            video.available = '1'
            video.save()

            return HttpResponse(status=200)
        except Exception as e:
            logger.exception(str(e))
            return HttpResponse(status=500)
    else:
        return HttpResponse("Failed to receive results appropriate", status=400)
Пример #2
0
def set_video_survey_result(request):
    if request.method == 'POST':
        try:
            args = {}
            args.update(csrf(request))
            mistakes = request.POST['mistakes']
            presentation = request.POST['presentation']
            informative = request.POST['informative']
            quality = request.POST['quality']
            video_id = request.POST['video_id']

            Survey.objects.update_or_create(
                video_id=video_id, userId=request.user.id,
                defaults={'relevant': '1',
                          'level': 'school',
                          'userId': request.user.id,
                          'mistakes': mistakes,
                          'presentation': presentation,
                          'informative': informative,
                          'quality': quality})

            video = Video.objects.filter(idvideo=video_id).first()
            video.available = '1'
            video.save()

            return HttpResponse(status=200)
        except Exception as e:
            logger.exception("Failed to receive survey results", str(e))
            return HttpResponse(status=500)
    else:
        return HttpResponse(status=400)
Пример #3
0
def get_subtopic(request):
    if request.method == 'GET':
        try:
            data = serializers.serialize('json', Subtopic.objects.filter(topicid=request.GET['idtopic']))
            response = HttpResponse()
            response['Content-Type'] = "text/javascript"
            response.write(data)
            return response
        except Exception as e:
            logger.exception("Failed to get subtopics:" + str(e))
            return HttpResponse(status=500)
    else:
        return HttpResponse(status=404)
Пример #4
0
def updateFeed(request):
    current_user = request.user
    pattern = re.compile( r'\'(http://[^\'\"]+\.jpe?g)\'' )

    subscriptions = UsersSubscriptions.objects.filter( User=current_user )

    for _subscription in subscriptions:
        feed_items_Urls = []
        sub_id = _subscription.Subscription_id
        items = SubscriptionItem.objects.filter(Subscription_id=sub_id  )
        sub = Subscription.objects.get( id=sub_id )
        for item in items:
            feed_items_Urls.append( item.ImageUrl )

        feed = feedparser.parse( sub.Address )
        for rss_item in feed.entries:
            try:
                published_date = parser.parse( rss_item.published )
                # Text rss_item representation for regexp search
                text = str( rss_item )
                img_url = pattern.search( str( text ) ).group( 1 )
                # Image is very small
                if int( get_image_size( img_url ) ) < 100000:
                    continue
                # Image older, than subscription.
                if _subscription.AddedDate.date() > published_date.date():
                    continue
                # Image already exists
                if any( x == img_url for x in feed_items_Urls ):
                    continue
                else:
                    feedItem = SubscriptionItem( )
                    feedItem.Subscription = sub
                    feedItem.AddedDate = published_date
                    feedItem.ImageUrl = img_url
                    feedItem.Url = rss_item.link
                    feedItem.Description = rss_item['description']
                    feedItem.save( )
                    feed_items_Urls.append( feedItem.ImageUrl )
            except AttributeError:
                continue
            except Exception as e:
                logger.exception( e.__context__ )
                continue
        sub.LastUpdateDate = timezone.now()
        sub.save( )
    return HttpResponse(status=200)
Пример #5
0
def run_task():
    feed_items_list = []
    pattern = re.compile( r'\'(http://[^\'\"]+\.jpe?g)\'' )

    subscriptions = UsersSubscriptions.objects.all()

    for _subscription in subscriptions:
        added_date = _subscription.AddedDate
        sub_id = _subscription.Subscription_id
        result_query = (Q( Subscription_id=sub_id ) & Q( AddedDate__gte=added_date ))
        items = SubscriptionItem.objects.filter( result_query )
        sub = Subscription.objects.get( id=sub_id )
        for item in items:
            feed_items_list.append( item )

        feed = feedparser.parse( sub.Address )
        for rss_item in feed.entries:
            try:
                # Text rss_item representation for regexp search
                text = str( rss_item )
                img_url = pattern.search( str( text ) ).group( 1 )
                # Image is very small
                r = requests.head( img_url )
                if int(r.headers['content-length']) < 100000:
                    continue
                # Image older, than subscription.
                # if _subscription.AddedDate > datetime.datetime.strptime(rss_item.published, "%d %m %Y"):
                #    continue
                # Image already exists
                if any( x.ImageUrl == img_url for x in feed_items_list ):
                    continue
                else:
                    feedItem = SubscriptionItem( )
                    feedItem.Subscription = sub
                    feedItem.AddedDate = parser.parse( rss_item.published )
                    feedItem.ImageUrl = img_url
                    feedItem.Url = rss_item.link
                    feedItem.Description = rss_item['description']
                    feedItem.save( )
                    feed_items_list.append( feedItem )
            except AttributeError:
                continue
            except Exception as e:
                logger.exception( e.__context__ )
                continue
        sub.LastUpdateDate = datetime.datetime.now( )
        sub.save( )
Пример #6
0
def set_video_not_available(request):
    if request.method == 'POST':
        try:
            args = {}
            args.update(csrf(request))
            video_id = request.POST['video_id']

            video = Video.objects.filter(idvideo=video_id).first()
            video.available = '0'
            video.save()

            return HttpResponse(status=200)
        except Exception as e:
            logger.exception(str(e))
            return HttpResponse(status=500)
    else:
        return HttpResponse("Failed to receive results video unavailable", status=400)
Пример #7
0
def get_video(request):
    if request.method == 'GET':
        try:
            user_id = request.user.id
            user_answered_survey = Count('survey', filter=Q(survey__userId=user_id))
            # TODO get number of surveys from survey table and write to video table
            video = Video.objects\
                .filter(idvideo=request.GET['idvideo'])\
                .annotate(num_surveys=Count('survey')) \
                .annotate(user_answered_survey=user_answered_survey) \
                .values()

            data = json.dumps(list(video), cls=DjangoJSONEncoder)
            response = HttpResponse()
            response['Content-Type'] = "text/javascript"
            response.write(data)
            return response
        except Exception as e:
            logger.exception("Failed to get videos" + str(e))
            return HttpResponse(status=500)
    else:
        return HttpResponse(status=400)