import json import django.shortcuts import django.db.models import django.http import mainapp.models class BreakerException(Exception): pass def view_index(request, sport=None, league=None, search=None, tag=None): try: if sport is not None: sport = mainapp.models.Sport.objects.get(clean_name=sport) assert sport is not None, 'sport not found' if league is not None: league = mainapp.models.League.objects.get(sport_id=sport.id, clean_name=league) assert league is not None, 'league not found' navbar_sports = mainapp.models.League.navbar_sports() assert navbar_sports, 'navbar sports not found' except BaseException: raise django.http.Http404() else: return django.shortcuts.render( request=request, template_name='mainapp/index.html', status=200, context={ 'sport': sport, 'league': league, 'search': search, 'tag': tag, 'navbar_sports': navbar_sports, } ) def view_news(request, title): try: navbar_sports = mainapp.models.League.navbar_sports() assert navbar_sports, 'navbar sports not found' news = mainapp.models.News.objects.get(clean_title=title) assert news is not None except BaseException: raise django.http.Http404() else: return django.shortcuts.render( request=request, template_name='mainapp/news.html', status=200, context={ 'navbar_sports': navbar_sports, 'news': news } ) def api_news_list(request): try: json_body = json.loads(request.body) news_filter = list() if json_body.get('tag'): news_filter.append(django.db.models.Q(clean_tags__contains=[json_body['tag']])) elif json_body.get('search'): news_filter.append(django.db.models.Q(haystack__contains=json_body['search'])) else: if json_body.get('sportId'): news_filter.append(django.db.models.Q(sport_id=json_body['sportId'])) if json_body.get('leagueId'): news_filter.append(django.db.models.Q(league_id=json_body['leagueId'])) if json_body.get('offsetId'): news_filter.append(django.db.models.Q(id__lt=json_body['offsetId'])) news = mainapp.models.News.objects.filter(*news_filter).order_by('-pub_date')[:json_body.get('quantity', 10)] except BaseException as e: return django.http.JsonResponse( data={ 'success': False, 'error': str(e) }, status=400 ) else: return django.http.JsonResponse( data={ 'success': True, 'error': None, 'news': [ns.to_json for ns in news] }, status=200 ) def api_user_session(request): try: json_body = json.loads(request.body) if 'seenBuildingModal' in json_body: request.session['seenBuildingModal'] = json_body['seenBuildingModal'] except BaseException as e: return django.http.JsonResponse( data={ 'success': False, 'error': str(e) }, status=400 ) else: return django.http.JsonResponse( data={ 'success': True, 'error': None, }, status=200 )