def rating_get(request): user = request.user success = False errors = {} data = None url = request.GET.get("url") domain = url_domain(url) errors["rating"] = [] data = {"url":url,"domain":domain} domain,_ = Domain.objects.get_or_create(url=domain) page,_ = Page.objects.get_or_create(url=url,domain=domain) try: rating = Ratings.objects.get(user=user,page=page) data["score"] = rating.score data["domain_score"] = 0 success = True except Ratings.DoesNotExist: errors["rating"].append("Rating does not exist") return { "success": success, "errors": errors, "data": data }
def active(request): url = request.GET.get('url', '') domain = url_domain(url) timestamp = timezone.now() - datetime.timedelta(days=7) used_users = [] active_users = [] active_dusers = [] eyehists = EyeHistory.objects.filter( (Q(url=url) | Q(domain=domain)) & Q(start_time__gt=timestamp) & ~Q(user_id=request.user.id)).order_by('-end_time').select_related() for eyehist in eyehists: if len(used_users) >= 6: break user = eyehist.user if user not in used_users: old_level = 3 if eyehist.end_time > \ (timezone.now() - datetime.timedelta(minutes=5)): old_level = 0 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=1)): old_level = 1 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=24)): old_level = 2 if url == eyehist.url: active_users.append({ 'username': user.username, 'pic_url': gravatar_for_user(user), 'resourceURI': '%s/users/%s' % (BASE_URL, user.username), 'old_level': old_level, 'time_ago': humanize_time(timezone.now() - eyehist.end_time) }) else: active_dusers.append({ 'username': user.username, 'pic_url': gravatar_for_user(user), 'resourceURI': '%s/users/%s' % (BASE_URL, user.username), 'old_level': old_level, 'time_ago': humanize_time(timezone.now() - eyehist.end_time) }) used_users.append(user) return {'result': {'page': active_users, 'domain': active_dusers}}
def stats(request): url = request.GET.get('url', '') my_user = get_object_or_404(User, username=request.user.username) my_visits = EyeHistory.objects.filter(user=my_user, url=url) my_count, my_time = get_stats(my_visits) total_visits = EyeHistory.objects.filter(url=url) total_count, total_time = get_stats(total_visits) domain = url_domain(url) my_dvisits = EyeHistory.objects.filter(user=my_user, domain=domain) my_dcount, my_dtime = get_stats(my_dvisits) total_dvisits = EyeHistory.objects.filter(domain=domain) total_dcount, total_dtime = get_stats(total_dvisits) res = { 'my_count': my_count, 'my_time': my_time, 'total_count': total_count, 'total_time': total_time, 'my_dcount': my_dcount, 'my_dtime': my_dtime, 'total_dcount': total_dcount, 'total_dtime': total_dtime, } return {'result': res}
def stats(request): url = request.GET.get("url", '') my_user = get_object_or_404(User, username=request.user.username) my_visits = EyeHistory.objects.filter(user=my_user, url=url) my_count, my_time = get_stats(my_visits) total_visits = EyeHistory.objects.filter(url=url) total_count, total_time = get_stats(total_visits) domain = url_domain(url) my_dvisits = EyeHistory.objects.filter(user=my_user, domain=domain) my_dcount, my_dtime = get_stats(my_dvisits) total_dvisits = EyeHistory.objects.filter(domain=domain) total_dcount, total_dtime = get_stats(total_dvisits) res = {'my_count': my_count, 'my_time': my_time, 'total_count': total_count, 'total_time': total_time, 'my_dcount': my_dcount, 'my_dtime': my_dtime, 'total_dcount': total_dcount, 'total_dtime': total_dtime, } return {'result': res}
def active(request): url = request.GET.get('url', '') domain = url_domain(url) timestamp = timezone.now() - datetime.timedelta(days=7) used_users = [] active_users = [] active_dusers = [] eyehists = EyeHistory.objects.filter( (Q(url=url) | Q(domain=domain)) & Q(start_time__gt=timestamp) & ~Q(user_id=request.user.id) ).order_by('-end_time').select_related() for eyehist in eyehists: if len(used_users) >= 6: break user = eyehist.user if user not in used_users: old_level = 3 if eyehist.end_time > \ (timezone.now() - datetime.timedelta(minutes=5)): old_level = 0 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=1)): old_level = 1 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=24)): old_level = 2 if url == eyehist.url: active_users.append({'username': user.username, 'pic_url': gravatar_for_user(user), 'resourceURI': '%s/users/%s' % (BASE_URL, user.username), 'old_level': old_level, 'time_ago': humanize_time( timezone.now() - eyehist.end_time) }) else: active_dusers.append({'username': user.username, 'pic_url': gravatar_for_user(user), 'resourceURI': '%s/users/%s' % (BASE_URL, user.username), 'old_level': old_level, 'time_ago': humanize_time( timezone.now() - eyehist.end_time) }) used_users.append(user) return { 'result': { 'page': active_users, 'domain': active_dusers } }
def obj_create(self, bundle, request=None, **kwargs): url = bundle.data['url'] domain = url_domain(url) bundle.data["domain"] = domain title = bundle.data['title'] start_time = bundle.data['start_time'] start_event = bundle.data['start_event'] end_time = bundle.data['end_time'] end_event = bundle.data['end_event'] favIconUrl = bundle.data.get('favIconUrl') src = bundle.data['src'] end_time = datetime.datetime.strptime(end_time, '%Y-%m-%dT%H:%M:%S.%fZ').replace(tzinfo=pytz.utc) start_time = datetime.datetime.strptime(start_time, '%Y-%m-%dT%H:%M:%S.%fZ').replace(tzinfo=pytz.utc) message = bundle.data.get('message') if message and message.strip() == '': message = None if message: bundle.data.pop('message', None) try: exists = EyeHistory.objects.filter(user=request.user, url=url, title=title, src=src, favIconUrl=favIconUrl, start_time__gt=start_time-datetime.timedelta(minutes=1), start_event=start_event) if exists.count() > 0: eye_his = exists[0] eye_his.end_time = end_time eye_his.end_event = end_event elapsed_time = end_time - start_time eye_his.total_time = int(round((elapsed_time.microseconds / 1.0E3) + (elapsed_time.seconds * 1000) + (elapsed_time.days * 8.64E7))) eye_his.humanize_time = humanize_time(elapsed_time) eye_his.save() if message: eye_message, created = EyeHistoryMessage.objects.get_or_create(eyehistory=eye_his, message=message) else: # save_raw_eyehistory(request.user, url, title, start_event, end_event, start_time, end_time, src, domain, favIconUrl) dup_histories = EyeHistory.objects.filter(user=request.user, url=url, title=title, end_time__gt=start_time-datetime.timedelta(minutes=5)) if dup_histories.count() > 0: obj = merge_histories(dup_histories, end_time, end_event) if message: eye_message, created = EyeHistoryMessage.objects.get_or_create(eyehistory=obj, message=message) else: bundle_res = super(EyeHistoryResource, self).obj_create(bundle, request, user=request.user, **kwargs) if message: eye_message, created = EyeHistoryMessage.objects.get_or_create(eyehistory=bundle_res.obj, message=message) return bundle_res; except Exception, e: logger.exception(e)
def handle(self, **options): self.stdout.write('Beginning update...\n') history = EyeHistory.objects.all() count = 0 for h in history: if not count % 100: self.stdout.write('Updated %s \n' % count) h.domain = url_domain(h.url) h.save() count += 1 self.stdout.write('Update complete.\n')
def stats(request): url = request.GET.get('url', '') my_user = get_object_or_404(User, username=request.user.username) my_visits = EyeHistory.objects.filter(user=my_user, url=url) my_count, my_time = get_stats(my_visits) total_visits = EyeHistory.objects.filter(url=url) total_count, total_time = get_stats(total_visits) domain = url_domain(url) my_dvisits = EyeHistory.objects.filter(user=my_user, domain=domain) my_dcount, my_dtime = get_stats(my_dvisits) total_dvisits = EyeHistory.objects.filter(domain=domain) total_dcount, total_dtime = get_stats(total_dvisits) domain,_ = Domain.objects.get_or_create(url=domain) page,_ = Page.objects.get_or_create(url=url,domain=domain) domain_score = domain.agg_score score = 0 error = "Success" try: rating = Ratings.objects.get(user=my_user,page=page) score = rating.score except Ratings.DoesNotExist: error = "Failure: Rating does not exist" res = {'my_count': my_count, 'my_time': my_time, 'total_count': total_count, 'total_time': total_time, 'my_dcount': my_dcount, 'my_dtime': my_dtime, 'total_dcount': total_dcount, 'total_dtime': total_dtime, 'score': score, 'domain_score': domain_score } return { 'result': res }
def rating_get(request): user = request.user success = False errors = {} data = None url = request.GET.get("url") domain = url_domain(url) errors["rating"] = [] data = {"url": url, "domain": domain} domain, _ = Domain.objects.get_or_create(url=domain) page, _ = Page.objects.get_or_create(url=url, domain=domain) try: rating = Ratings.objects.get(user=user, page=page) data["score"] = rating.score data["domain_score"] = 0 success = True except Ratings.DoesNotExist: errors["rating"].append("Rating does not exist") return {"success": success, "errors": errors, "data": data}
def bubble_info(request): url = request.POST.get('url', '') domain = url_domain(url) timestamp = timezone.now() - datetime.timedelta(days=7) used_users = [] active = [] followers = User.objects.filter(userprofile__followed_by=request.user) eyehists = EyeHistory.objects.filter( (Q(url=url) | Q(domain=domain)) & Q(start_time__gt=timestamp) & ~Q(user_id=request.user.id)).order_by('-end_time').select_related() for eyehist in eyehists: if len(active) >= 6: break user = eyehist.user if user not in used_users and user in followers: old_level = 3 if eyehist.end_time > \ (timezone.now() - datetime.timedelta(minutes=5)): old_level = 0 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=1)): old_level = 1 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=24)): old_level = 2 url_level = "site-level" if eyehist.url == url: url_level = "page-level" active.append({ 'username': user.username, 'pic_url': gravatar_for_user(user), 'url': '%s/users/%s' % (BASE_URL, user.username), 'old_level': old_level, 'url_level': url_level, 'time_ago': humanize_time(timezone.now() - eyehist.end_time) }) used_users.append(user) messages = EyeHistoryMessage.objects.filter( Q(eyehistory__url=url) & Q(post_time__gt=timestamp)).order_by('-post_time').select_related() about_message = None user_url = None username = None message = None for m in messages: if m.eyehistory.user in followers: message = m.message about_message = humanize_time(timezone.now() - m.post_time) + ' ago' user_url = '%s/users/%s' % (BASE_URL, m.eyehistory.user.username) username = m.eyehistory.user.username break if not about_message: chat_messages = ChatMessage.objects.filter( url=url).order_by('-date').select_related() for c in chat_messages: if c.author in followers: about_message = humanize_time(timezone.now() - c.date) + ' ago' message = '"%s"' % (c.message) user_url = '%s/users/%s' % (BASE_URL, c.author.username) username = c.author.username break if not about_message: about_message = '' message = '' return JSONResponse({ 'url': url, 'active_users': active, 'message': message, 'about_message': about_message, 'user_url': user_url, 'username': username, })
def obj_create(self, bundle, request=None, **kwargs): url = bundle.data['url'] domain = url_domain(url) bundle.data['domain'] = domain title = bundle.data['title'] start_time = bundle.data['start_time'] start_event = bundle.data['start_event'] end_time = bundle.data['end_time'] end_event = bundle.data['end_event'] favicon_url = bundle.data.get('favIconUrl') bundle.data['favicon_url'] = favicon_url src = bundle.data['src'] end_time = datetime.datetime.strptime( end_time, '%Y-%m-%dT%H:%M:%S.%fZ').replace(tzinfo=pytz.utc) start_time = datetime.datetime.strptime( start_time, '%Y-%m-%dT%H:%M:%S.%fZ').replace(tzinfo=pytz.utc) message = bundle.data.get('message') if message and message.strip() == '': message = None if message: bundle.data.pop('message', None) try: exists = EyeHistory.objects.filter(user=request.user, url=url, title=title, src=src, favicon_url=favicon_url, start_time__gt=start_time - datetime.timedelta(minutes=1), start_event=start_event) if exists.count() > 0: eye_his = exists[0] eye_his.end_time = end_time eye_his.end_event = end_event elapsed_time = end_time - start_time eye_his.total_time = int( round((elapsed_time.microseconds / 1.0E3) + (elapsed_time.seconds * 1000) + (elapsed_time.days * 8.64E7))) eye_his.humanize_time = humanize_time(elapsed_time) eye_his.save() if message: eye_message, _ = EyeHistoryMessage.objects.get_or_create( eyehistory=eye_his, message=message) notify_message(message=eye_message) else: # save_raw_eyehistory(request.user, url, title, start_event, end_event, start_time, end_time, src, domain, favicon_url) dup_histories = EyeHistory.objects.filter( user=request.user, url=url, title=title, end_time__gt=start_time - datetime.timedelta(minutes=5)) if dup_histories.count() > 0: obj = merge_histories(dup_histories, end_time, end_event) if message: eye_message, _ = EyeHistoryMessage.objects.get_or_create( eyehistory=obj, message=message) notify_message(message=eye_message) else: bundle_res = super(EyeHistoryResource, self).obj_create(bundle, request, user=request.user, **kwargs) check_bumps(request.user, start_time, end_time, url) if message: eye_message, _ = EyeHistoryMessage.objects.get_or_create( eyehistory=bundle_res.obj, message=message) notify_message(message=eye_message) return bundle_res except MultipleObjectsReturned as e: logger.info(e) # multiple items created, delete duplicates call_command('remove_duplicate_history') return bundle
def obj_create(self, bundle, request=None, **kwargs): url = bundle.data['url'] domain = url_domain(url) bundle.data['domain'] = domain title = bundle.data.get('title') start_time = bundle.data.get('start_time') start_event = bundle.data.get('start_event') end_time = bundle.data.get('end_time') end_event = bundle.data.get('end_event') favicon_url = bundle.data.get('favIconUrl') bundle.data['favicon_url'] = favicon_url src = bundle.data.get('src') tags = bundle.data.get('tags') if tags: tags = json.loads(tags); if end_time and start_time: end_time = datetime.datetime.strptime( end_time, '%Y-%m-%dT%H:%M:%S.%fZ').replace(tzinfo=pytz.utc) start_time = datetime.datetime.strptime( start_time, '%Y-%m-%dT%H:%M:%S.%fZ').replace(tzinfo=pytz.utc) else: end_time = datetime.datetime.now().replace(tzinfo=pytz.utc) start_time = datetime.datetime.now().replace(tzinfo=pytz.utc) message = bundle.data.get('message') highlight = bundle.data.get('highlight') parent_comment = bundle.data.get('parent_comment') if message and message.strip() == '': message = None if message: bundle.data.pop('message', None) if highlight: bundle.data.pop('highlight', None) if parent_comment: bundle.data.pop('parent_comment', None) try: exists = EyeHistory.objects.filter(user=request.user, url=url, title=title, src=src, favicon_url=favicon_url, start_time__gt=start_time - datetime.timedelta(minutes=1), start_event=start_event) if exists.count() > 0: eye_his = exists[0] eye_his.end_time = end_time eye_his.end_event = end_event elapsed_time = end_time - start_time eye_his.total_time = int(round( (elapsed_time.microseconds / 1.0E3) + (elapsed_time.seconds * 1000) + (elapsed_time.days * 8.64E7))) eye_his.humanize_time = humanize_time(elapsed_time) eye_his.save() if message: eye_message, _ = EyeHistoryMessage.objects.get_or_create( eyehistory=eye_his, message=message) notify_message(message=eye_message) else: # save_raw_eyehistory(request.user, url, title, start_event, end_event, start_time, end_time, src, domain, favicon_url) dup_histories = EyeHistory.objects.filter( user=request.user, url=url, title=title, end_time__gt=start_time - datetime.timedelta(minutes=5)) if dup_histories.count() > 0: obj = merge_histories(dup_histories, end_time, end_event) if message: eye_message, _ = EyeHistoryMessage.objects.get_or_create( eyehistory=obj, message=message) notify_message(message=eye_message) else: bundle_res = super(EyeHistoryResource, self).obj_create( bundle, request, user=request.user, **kwargs) check_bumps(request.user, start_time, end_time, url) if message: eye_message = None if parent_comment: h = Highlight.objects.get(id=highlight) eye_message, _ = EyeHistoryMessage.objects.get_or_create( eyehistory=bundle_res.obj, message=message, highlight=h, parent_comment=parent_comment) elif highlight: h = Highlight.objects.get(id=highlight) eye_message, _ = EyeHistoryMessage.objects.get_or_create( eyehistory=bundle_res.obj, message=message, highlight=h) else: eye_message, _ = EyeHistoryMessage.objects.get_or_create( eyehistory=bundle_res.obj, message=message) if tags: for tag in tags: if len(Tag.objects.filter(comment=eye_message, common_tag__name=tag)) == 0: try: common_tag = CommonTag.objects.get(name=tag) vt = Tag( common_tag=common_tag, user=request.user, comment=eye_message, ) vt.save() except CommonTag.DoesNotExist: pass notify_message(message=eye_message) return bundle_res except MultipleObjectsReturned as e: logger.info(e) # multiple items created, delete duplicates call_command('remove_duplicate_history') return bundle
def get_info(request): url = request.GET.get("url") domain = url_domain(url) timestamp = timezone.now() - datetime.timedelta(days=7) used_users = [] active = [] eyehists = EyeHistory.objects.filter((Q(url=url) | Q(domain=domain)) & Q(start_time__gt=timestamp) & ~Q(user_id=request.user.id)).order_by('-end_time').select_related() for eyehist in eyehists: if len(active) >= 6: break user = eyehist.user if user not in used_users: old_level = 3 if eyehist.end_time > (timezone.now() - datetime.timedelta(minutes=5)): old_level = 0 elif eyehist.end_time > (timezone.now() - datetime.timedelta(hours=1)): old_level = 1 elif eyehist.end_time > (timezone.now() - datetime.timedelta(hours=24)): old_level = 2 active.append({'username': user.username, 'pic_url': gravatar_for_user(user), 'url': '%s/users/%s' % (BASE_URL,user.username), 'old_level': old_level, 'time_ago': humanize_time(timezone.now()-eyehist.end_time) }) used_users.append(user) message = EyeHistoryMessage.objects.filter(eyehistory__url=url).select_related() about_message = None user_url = None username = None if message: about_message = humanize_time(timezone.now() - message[0].post_time) + ' ago' message = message[0].message if not about_message: chat_message = ChatMessage.objects.filter(url=url).select_related() if chat_message: about_message = humanize_time(timezone.now() - chat_message[0].date) + ' ago' message = '"%s"' % (chat_message[0].message) user_url = '%s/users/%s' % (BASE_URL,chat_message[0].author.username) username = chat_message[0].author.username if not about_message: about_message = '' message = '' return { 'url' : url, 'active_users': active, 'message': message, 'about_message': about_message, 'user_url': user_url, 'username': username, }
def bubble_info(request): url = request.POST.get('url', '') domain = url_domain(url) timestamp = timezone.now() - datetime.timedelta(days=7) used_users = [] active = [] followers = User.objects.filter(userprofile__followed_by=request.user) eyehists = EyeHistory.objects.filter(( Q(url=url) | Q(domain=domain)) & Q(start_time__gt=timestamp) & ~Q(user_id=request.user.id) ).order_by('-end_time').select_related() for eyehist in eyehists: if len(active) >= 6: break user = eyehist.user if user not in used_users and user in followers: old_level = 3 if eyehist.end_time > \ (timezone.now() - datetime.timedelta(minutes=5)): old_level = 0 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=1)): old_level = 1 elif eyehist.end_time > \ (timezone.now() - datetime.timedelta(hours=24)): old_level = 2 url_level = "site-level" if eyehist.url == url: url_level = "page-level" active.append({'username': user.username, 'pic_url': gravatar_for_user(user), 'url': '%s/users/%s' % (BASE_URL, user.username), 'old_level': old_level, 'url_level': url_level, 'time_ago': humanize_time( timezone.now() - eyehist.end_time) }) used_users.append(user) messages = EyeHistoryMessage.objects.filter( Q(eyehistory__url=url) & Q(post_time__gt=timestamp) ).order_by('-post_time').select_related() about_message = None user_url = None username = None message = None for m in messages: if m.eyehistory.user in followers: message = m.message about_message = humanize_time( timezone.now() - m.post_time) + ' ago' user_url = '%s/users/%s' % (BASE_URL, m.eyehistory.user.username) username = m.eyehistory.user.username break if not about_message: chat_messages = ChatMessage.objects.filter( url=url).order_by('-date').select_related() for c in chat_messages: if c.author in followers: about_message = humanize_time(timezone.now() - c.date) + ' ago' message = '"%s"' % (c.message) user_url = '%s/users/%s' % (BASE_URL, c.author.username) username = c.author.username break if not about_message: about_message = '' message = '' return JSONResponse({ 'url': url, 'active_users': active, 'message': message, 'about_message': about_message, 'user_url': user_url, 'username': username, })
def get_info(request): url = request.GET.get("url") domain = url_domain(url) timestamp = timezone.now() - datetime.timedelta(days=7) used_users = [] active = [] eyehists = EyeHistory.objects.filter( (Q(url=url) | Q(domain=domain)) & Q(start_time__gt=timestamp) & ~Q(user_id=request.user.id)).order_by('-end_time').select_related() for eyehist in eyehists: if len(active) >= 6: break user = eyehist.user if user not in used_users: old_level = 3 if eyehist.end_time > (timezone.now() - datetime.timedelta(minutes=5)): old_level = 0 elif eyehist.end_time > (timezone.now() - datetime.timedelta(hours=1)): old_level = 1 elif eyehist.end_time > (timezone.now() - datetime.timedelta(hours=24)): old_level = 2 active.append({ 'username': user.username, 'pic_url': gravatar_for_user(user), 'url': '%s/users/%s' % (BASE_URL, user.username), 'old_level': old_level, 'time_ago': humanize_time(timezone.now() - eyehist.end_time) }) used_users.append(user) message = EyeHistoryMessage.objects.filter( eyehistory__url=url).select_related() about_message = None user_url = None username = None if message: about_message = humanize_time(timezone.now() - message[0].post_time) + ' ago' message = message[0].message if not about_message: chat_message = ChatMessage.objects.filter(url=url).select_related() if chat_message: about_message = humanize_time(timezone.now() - chat_message[0].date) + ' ago' message = '"%s"' % (chat_message[0].message) user_url = '%s/users/%s' % (BASE_URL, chat_message[0].author.username) username = chat_message[0].author.username if not about_message: about_message = '' message = '' return { 'url': url, 'active_users': active, 'message': message, 'about_message': about_message, 'user_url': user_url, 'username': username, }