This commit is contained in:
@@ -28,6 +28,7 @@ SORT_MAP = {
|
||||
'newest': ['-created_at'],
|
||||
'oldest': ['created_at'],
|
||||
'progress': ['-progress_percent'],
|
||||
'updated': ['-updated_at'],
|
||||
}
|
||||
|
||||
|
||||
@@ -65,6 +66,7 @@ def item_list(request):
|
||||
'sort': sort,
|
||||
'shelf': shelf,
|
||||
'categories': Item.CATEGORY_CHOICES,
|
||||
'debug': settings.DEBUG,
|
||||
})
|
||||
|
||||
|
||||
@@ -180,9 +182,58 @@ def steam_import(request):
|
||||
name=game['name'],
|
||||
hours_played=hours,
|
||||
progress_percent=progress,
|
||||
steam_appid=game['appid'],
|
||||
)
|
||||
hltb_api.apply_to_item(item)
|
||||
imported += 1
|
||||
|
||||
del request.session['steam_games']
|
||||
return redirect(f"{reverse('backlogger:list')}?category=games&imported={imported}")
|
||||
|
||||
|
||||
@login_required
|
||||
def debug_delete_all(request):
|
||||
if not settings.DEBUG:
|
||||
return redirect('backlogger:list')
|
||||
if request.method == 'POST':
|
||||
Item.objects.filter(user=request.user).delete()
|
||||
return redirect('backlogger:list')
|
||||
|
||||
|
||||
@login_required
|
||||
def steam_sync_login(request):
|
||||
callback = request.build_absolute_uri(reverse('backlogger:steam_sync_callback'))
|
||||
realm = f"{request.scheme}://{request.get_host()}"
|
||||
return redirect(steam_api.build_auth_url(callback, realm))
|
||||
|
||||
|
||||
@login_required
|
||||
def steam_sync_callback(request):
|
||||
steam_id = steam_api.verify_and_get_steam_id(request.GET.dict())
|
||||
if not steam_id:
|
||||
return redirect(f"{reverse('backlogger:list')}?sync_error=1")
|
||||
|
||||
api_key = getattr(settings, 'STEAM_API_KEY', '')
|
||||
if not api_key:
|
||||
return redirect(f"{reverse('backlogger:list')}?sync_error=1")
|
||||
|
||||
try:
|
||||
games = steam_api.get_owned_games(api_key, steam_id)
|
||||
except Exception:
|
||||
return redirect(f"{reverse('backlogger:list')}?sync_error=1")
|
||||
|
||||
hours_by_appid = {
|
||||
g['appid']: round(g.get('playtime_forever', 0) / 60, 1)
|
||||
for g in games
|
||||
}
|
||||
|
||||
steam_items = Item.objects.filter(user=request.user, steam_appid__isnull=False)
|
||||
synced = 0
|
||||
for item in steam_items:
|
||||
new_hours = hours_by_appid.get(item.steam_appid)
|
||||
if new_hours is not None and new_hours != item.hours_played:
|
||||
item.hours_played = new_hours
|
||||
item.save(update_fields=['hours_played', 'updated_at'])
|
||||
synced += 1
|
||||
|
||||
return redirect(f"{reverse('backlogger:list')}?category=games&synced={synced}")
|
||||
|
||||
Reference in New Issue
Block a user