Snippets

ASD Technologies Update student_last_login

Created by Alexander Tryastsyn last modified
from novakid.backend.db.utils import exists
from novakid.backend.utils.other import log2console
from novakid.backend.student_game_profile.models import ItemTypeModel, GameProfileModel, ProfileSelectedItemModel
from novakid.backend.student_game_profile.models_processes import update_student_last_login_in_game_profile


def update_student_last_login(request, dry_run=True, logprint=False):
    log2console(f'update field "stundent_last_login": dry_run={dry_run}')
    profiles_all = 0
    profiles_found = 0
    profiles_login_updated = 0

    db_session = request.db_session
    profiles_ids = []
    with request.tm:
        q = db_session.query(
            GameProfileModel.student_id
        )
        for x in q:
            profiles_ids.append(x[0])

        item_type_query = db_session.query(ItemTypeModel).filter_by(label='character')
        if exists(item_type_query):
            item_type_id = item_type_query.one().id

    log2console(f'all profiles: {len(profiles_ids)}')
    log2console(f'item_type_id: {item_type_id}')

    query_profile = db_session.query(
        GameProfileModel
    )
    for profile_id in profiles_ids:
        profiles_all += 1
        with request.tm:
            profile = query_profile.get(profile_id)
            if profile and profile.student_last_login is None:
                query_profile_items = db_session.query(
                    ProfileSelectedItemModel
                ).filter(
                    ProfileSelectedItemModel.profile_id == profile_id,
                    ProfileSelectedItemModel.item_type_id == item_type_id
                )

                if not exists(query_profile_items):
                    continue
                profiles_found += 1
                if dry_run is False:
                    update_student_last_login_in_game_profile(request, profile_id)
                    db_session.refresh(profile)
                    if profile.student_last_login is not None:
                        profiles_login_updated += 1
                if logprint:
                    log2console(f'student id: {profile.student_id}, last login:{profile.student_last_login}')

    log2console(f'profiles_all: {profiles_all}')
    log2console(f'profiles_found: {profiles_found}')
    log2console(f'profiles_login_updated: {profiles_login_updated}')

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.