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)
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)
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)
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)
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( )
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)
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)