+ carousel = Carousel.objects.create(slug=slug)
+ banners = [
+ item.get_banner()
+ for item in carousel.carouselitem_set.all().select_related('banner')
+ ]
+
+ request = context['request']
+ if 'banner' in request.GET:
+ try:
+ banner_id = int(request.GET['banner'])
+ except (TypeError, ValueError):
+ pass
+ else:
+ try:
+ index = [b.pk for b in banners].index(banner_id)
+ except ValueError:
+ if request.user.is_staff:
+ # Staff is allowed to preview any banner.
+ try:
+ banners.insert(0, Cite.objects.get(pk=banner_id))
+ except Cite.DoesNotExist:
+ pass
+ else:
+ # Put selected banner to front.
+ banners = [banners[index]] + banners[:index] + banners[index+1:]
+