def handle_unit_switch(sender, **kwargs): old_unit = kwargs.get("old_unit") new_unit = kwargs.get("new_unit") facility_id = kwargs.get("facility_id") facility = Facility.objects.get(pk=facility_id) # Import here to avoid circular import from kalite.distributed.api_views import compute_total_points if old_unit != new_unit: if facility: users = FacilityUser.objects.filter(facility=facility_id) for user in users: old_unit_points = compute_total_points(user) or 0 old_unit_transaction_log = StoreTransactionLog( user=user, context_id=old_unit, context_type="unit_points_reset", item="gift_card") old_unit_transaction_log.value = -old_unit_points old_unit_transaction_log.purchased_at = datetime.datetime.now() old_unit_transaction_log.save() new_unit_transaction_log = StoreTransactionLog.objects.filter( user=user, context_id=new_unit, context_type="unit_points_reset", item="gift_card") new_unit_transaction_log.soft_delete() playlist_group_mapping_reset_for_a_facility(facility_id)
def spending_report_view(request): """View total points remaining for students""" facility, group_id, context = coach_nav_context(request, "spending") users = get_user_queryset(request, facility, group_id) user_points = {} for user in users: user_points[user] = compute_total_points(user) context.update(plotting_metadata_context(request, facility=facility)) context.update({ "user_points": user_points, }) return context
def spending_report_view(request): """View total points remaining for students""" facility, group_id, context = coach_nav_context(request, "spending") users = get_user_queryset(request, facility, group_id) user_points = {} for user in users: user_points[user] = compute_total_points(user) context.update(plotting_metadata_context(request, facility=facility)) context.update({ "user_points": user_points, }) return context
def generate_status(self, request, **kwargs): #Build a list of messages to pass to the user. # Iterating over the messages removes them from the # session storage, thus they only appear once. message_dicts = get_messages_for_api_calls(request) # Default data data = { "is_logged_in": request.is_logged_in, "registered": request.session.get("registered", True), "is_admin": request.is_admin, "is_django_user": request.is_django_user, "points": 0, "current_language": request.session.get(settings.LANGUAGE_COOKIE_NAME), "messages": message_dicts, "status_timestamp": datetime.datetime.now(tzlocal()), "version": version.VERSION, "facilities": facility_list(), "simplified_login": settings.SIMPLIFIED_LOGIN, "docs_exist": getattr(settings, "DOCS_EXIST", False), "zone_id": getattr(Device.get_own_device().get_zone(), "id", "None"), "has_superuser": User.objects.filter(is_superuser=True).exists(), } # Override properties using facility data if "facility_user" in request.session: # Facility user user = request.session["facility_user"] data["is_logged_in"] = True data["username"] = user.get_name() # TODO-BLOCKER(jamalex): re-enable this conditional once tastypie endpoints invalidate cached session value # if "points" not in request.session: request.session["points"] = compute_total_points(user) data["points"] = request.session["points"] if request.session[ "points"] else 0 data["user_id"] = user.id data["user_uri"] = reverse("api_dispatch_detail", kwargs={ "resource_name": "user", "pk": user.id }) data["facility_id"] = user.facility.id # Override data using django data if request.user.is_authenticated(): # Django user data["is_logged_in"] = True data["username"] = request.user.username return data
def generate_status(self, request, **kwargs): #Build a list of messages to pass to the user. # Iterating over the messages removes them from the # session storage, thus they only appear once. message_dicts = get_messages_for_api_calls(request) # Default data data = { "is_logged_in": request.is_logged_in, "registered": request.session.get("registered", True), "is_admin": request.is_admin, "is_django_user": request.is_django_user, "points": 0, "current_language": request.session.get(settings.LANGUAGE_COOKIE_NAME), "messages": message_dicts, "status_timestamp": datetime.datetime.now(tzlocal()), "version": version.VERSION, "facilities": facility_list(), "simplified_login": settings.SIMPLIFIED_LOGIN, "docs_exist": getattr(settings, "DOCS_EXIST", False), "zone_id": getattr(Device.get_own_device().get_zone(), "id", "None"), "has_superuser": User.objects.filter(is_superuser=True).exists(), } # Override properties using facility data if "facility_user" in request.session: # Facility user user = request.session["facility_user"] data["is_logged_in"] = True data["username"] = user.get_name() # TODO-BLOCKER(jamalex): re-enable this conditional once tastypie endpoints invalidate cached session value # if "points" not in request.session: request.session["points"] = compute_total_points(user) data["points"] = request.session["points"] if request.session["points"] else 0 data["user_id"] = user.id data["user_uri"] = reverse("api_dispatch_detail", kwargs={"resource_name": "user", "pk": user.id}) data["facility_id"] = user.facility.id # Override data using django data if request.user.is_authenticated(): # Django user data["is_logged_in"] = True data["username"] = request.user.username return data
def handle_unit_switch(sender, **kwargs): old_unit = kwargs.get("old_unit") new_unit = kwargs.get("new_unit") facility_id = kwargs.get("facility_id") facility = Facility.objects.get(pk=facility_id) # Import here to avoid circular import from kalite.distributed.api_views import compute_total_points if old_unit != new_unit: if facility: users = FacilityUser.objects.filter(facility=facility_id) for user in users: old_unit_points = compute_total_points(user) or 0 old_unit_transaction_log = StoreTransactionLog(user=user, context_id=old_unit, context_type="unit_points_reset", item="gift_card") old_unit_transaction_log.value = - old_unit_points old_unit_transaction_log.purchased_at = datetime.datetime.now() old_unit_transaction_log.save() new_unit_transaction_log = StoreTransactionLog.objects.filter(user=user, context_id=new_unit, context_type="unit_points_reset", item="gift_card") new_unit_transaction_log.soft_delete() playlist_group_mapping_reset_for_a_facility(facility_id)