Esempio n. 1
0
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'],
        })
Esempio n. 2
0
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'],
	})
Esempio n. 3
0
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,
    }
Esempio n. 4
0
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,
	})
Esempio n. 5
0
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,
	}
Esempio n. 6
0
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,
        })
Esempio n. 7
0
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,
	})