def authors(request): releasers = (spectrum_releasers().extra( select={ 'lower_name': 'lower(demoscene_releaser.name)' }).order_by('lower_name')) count = request.GET.get('count', '50') letter = request.GET.get('letter', '') if len(letter) == 1 and letter in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ': releasers = releasers.filter(name__istartswith=letter) try: int_count = int(count) except ValueError: int_count = 50 paginator = Paginator(releasers, int_count) page = request.GET.get('page') try: releasers_page = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page of results. releasers_page = paginator.page(1) except EmptyPage: # If page is not an integer, or out of range (e.g. 9999), deliver last page of results. releasers_page = paginator.page(paginator.num_pages) return render( request, 'zxdemo/authors.html', { 'releasers': releasers_page, 'count': count, 'letters': '#ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'count_options': ['10', '25', '50', '75', '100', '150', '200'], })
def authors(request): releasers = spectrum_releasers().extra(select={'lower_name': 'lower(demoscene_releaser.name)'}).order_by('lower_name') count = request.GET.get('count', '50') letter = request.GET.get('letter', '') if len(letter) == 1 and letter in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ': releasers = releasers.filter(name__istartswith=letter) try: int_count = int(count) except ValueError: int_count = 50 paginator = Paginator(releasers, int_count) page = request.GET.get('page') try: releasers_page = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page of results. releasers_page = paginator.page(1) except EmptyPage: # If page is not an integer, or out of range (e.g. 9999), deliver last page of results. releasers_page = paginator.page(paginator.num_pages) return render(request, 'zxdemo/authors.html', { 'releasers': releasers_page, 'count': count, 'letters': '#ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'count_options': ['10', '25', '50', '75', '100', '150', '200'], })
def byline(context, production, check_spectrum=False): if check_spectrum: try: spectrum_releaser_ids = context['spectrum_releaser_ids'] except KeyError: spectrum_releaser_ids = set(spectrum_releasers().values_list( 'id', flat=True)) context['spectrum_releaser_ids'] = spectrum_releaser_ids authors = [(nick, nick.releaser_id in spectrum_releaser_ids) for nick in production.author_nicks.all()] affiliations = [(nick, nick.releaser_id in spectrum_releaser_ids) for nick in production.author_affiliation_nicks.all()] else: authors = [(author, True) for author in production.author_nicks.all()] affiliations = [ (affiliation, True) for affiliation in production.author_affiliation_nicks.all() ] return { 'unparsed_byline': production.unparsed_byline, 'authors': authors, 'affiliations': affiliations, }
def author(request, releaser_id): ZXDEMO_PLATFORM_IDS = settings.ZXDEMO_PLATFORM_IDS try: releaser = spectrum_releasers().get(id=releaser_id) except Releaser.DoesNotExist: raise Http404 if releaser.is_group: member_memberships = filter_releasers_queryset_to_spectrum( releaser.member_memberships.select_related('member'), releaser_table='T3' ) else: member_memberships = Membership.objects.none() group_memberships = filter_releasers_queryset_to_spectrum( releaser.group_memberships.select_related('group'), releaser_table='T3' ) release_author_filter = Q(author_nicks__releaser=releaser) | Q(author_affiliation_nicks__releaser=releaser) releases = Production.objects.filter( release_author_filter, platforms__id__in=ZXDEMO_PLATFORM_IDS ).order_by('release_date_date').distinct().prefetch_related('links', 'screenshots', 'author_nicks', 'author_affiliation_nicks') credits = Credit.objects.filter( nick__releaser=releaser, production__platforms__id__in=ZXDEMO_PLATFORM_IDS ).order_by('production__release_date_date', 'production__title', 'production__id').prefetch_related('production__links', 'production__screenshots', 'production__author_nicks__releaser', 'production__author_affiliation_nicks__releaser') if request.GET.get('noscreen'): releases=releases.exclude(supertype='music').filter(screenshots__id__isnull=True) credits=credits.exclude(production__supertype='music').filter(production__screenshots__id__isnull=True) releases_by_id = {} releases_with_credits = [] for prod in releases: release_record = {'production': prod, 'credits': []} releases_by_id[prod.id] = release_record releases_with_credits.append(release_record) non_releaser_credits = [] for credit in credits: if credit.production_id in releases_by_id: releases_by_id[credit.production_id]['credits'].append(credit) else: non_releaser_credits.append(credit) return render(request, 'zxdemo/author.html', { 'releaser': releaser, 'member_memberships': member_memberships, 'group_memberships': group_memberships, 'releases_with_credits': releases_with_credits, 'non_releaser_credits': non_releaser_credits, })
def byline(context, production, check_spectrum=False): if check_spectrum: try: spectrum_releaser_ids = context['spectrum_releaser_ids'] except KeyError: spectrum_releaser_ids = set(spectrum_releasers().values_list('id', flat=True)) context['spectrum_releaser_ids'] = spectrum_releaser_ids authors = [(nick, nick.releaser_id in spectrum_releaser_ids) for nick in production.author_nicks.all()] affiliations = [(nick, nick.releaser_id in spectrum_releaser_ids) for nick in production.author_affiliation_nicks.all()] else: authors = [(author, True) for author in production.author_nicks.all()] affiliations = [(affiliation, True) for affiliation in production.author_affiliation_nicks.all()] return { 'unparsed_byline': production.unparsed_byline, 'authors': authors, 'affiliations': affiliations, }
def search(request): ZXDEMO_PLATFORM_IDS = settings.ZXDEMO_PLATFORM_IDS search_term = request.GET.get('search', '') try: demoskip = int(request.GET.get('demoskip', 0)) except ValueError: demoskip = 0 try: musicskip = int(request.GET.get('musicskip', 0)) except ValueError: musicskip = 0 try: gfxskip = int(request.GET.get('gfxskip', 0)) except ValueError: gfxskip = 0 try: scenerskip = int(request.GET.get('scenerskip', 0)) except ValueError: scenerskip = 0 feature = request.GET.get('feature') base_url_params = { 'search': search_term, 'feature': feature, 'musicskip': musicskip, 'demoskip': demoskip, 'gfxskip': gfxskip, 'scenerskip': scenerskip, } # Search demos demos = Production.objects.filter(platforms__id__in=ZXDEMO_PLATFORM_IDS, supertype='production', title__icontains=search_term).order_by( 'sortable_title').prefetch_related( 'links', 'screenshots', 'author_nicks', 'author_affiliation_nicks') demos = list(demos[demoskip:demoskip + 11]) if len(demos) == 11: demos = demos[:10] url_params = base_url_params.copy() url_params.update({'feature': 'demos', 'demoskip': demoskip + 10}) demos_next_link = reverse( 'zxdemo_search') + '?' + urllib.parse.urlencode(url_params) else: demos_next_link = None if demoskip > 0: url_params = base_url_params.copy() url_params.update({ 'feature': 'demos', 'demoskip': max(0, demoskip - 10) }) demos_prev_link = reverse( 'zxdemo_search') + '?' + urllib.parse.urlencode(url_params) else: demos_prev_link = None # Search musics musics = Production.objects.filter(platforms__id__in=ZXDEMO_PLATFORM_IDS, supertype='music', title__icontains=search_term).order_by( 'sortable_title').prefetch_related( 'links', 'screenshots', 'author_nicks', 'author_affiliation_nicks') musics = list(musics[musicskip:musicskip + 11]) if len(musics) == 11: musics = musics[:10] url_params = base_url_params.copy() url_params.update({'feature': 'music', 'musicskip': musicskip + 10}) musics_next_link = reverse( 'zxdemo_search') + '?' + urllib.parse.urlencode(url_params) else: musics_next_link = None if musicskip > 0: url_params = base_url_params.copy() url_params.update({ 'feature': 'music', 'musicskip': max(0, musicskip - 10) }) musics_prev_link = reverse( 'zxdemo_search') + '?' + urllib.parse.urlencode(url_params) else: musics_prev_link = None # Search graphics graphics = Production.objects.filter( platforms__id__in=ZXDEMO_PLATFORM_IDS, supertype='graphics', title__icontains=search_term).order_by( 'sortable_title').prefetch_related('links', 'screenshots', 'author_nicks', 'author_affiliation_nicks') graphics = list(graphics[gfxskip:gfxskip + 11]) if len(graphics) == 11: graphics = graphics[:10] url_params = base_url_params.copy() url_params.update({'feature': 'graphics', 'gfxskip': gfxskip + 10}) graphics_next_link = reverse( 'zxdemo_search') + '?' + urllib.parse.urlencode(url_params) else: graphics_next_link = None if gfxskip > 0: url_params = base_url_params.copy() url_params.update({ 'feature': 'graphics', 'gfxskip': max(0, gfxskip - 10) }) graphics_prev_link = reverse( 'zxdemo_search') + '?' + urllib.parse.urlencode(url_params) else: graphics_prev_link = None # Search sceners sceners = spectrum_releasers().filter( nicks__name__icontains=search_term).distinct().extra( select={ 'lower_name': 'lower(demoscene_releaser.name)' }).order_by('lower_name') sceners = list(sceners[scenerskip:scenerskip + 11]) if len(sceners) == 11: sceners = sceners[:10] url_params = base_url_params.copy() url_params.update({ 'feature': 'sceners', 'scenerskip': scenerskip + 10 }) sceners_next_link = reverse( 'zxdemo_search') + '?' + urllib.parse.urlencode(url_params) else: sceners_next_link = None if scenerskip > 0: url_params = base_url_params.copy() url_params.update({ 'feature': 'sceners', 'scenerskip': max(0, scenerskip - 10) }) sceners_prev_link = reverse( 'zxdemo_search') + '?' + urllib.parse.urlencode(url_params) else: sceners_prev_link = None return render( request, 'zxdemo/search.html', { 'search_term': search_term, 'feature': feature, 'demos': demos, 'demos_prev_link': demos_prev_link, 'demos_next_link': demos_next_link, 'musics': musics, 'musics_prev_link': musics_prev_link, 'musics_next_link': musics_next_link, 'graphics': graphics, 'graphics_prev_link': graphics_prev_link, 'graphics_next_link': graphics_next_link, 'sceners': sceners, 'sceners_prev_link': sceners_prev_link, 'sceners_next_link': sceners_next_link, })
def search(request): ZXDEMO_PLATFORM_IDS = settings.ZXDEMO_PLATFORM_IDS search_term = request.GET.get('search', '') try: demoskip = int(request.GET.get('demoskip', 0)) except ValueError: demoskip = 0 try: musicskip = int(request.GET.get('musicskip', 0)) except ValueError: musicskip = 0 try: gfxskip = int(request.GET.get('gfxskip', 0)) except ValueError: gfxskip = 0 try: scenerskip = int(request.GET.get('scenerskip', 0)) except ValueError: scenerskip = 0 feature = request.GET.get('feature') base_url_params = { 'search': search_term, 'feature': feature, 'musicskip': musicskip, 'demoskip': demoskip, 'gfxskip': gfxskip, 'scenerskip': scenerskip, } demos = Production.objects.filter( platforms__id__in=ZXDEMO_PLATFORM_IDS, supertype='production', title__icontains=search_term ).order_by('sortable_title').prefetch_related('links', 'screenshots', 'author_nicks', 'author_affiliation_nicks') demos = list(demos[demoskip:demoskip+11]) if len(demos) == 11: demos = demos[:10] url_params = base_url_params.copy() url_params.update({ 'feature': 'demos', 'demoskip': demoskip + 10 }) demos_next_link = reverse('zxdemo_search') + '?' + urllib.urlencode(url_params) else: demos_next_link = None if demoskip > 0: url_params = base_url_params.copy() url_params.update({ 'feature': 'demos', 'demoskip': max(0, demoskip - 10) }) demos_prev_link = reverse('zxdemo_search') + '?' + urllib.urlencode(url_params) else: demos_prev_link = None musics = Production.objects.filter( platforms__id__in=ZXDEMO_PLATFORM_IDS, supertype='music', title__icontains=search_term ).order_by('sortable_title').prefetch_related('links', 'screenshots', 'author_nicks', 'author_affiliation_nicks') musics = list(musics[musicskip:musicskip+11]) if len(musics) == 11: musics = musics[:10] url_params = base_url_params.copy() url_params.update({ 'feature': 'music', 'musicskip': musicskip + 10 }) musics_next_link = reverse('zxdemo_search') + '?' + urllib.urlencode(url_params) else: musics_next_link = None if musicskip > 0: url_params = base_url_params.copy() url_params.update({ 'feature': 'music', 'musicskip': max(0, musicskip - 10) }) musics_prev_link = reverse('zxdemo_search') + '?' + urllib.urlencode(url_params) else: musics_prev_link = None graphics = Production.objects.filter( platforms__id__in=ZXDEMO_PLATFORM_IDS, supertype='graphics', title__icontains=search_term ).order_by('sortable_title').prefetch_related('links', 'screenshots', 'author_nicks', 'author_affiliation_nicks') graphics = list(graphics[gfxskip:gfxskip+11]) if len(graphics) == 11: graphics = graphics[:10] url_params = base_url_params.copy() url_params.update({ 'feature': 'graphics', 'gfxskip': gfxskip + 10 }) graphics_next_link = reverse('zxdemo_search') + '?' + urllib.urlencode(url_params) else: graphics_next_link = None if gfxskip > 0: url_params = base_url_params.copy() url_params.update({ 'feature': 'graphics', 'gfxskip': max(0, gfxskip - 10) }) graphics_prev_link = reverse('zxdemo_search') + '?' + urllib.urlencode(url_params) else: graphics_prev_link = None sceners = spectrum_releasers().filter( nicks__name__icontains=search_term ).distinct().extra(select={'lower_name': 'lower(demoscene_releaser.name)'}).order_by('lower_name') sceners = list(sceners[scenerskip:scenerskip+11]) if len(sceners) == 11: sceners = sceners[:10] url_params = base_url_params.copy() url_params.update({ 'feature': 'sceners', 'scenerskip': scenerskip + 10 }) sceners_next_link = reverse('zxdemo_search') + '?' + urllib.urlencode(url_params) else: sceners_next_link = None if scenerskip > 0: url_params = base_url_params.copy() url_params.update({ 'feature': 'sceners', 'scenerskip': max(0, scenerskip - 10) }) sceners_prev_link = reverse('zxdemo_search') + '?' + urllib.urlencode(url_params) else: sceners_prev_link = None return render(request, 'zxdemo/search.html', { 'search_term': search_term, 'feature': feature, 'demos': demos, 'demos_prev_link': demos_prev_link, 'demos_next_link': demos_next_link, 'musics': musics, 'musics_prev_link': musics_prev_link, 'musics_next_link': musics_next_link, 'graphics': graphics, 'graphics_prev_link': graphics_prev_link, 'graphics_next_link': graphics_next_link, 'sceners': sceners, 'sceners_prev_link': sceners_prev_link, 'sceners_next_link': sceners_next_link, })