def get_pend_graph(user, subject): pendencies = Pendencies.objects.filter(resource__topic__subject=subject, resource__visible=True) graph = [] for pendency in pendencies: item = {} item["date"] = {} item["date"]["start"] = formats.date_format(pendency.begin_date, "m/d/Y H:i") item["date"]["end"] = formats.date_format(pendency.end_date, "m/d/Y H:i") item["date"]["delay"] = formats.date_format( pendency.limit_date, "m/d/Y H:i") if pendency.limit_date else "infinity" item["action"] = pendency.get_action_display() item["name"] = pendency.resource.name if pendency.begin_date <= timezone.now(): item["percent"] = done_percent(pendency) / 100 else: item["percent"] = 0 item["access_link"] = str(pendency.resource.access_link()) users = get_resource_users(pendency.resource) subject_begin_date = pendency.resource.topic.subject.init_date pend_action = pendency.action resource_type = pendency.resource._my_subclass resource_key = resource_type + "_id" resource_id = pendency.resource.id if user in users: has_action = Log.objects.filter( user_id=user.id, action=pend_action, resource=resource_type, context__contains={ resource_key: resource_id }, datetime__date__gte=subject_begin_date).exists() item["done"] = True if not has_action: item["done"] = False """notifies = Notification.objects.filter(user = user, task = pendency).order_by("-creation_date") if notifies.count() > 0: last = notifies[0] if not last.meta is None: item["date"]["delay"] = formats.date_format(last.meta, "m/d/Y H:i")""" graph.append(item) return graph
def done_percent(notification): users = get_resource_users(notification.task.resource) notified = Notification.objects.filter(user__in = users.values_list('id', flat = True), creation_date = datetime.now(), task = notification.task).count() number_users = users.count() not_done = (notified * 100) / number_users return 100 - not_done
def done_percent(pendency): users = get_resource_users(pendency.resource) notified = Notification.objects.filter(user__in = users.values_list('id', flat = True), creation_date = datetime.now(), task = pendency).count() number_users = users.count() not_done = (notified * 100) / number_users return 100 - not_done
def get_pend_graph(user, subject): pendencies = Pendencies.objects.filter( resource__topic__subject=subject, begin_date__gte=subject.init_date, resource__visible=True, ) graph = [] for pendency in pendencies: item = {} item["date"] = {} item["date"]["start"] = formats.date_format(pendency.begin_date, "m/d/Y H:i") item["date"]["startDate"] = pendency.begin_date item["date"]["end"] = formats.date_format(pendency.end_date, "m/d/Y H:i") item["date"]["endDate"] = pendency.end_date item["date"]["delay"] = ( formats.date_format(pendency.limit_date, "m/d/Y H:i") if pendency.limit_date else "infinity" ) item["date"]["delayDate"] = pendency.limit_date item["action"] = pendency.get_action_display() item["name"] = pendency.resource.name if pendency.begin_date <= timezone.now(): item["percent"] = done_percent(pendency) / 100 else: item["percent"] = 0 item["access_link"] = str(pendency.resource.access_link()) users = get_resource_users(pendency.resource) subject_begin_date = pendency.resource.topic.subject.init_date pend_action = pendency.action resource_type = pendency.resource._my_subclass resource_key = resource_type + "_id" resource_id = pendency.resource.id item["done"] = False item["doneLate"] = False if user in users: has_action = PendencyDone.objects.filter(pendency=pendency, student=user) item["done"] = has_action.exists() item["doneLate"] = False if item["done"]: pDone = has_action.first() item["doneLate"] = pDone.late graph.append(item) return graph
def done_percent(pendency): users = get_resource_users(pendency.resource) usersDone = PendencyDone.objects.filter(pendency=pendency, student__id__in=users.values_list( 'id', flat=True)).count() number_users = users.count() done = (usersDone * 100) / number_users return done