def accounts_profile(request): """User's profile edit view. """ if request.GET.has_key("next"): if request.GET["next"] == "ffos": return redirect("/mobile/ffoslogged/") elif request.GET["next"] == "ffosdata": return redirect("/mobile/data/") pictures_all = Picture.objects.filter(user=request.user, gallery=None) gravatar_url = get_gravatar_url(request.user.email) galleries = get_user_galleries(request.user, False) picup_profile = get_or_create_profile(request.user) return render( request, "profile.html", { "pictures_all": pictures_all, "gravatar_url": gravatar_url, "galleries": galleries, "picup_profile": picup_profile, }, )
def deerbox_gallery(request, gallery_id): """User's gallery edit view. """ try: gallery = Gallery.objects.get(user=request.user, id=gallery_id) except Gallery.DoesNotExist: raise Http404 pictures_all = Picture.objects.filter(user=request.user, gallery_id=gallery_id) gravatar_url = get_gravatar_url(request.user.email) galleries = get_user_galleries(request.user, False) license_form = GalleryLicenseForm(instance=gallery) license_pic = license_choices[gallery.license] return render( request, "deerbox_gallery.html", { "pictures_all": pictures_all, "gravatar_url": gravatar_url, "galleries": galleries, "gallery": gallery, "license_form": license_form, "license_pic": "images/cc/%s" % license_pic, }, )
def accounts_profile(request): """User's profile edit view. """ if request.GET.has_key('next'): if request.GET['next'] == 'ffos': return redirect('/mobile/ffoslogged/') elif request.GET['next'] == 'ffosdata': return redirect('/mobile/data/') pictures_all = Picture.objects.filter(user=request.user, gallery=None) gravatar_url = get_gravatar_url(request.user.email) galleries = get_user_galleries(request.user, False) picup_profile = get_or_create_profile(request.user) return render( request, 'profile.html', { 'pictures_all': pictures_all, 'gravatar_url': gravatar_url, 'galleries': galleries, 'picup_profile': picup_profile })
def deerbox_gallery(request, gallery_id): """User's gallery edit view. """ try: gallery = Gallery.objects.get(user=request.user, id=gallery_id) except Gallery.DoesNotExist: raise Http404 pictures_all = Picture.objects.filter(user=request.user, gallery_id=gallery_id) gravatar_url = get_gravatar_url(request.user.email) galleries = get_user_galleries(request.user, False) license_form = GalleryLicenseForm(instance=gallery) license_pic = license_choices[gallery.license] return render( request, 'deerbox_gallery.html', { 'pictures_all': pictures_all, 'gravatar_url': gravatar_url, 'galleries': galleries, 'gallery': gallery, 'license_form': license_form, 'license_pic': 'images/cc/%s' % license_pic })
def picture_view(request, picture_id, oembed=False): """Single picture view. Parameters ---------- picture_id : int oembed : bool """ try: picture = Picture.objects.get(id=picture_id) except Picture.DoesNotExist: raise Http404 user_gravatar_url = get_gravatar_url(picture.user.email) picup_profile = get_or_create_profile(picture.user) gallery = None picture_next = picture_previous = picture_first = picture_last = None # To show the background below top bar if not picup_profile.profile_picture: galleries = ( Gallery.objects.filter(user=picture.user) .order_by("title") .annotate(num_pictures=Count("picture")) .filter(num_pictures__gt=0)[0:1] ) else: galleries = None gallery_pictures = [] metadata_dict = {} if picture.gallery: if picture.gallery.exif: metadata = get_metadata(picture.picture.file.name) metadata_dict = {} for mkey in metadata.exif_keys: try: if mkey.find("Thumbnail") < 0: if len(metadata[mkey].value.__str__()) < 32: new_mkey = mkey.replace("Exif.", "") metadata_dict[new_mkey] = metadata[mkey].value except UnicodeEncodeError: pass except ValueError: pass metadata_dict = collections.OrderedDict(sorted(metadata_dict.items())) gallery = picture.gallery gallery_pictures = gallery.picture_set.all() pictures_ids = [x.id for x in gallery_pictures] picture_pos = pictures_ids.index(int(picture_id)) # TODO: Optimize picture_first = Picture.objects.get(id=pictures_ids[0]) picture_last = Picture.objects.get(id=pictures_ids[len(pictures_ids) - 1]) if picture_pos < len(pictures_ids) - 1: picture_next = Picture.objects.get(id=pictures_ids[picture_pos + 1]) if picture_pos > 0: picture_previous = Picture.objects.get(id=pictures_ids[picture_pos - 1]) others_pictures = [] if picture.gallery: others_pictures = Picture.objects.filter(user=picture.user, gallery=picture.gallery).exclude(id=picture.id) if picture_next: others_pictures = others_pictures.exclude(id=picture_next.id) if picture_previous: others_pictures = others_pictures.exclude(id=picture_previous.id) others_pictures = others_pictures[0:4] metadata_dict_legacy = metadata_dict metadata_dict = {} for meta_entity in metadata_dict_legacy.keys(): try: metadata_dict[meta_entity] = metadata_dict_legacy[meta_entity] except UnicodeDecodeError: pass except UnicodeEncodeError: pass if oembed == False: return render( request, "picture_view.html", { "picture": picture, "picup_profile": picup_profile, "picture_next": picture_next, "picture_first": picture_first, "picture_last": picture_last, "picture_previous": picture_previous, "galleries": galleries, "metadata": metadata_dict, "user_gravatar_url": user_gravatar_url, "gallery_pictures": gallery_pictures, "others_pictures": others_pictures, }, ) else: result = {} result["version"] = "1.0" result["type"] = "photo" result["title"] = "PicUp - Pictures Sharing" result["url"] = "https://picup.it/p/%s/" % picture_id result["author_name"] = "PicUp user" result["provider_name"] = "PicUp" result["provider_url"] = "https://picup.it/" result["width"] = "516" result["height"] = "320" result["html"] = ( "<iframe src='https://picup.it/p/%s/' width='516px' height='315px' frameBorder='0'></iframe>" % picture_id ) return HttpResponse(json.dumps(result), content_type="application/json")
def user_gallery(request, user_id, gallery_id=None): """User's public user. Parameters ---------- user_id : int gallery_id : int Note ----- When gallery_id is None it servers user'r public profile page. """ try: if int(user_id) == 1: raise Http404 except ValueError: raise Http404 try: picup_user = User.objects.get(id=user_id) except User.DoesNotExist: raise Http404 picup_profile = get_or_create_profile(picup_user) pictures_all = Picture.objects.filter(user=picup_user).order_by("-created") if gallery_id: try: gallery = Gallery.objects.get(id=gallery_id) pictures_all = pictures_all.filter(gallery=gallery).order_by("-created") except Gallery.DoesNotExist: raise Http404 else: pictures_all = pictures_all.filter(gallery_id=None).order_by("-created") gallery = None pictures_clearing = pictures_all galleries = ( Gallery.objects.filter(user=picup_user) .order_by("title") .annotate(num_pictures=Count("picture")) .filter(num_pictures__gt=0) ) user_gravatar_url = get_gravatar_url(picup_user.email) pictures_all_3 = pictures_all_2 = pictures_all_1 = None pictures_count = pictures_all.count() if pictures_all.count() < RECOMMENDED_ROWS: spare = pictures_all.count() else: spare = pictures_all.count() % RECOMMENDED_ROWS number_rows = pictures_all.count() / RECOMMENDED_ROWS if spare == 3: pictures_all_3 = reversed(pictures_all[:3]) pictures_all = pictures_all[3 : number_rows * RECOMMENDED_ROWS + 3] elif spare == 2: pictures_all_2 = reversed(pictures_all[:2]) pictures_all = pictures_all[2 : number_rows * RECOMMENDED_ROWS + 2] elif spare == 1: pictures_all_1 = reversed(pictures_all[:1]) pictures_all = pictures_all[1 : number_rows * RECOMMENDED_ROWS + 1] galleries_thumbs = galleries galleries_thumbs_3 = galleries_thumbs_2 = galleries_thumbs_1 = None if galleries.count() < RECOMMENDED_ROWS: spare = galleries.count() else: spare = galleries.count() % RECOMMENDED_ROWS number_rows = galleries.count() / RECOMMENDED_ROWS if spare == 3: galleries_thumbs_3 = reversed(galleries_thumbs[:3]) galleries_thumbs = galleries_thumbs[3 : number_rows * RECOMMENDED_ROWS + 3] elif spare == 2: galleries_thumbs_2 = reversed(galleries_thumbs[:2]) galleries_thumbs = galleries_thumbs[2 : number_rows * RECOMMENDED_ROWS + 2] elif spare == 1: galleries_thumbs_1 = reversed(galleries_thumbs[:1]) galleries_thumbs = galleries_thumbs[1 : number_rows * RECOMMENDED_ROWS + 1] number_pictures_all = (pictures_all.count() / RECOMMENDED_ROWS) * RECOMMENDED_ROWS if pictures_all: main_picture = pictures_all[0] twitter_gallery = pictures_all[0:4] else: main_picture = None if galleries: twitter_gallery = [x.picture_set.first() for x in galleries[0:4]] main_picture = twitter_gallery[0] else: twitter_gallery = None galleries_odd = False if galleries: if galleries.count() % 2 == 1: galleries_odd = True return render( request, "user_gallery.html", { "pictures_all": pictures_all, "pictures_clearing": pictures_clearing, "pictures_all_3": pictures_all_3, "pictures_all_2": pictures_all_2, "pictures_all_1": pictures_all_1, "pictures_count": pictures_count, "galleries_thumbs": galleries_thumbs, "galleries_thumbs_3": galleries_thumbs_3, "galleries_thumbs_2": galleries_thumbs_2, "galleries_thumbs_1": galleries_thumbs_1, "twitter_gallery": twitter_gallery, "user_gravatar_url": user_gravatar_url, "picup_user": picup_user, "galleries": galleries, "gallery": gallery, "picup_profile": picup_profile, "main_picture": main_picture, "picture": main_picture, "galleries_odd": galleries_odd, }, )
def picture_view(request, picture_id, oembed=False): """Single picture view. Parameters ---------- picture_id : int oembed : bool """ try: picture = Picture.objects.get(id=picture_id) except Picture.DoesNotExist: raise Http404 user_gravatar_url = get_gravatar_url(picture.user.email) picup_profile = get_or_create_profile(picture.user) gallery = None picture_next = picture_previous = picture_first = picture_last = None # To show the background below top bar if not picup_profile.profile_picture: galleries = Gallery.objects.filter( user=picture.user).order_by('title').annotate( num_pictures=Count('picture')).filter(num_pictures__gt=0)[0:1] else: galleries = None gallery_pictures = [] metadata_dict = {} if picture.gallery: if picture.gallery.exif: metadata = get_metadata(picture.picture.file.name) metadata_dict = {} for mkey in metadata.exif_keys: try: if mkey.find('Thumbnail') < 0: if len(metadata[mkey].value.__str__()) < 32: new_mkey = mkey.replace('Exif.', '') metadata_dict[new_mkey] = metadata[mkey].value except UnicodeEncodeError: pass except ValueError: pass metadata_dict = collections.OrderedDict( sorted(metadata_dict.items())) gallery = picture.gallery gallery_pictures = gallery.picture_set.all() pictures_ids = [x.id for x in gallery_pictures] picture_pos = pictures_ids.index(int(picture_id)) #TODO: Optimize picture_first = Picture.objects.get(id=pictures_ids[0]) picture_last = Picture.objects.get(id=pictures_ids[len(pictures_ids) - 1]) if picture_pos < len(pictures_ids) - 1: picture_next = Picture.objects.get(id=pictures_ids[picture_pos + 1]) if picture_pos > 0: picture_previous = Picture.objects.get( id=pictures_ids[picture_pos - 1]) others_pictures = [] if picture.gallery: others_pictures = Picture.objects.filter( user=picture.user, gallery=picture.gallery).exclude(id=picture.id) if picture_next: others_pictures = others_pictures.exclude(id=picture_next.id) if picture_previous: others_pictures = others_pictures.exclude(id=picture_previous.id) others_pictures = others_pictures[0:4] metadata_dict_legacy = metadata_dict metadata_dict = {} for meta_entity in metadata_dict_legacy.keys(): try: metadata_dict[meta_entity] = metadata_dict_legacy[meta_entity] except UnicodeDecodeError: pass except UnicodeEncodeError: pass if oembed == False: return render( request, "picture_view.html", { 'picture': picture, 'picup_profile': picup_profile, 'picture_next': picture_next, 'picture_first': picture_first, 'picture_last': picture_last, 'picture_previous': picture_previous, 'galleries': galleries, 'metadata': metadata_dict, 'user_gravatar_url': user_gravatar_url, 'gallery_pictures': gallery_pictures, 'others_pictures': others_pictures }) else: result = {} result['version'] = "1.0" result['type'] = 'photo' result['title'] = 'PicUp - Pictures Sharing' result['url'] = 'https://picup.it/p/%s/' % picture_id result['author_name'] = 'PicUp user' result['provider_name'] = 'PicUp' result['provider_url'] = 'https://picup.it/' result["width"] = "516" result["height"] = "320" result[ "html"] = "<iframe src='https://picup.it/p/%s/' width='516px' height='315px' frameBorder='0'></iframe>" % picture_id return HttpResponse(json.dumps(result), content_type='application/json')
def user_gallery(request, user_id, gallery_id=None): """User's public user. Parameters ---------- user_id : int gallery_id : int Note ----- When gallery_id is None it servers user'r public profile page. """ try: if int(user_id) == 1: raise Http404 except ValueError: raise Http404 try: picup_user = User.objects.get(id=user_id) except User.DoesNotExist: raise Http404 picup_profile = get_or_create_profile(picup_user) pictures_all = Picture.objects.filter(user=picup_user).order_by('-created') if gallery_id: try: gallery = Gallery.objects.get(id=gallery_id) pictures_all = pictures_all.filter( gallery=gallery).order_by('-created') except Gallery.DoesNotExist: raise Http404 else: pictures_all = pictures_all.filter( gallery_id=None).order_by('-created') gallery = None pictures_clearing = pictures_all galleries = Gallery.objects.filter( user=picup_user).order_by('title').annotate( num_pictures=Count('picture')).filter(num_pictures__gt=0) user_gravatar_url = get_gravatar_url(picup_user.email) pictures_all_3 = pictures_all_2 = pictures_all_1 = None pictures_count = pictures_all.count() if pictures_all.count() < RECOMMENDED_ROWS: spare = pictures_all.count() else: spare = pictures_all.count() % RECOMMENDED_ROWS number_rows = pictures_all.count() / RECOMMENDED_ROWS if spare == 3: pictures_all_3 = reversed(pictures_all[:3]) pictures_all = pictures_all[3:number_rows * RECOMMENDED_ROWS + 3] elif spare == 2: pictures_all_2 = reversed(pictures_all[:2]) pictures_all = pictures_all[2:number_rows * RECOMMENDED_ROWS + 2] elif spare == 1: pictures_all_1 = reversed(pictures_all[:1]) pictures_all = pictures_all[1:number_rows * RECOMMENDED_ROWS + 1] galleries_thumbs = galleries galleries_thumbs_3 = galleries_thumbs_2 = galleries_thumbs_1 = None if galleries.count() < RECOMMENDED_ROWS: spare = galleries.count() else: spare = galleries.count() % RECOMMENDED_ROWS number_rows = galleries.count() / RECOMMENDED_ROWS if spare == 3: galleries_thumbs_3 = reversed(galleries_thumbs[:3]) galleries_thumbs = galleries_thumbs[3:number_rows * RECOMMENDED_ROWS + 3] elif spare == 2: galleries_thumbs_2 = reversed(galleries_thumbs[:2]) galleries_thumbs = galleries_thumbs[2:number_rows * RECOMMENDED_ROWS + 2] elif spare == 1: galleries_thumbs_1 = reversed(galleries_thumbs[:1]) galleries_thumbs = galleries_thumbs[1:number_rows * RECOMMENDED_ROWS + 1] number_pictures_all = ((pictures_all.count() / RECOMMENDED_ROWS) * RECOMMENDED_ROWS) if pictures_all: main_picture = pictures_all[0] twitter_gallery = pictures_all[0:4] else: main_picture = None if galleries: twitter_gallery = [x.picture_set.first() for x in galleries[0:4]] main_picture = twitter_gallery[0] else: twitter_gallery = None galleries_odd = False if galleries: if galleries.count() % 2 == 1: galleries_odd = True return render( request, 'user_gallery.html', { 'pictures_all': pictures_all, 'pictures_clearing': pictures_clearing, 'pictures_all_3': pictures_all_3, 'pictures_all_2': pictures_all_2, 'pictures_all_1': pictures_all_1, 'pictures_count': pictures_count, 'galleries_thumbs': galleries_thumbs, 'galleries_thumbs_3': galleries_thumbs_3, 'galleries_thumbs_2': galleries_thumbs_2, 'galleries_thumbs_1': galleries_thumbs_1, 'twitter_gallery': twitter_gallery, 'user_gravatar_url': user_gravatar_url, 'picup_user': picup_user, 'galleries': galleries, 'gallery': gallery, 'picup_profile': picup_profile, 'main_picture': main_picture, 'picture': main_picture, 'galleries_odd': galleries_odd })