예제 #1
0
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)
예제 #2
0
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
예제 #3
0
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
예제 #4
0
    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
예제 #5
0
    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
예제 #6
0
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)