def render(request): cursor = connection.cursor() sql = 'select photo.user_id, photo.clap, photo.hash from photo inner join (select user_id, max(clap) as jkey from (select user_id, clap, boo from photo where boo < 3) as photo group by user_id) as subq on photo.clap = subq.jkey and subq.user_id = photo.user_id group by user_id' cursor.execute(sql) rows = cursor.fetchall() unique_hash = [] for tmp in rows: unique_hash.append(tmp[2]) photos = Photo.objects.filter(hash__in=unique_hash).order_by('user') map((lambda x: setattr(x, 'thumbnail_path', x.hash[:1]+"/"+x.hash[:2]+"/"+x.hash)), photos) recentAlbumList = Album.objects.order_by('-update_date')[:10] paginator = Paginator(recentAlbumList, 10) try: page = int(request.GET.get('p', '1')) except ValueError: page = 1 try: recentAlbumList = paginator.page(page) except (EmptyPage, InvalidPage): recentAlbumList = paginator.page(paginator.num_pages) template = loader.get_template('user_list.html') context = Context({ 'title': "ユーザー一覧", 'has_loggedin': request.session.get("has_loggedin", False), 'photoList': photos, 'albumList': recentAlbumList, }) return HttpResponse(template.render(context))
def render(request, user_id = None): user = User.objects.filter(id=user_id)[0] tmpAlbumList = Album.objects.filter(user=user).order_by('name') albumList = [] for album in tmpAlbumList: albumdetail = {} has_new = False if album.update_date and album.update_date > datetime.now() - timedelta(3): has_new = True albumdetail['has_new'] = has_new albumdetail['album'] = album albumList.append(albumdetail) paginator = Paginator(albumList, 30) try: page = int(request.GET.get('p', '1')) except ValueError: page = 1 try: albumList = paginator.page(page) except (EmptyPage, InvalidPage): albumList = paginator.page(paginator.num_pages) photoList = Photo.objects.filter(user=user, boo__lt=3).order_by("-clap")[:3] map((lambda x: setattr(x, 'thumbnail_path', x.hash[:1]+"/"+x.hash[:2]+"/"+x.hash)), photoList) template = loader.get_template('album_list.html') context = Context({ 'title': user.name+"'s album List", 'userid': user_id, 'has_loggedin': request.session.get("has_loggedin", False), 'albumList': albumList, 'page': page, 'pageList': paginator.static_nums(page), 'photoList': photoList, }) return HttpResponse(template.render(context))
def render(request, album_id = None): # 表示件数の取得 number = None try: number = int(request.GET['n']) except KeyError: try: number = int(request.COOKIES['show_num']) except KeyError: number = 30 select_num_list = [10, 30, 50, 100] album = Album.objects.filter(id=album_id)[0] # 表示順の設定 sort_by = request.GET.get('s', 'p') sort_word = None if sort_by == 'p': sort_word = 'photo_date' elif sort_by == 'f': sort_word = 'file_name' elif sort_by == 'd': sort_word = 'display' elif sort_by == 'c': sort_word = '-clap' else: sort_word = 'photo_date' photoList_tmp = Photo.objects.order_by(sort_word).filter(album_id=album_id) photoList = [] for photo in photoList_tmp: photodetail = {} has_new = False fewdaysago = datetime.now() - timedelta(3) if fewdaysago < photo.insert_date: has_new = True photodetail['has_new'] = has_new photodetail['photo'] = photo photodetail['thumbnail_path'] = photo.hash[:1]+"/"+photo.hash[:2]+"/"+photo.hash photoList.append(photodetail) paginator = Paginator(photoList, number) try: page = int(request.GET.get('p', '1')) except ValueError: page = 1 try: photoList = paginator.page(page) except (EmptyPage, InvalidPage): photoList = paginator.page(paginator.num_pages) template = loader.get_template('album.html') context = Context({ 'title': album.name+" by "+album.user.name, 'userid': album.user.id, 'has_loggedin': request.session.get("has_loggedin", False), 'sort_word': sort_word, 'photoList': photoList, 'number': number, 'select_num_list': select_num_list, 'max': paginator.count, 'page': page, 'pageList': paginator.static_nums(page), }) httpResponse = HttpResponse(template.render(context)) httpResponse.set_cookie('show_num', number) return httpResponse