def update_picture_database(album_name): """ Updates the picture database that has field name 'album_name'. Performs a twitter REST API search with 'album_name' as a hashtag and retrive the new pictures from results to be added to Picture database. """ hashtag = "#" + album_name # 'tweets_result' list has the following contents: [media_url, favorite_count, user_screen_name, tweet_id] tweets_result = search(hashtag) # remove results that already exists in database pivots = ["tweet_id", "src_url"] print "Result tweets has %d results BEFORE duplicate removal." % len(tweets_result) for pivot in pivots: if len(tweets_result) <= 0: print "No new tweets are found." break tweets_result = remove_duplicates(tweets_result, pivot) print "Result tweets has %d results AFTER duplicate removal." % len(tweets_result) # modify picture contents. # modifications are: # 1. set new picture name to be stored # 2. extract image contents from url if len(tweets_result) > 0: new_pictures = [] for i in range(len(tweets_result)): # set new img name to be stored src = tweets_result[i][0] new_img_name = generate_img_filename(src) # extract img content and put to new file new_img_file = get_img_content(src, new_img_name) new_pictures.append(new_img_file) # upload new_pictures list to s3 bucket upload_to_bucket(new_pictures, album_name) print "New '%s' album images has been uploaded to S3 bucket." % album_name # upload contents to database i = 0 album = Album.objects.get(name=album_name) # get album object if album != None: for img in tweets_result: pic = Picture( album=album, url=new_pictures[i][0], src_url=img[0], like_count=img[1], owner=img[2], tweet_id=img[3], ) pic.save() print "%s saved to database." % img[0] i += 1 # fire off signal abcd = Picture(album=album, url=new_pictures[0], like_count=img[1], owner=img[2], tweet_id=img[3]) send_email.send(sender=Picture, instance=abcd) return
def api_upload(request): if request.method == 'POST': picture = Picture() user = User.objects.get(email=request.POST['email']) picture.user = user form = UploadFileForm(request.POST, request.FILES, instance=picture) if form.is_valid(): picture.picture = request.FILES['picture'] if request.POST.has_key('gallery_id'): gallery = Gallery.objects.get(id=request.POST['gallery_id'], user=user) picture.gallery = gallery picture.picture.name = unidecode(picture.picture.name) picture.save() rotate_picture(picture) picture.update_thumb() if request.POST.has_key('description'): picture_description = PictureDescription(picture=picture) picture_description.text = request.POST['description'] picture_description.save() response = {'status': 'OK'} response['data'] = serialize_picture(picture) return HttpResponse(json.dumps(response)) return HttpResponse(content_200)
def api_upload(request): if request.method == 'POST': picture = Picture() user = User.objects.get(email=request.POST['email']) picture.user = user form = UploadFileForm(request.POST, request.FILES, instance=picture) if form.is_valid(): picture.picture = request.FILES['picture'] if request.POST.has_key('gallery_id'): gallery = Gallery.objects.get(id=request.POST['gallery_id'], user=user) picture.gallery = gallery picture.picture.name = unidecode(picture.picture.name) picture.save() rotate_picture(picture) picture.update_thumb() if request.POST.has_key('description'): picture_description = PictureDescription(picture=picture) picture_description.text = request.POST['description'] picture_description.save() response = {'status':'OK'} response['data'] = serialize_picture(picture) return HttpResponse(json.dumps(response)) return HttpResponse(content_200)
def add_to_db(image_files): for image_file in image_files: image_filename = image_file.rsplit('/', 1)[1] # Get filename if not Picture.objects.filter(filename=image_filename).exists(): picture = Picture(name=os.path.splitext(image_filename)[0], \ filename=image_filename, \ fspath=image_file, \ media_url=MEDIA_URL + image_file.split(MEDIA_ROOT)[1]) picture.save() print 'Added to DB: ' + image_filename
def picture(): p = {"picture": "img/1.jpg"} if request.method == "POST": file = request.files.get("photo") file_name = file.filename file_path = "img/%s" % file_name save_path = os.path.join(STATICFILES_DIR, file_path) file.save(save_path) p = Picture() p.picture = file_path p.save() return render_template("picture.html", **locals())
def picture(): p={'picture':'img/photo.jpg'} if request.method == 'POST': file=request.files.get('photo') file_name=file.filename file_path='img/%s'%file_name save_path=os.path.join(STATICFILES_DIR,file_path) file.save(save_path) p=Picture() p.picture=file_path p.save() return render_template('picture.html',**locals())
def classify_add_picture_by_url(request): global saved_url global results if request.method=="POST": saved_url=request.POST['original_image_url'] saved_path=download_img(saved_url) saved_path=quote(saved_path) img=Picture(original_image=saved_path) img.save() img=Picture.objects.order_by('-id')[0] saved_url=unquote(unquote(img.original_image.url)) print saved_url results=classify(saved_url) return HttpResponseRedirect('/deeplearning/image_text/')
def update(request): today = utils.getToday() prefix = settings.BASE_DIR + "/static/data/" + today if not os.path.exists(prefix): return HttpResponse("ERROR: today's pictures are not uploaded.") lunch9, lunch22, dinner9, dinner22 = utils.getFileLists() todayD = dateutil.parser.parse(today).date() pics = Picture.objects.filter(date__range=(todayD, todayD)) cnt = 0 for file in lunch9: if len(pics.filter(picName=file)) == 0: pic = Picture(picName=file, mealTime="L", floor=9, like=0, dislike=0) pic.save() cnt += 1 for file in lunch22: if len(pics.filter(picName=file)) == 0: pic = Picture(picName=file, mealTime="L", floor=22, like=0, dislike=0) pic.save() cnt += 1 for file in dinner9: if len(pics.filter(picName=file)) == 0: pic = Picture(picName=file, mealTime="D", floor=9, like=0, dislike=0) pic.save() cnt += 1 for file in dinner22: if len(pics.filter(picName=file)) == 0: pic = Picture(picName=file, mealTime="D", floor=22, like=0, dislike=0) pic.save() cnt += 1 return HttpResponse("INFO: updated %d pictures" % cnt)
def review_photo(request, project_id): print project_id review = None try: review = get_object_or_404(ApplicationReview, pk=project_id) print review except Http404: review = ApplicationReview(id=99999) # hack an empty review print request.FILES picture = Picture(review=review, file=request.FILES["files"]) picture.save() return HttpResponse(json.dumps("OK"), content_type="application/json")
def save_image(dfile): """ given a django file handle, save the image """ data = dfile.read() name = urlsafe_b64encode(sha1(data).digest()) suffix = None if data[0:8] == PNG_HEADER: suffix = 'png' elif data[0:2] == JPEG_HEADER: suffix = JPEG_SUFFIX elif data[0:6] == GIF89A_HEADER or data[0:6] == GIF87A_HEADER: suffix = 'gif' else: suffix = JPEG_SUFFIX # we'll just force-convert it to a jpeg # (assuming imagemagick can read it) # fixme: in the future, thread this # keep everything in pipes to save disk hits s3_put("%s-%s.%s" % (name, 'original', suffix), data, SUFFIX_TO_CTYPE[suffix], False) pipe = Popen(["convert", "-auto-orient", "-quality", str(JPEG_QUALITY if suffix==JPEG_SUFFIX else PNG_QUALITY), '-resize', "%dx%d>" % (SLIDE_WIDTH, SLIDE_HEIGHT), "-", "%s:-" % suffix], stdout=PIPE, stdin=PIPE) slide = pipe.communicate(data)[0] if pipe.returncode != 0: return False s3_put("%s-%s.%s" % (name, 'slide', suffix), slide, SUFFIX_TO_CTYPE[suffix], True) pipe = Popen(["convert", "-auto-orient", "-quality", str(JPEG_QUALITY if suffix==JPEG_SUFFIX else PNG_QUALITY), '-resize', "%dx%d>" % (THUMB_WIDTH, THUMB_HEIGHT), "-[0]", "%s:-" % suffix], stdout=PIPE, stdin=PIPE) thumb = pipe.communicate(slide)[0] if pipe.returncode != 0: return False s3_put("%s-%s.%s" % (name, 'thumb', suffix), thumb, SUFFIX_TO_CTYPE[suffix], True) pic = Picture(name=name, suffix=suffix) pic.save() return pic
def setUp(self): self.client.login(username='******', password='******') # Set up test Picture and Gallery. # These must be set up here instead of in fixtures in order to allow Picture # to use a NamedTemporaryFile. tdir = tempfile.gettempdir() file1 = tempfile.NamedTemporaryFile(suffix=".file1", dir=tdir) file1.write('a' * (2 ** 21)) filename = file1.name file1.close() g = Gallery(name="Test Gallery") g.save() p = Picture(name="Test Picture", image=filename, gallery=g) p.save()
def create_picture(request): token = getToken(request.META) user = getUser(token) if(not user): return Response(status=status.HTTP_403_FORBIDDEN) serialized = PictureSerializer(data=request.DATA) image = request.FILES['image'] if(serialized.is_valid): picture = Picture() picture.title = serialized.initial_data['title'] picture.image.save(image.name, image) picture.save() return Response(status=status.HTTP_201_CREATED) else: return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
def index(request): pictures = Picture.objects.all() toppeople = picture_people.objects.all().select_related( "picture").order_by("person") toptags = picture_tag.objects.all().select_related("picture").order_by( "tag") toptags = toptags[:4] newTop = [] names = [] for item in toppeople: print(item.person) print(item.person not in newTop) if item.person != "" and item.person not in names: newTop.append(item) names.append(item.person) toppeople = newTop[:4] print(toppeople) print(toptags) if request.method == 'POST': fileupload = request.FILES.get('fileupload') tags = request.POST.get('tags') people = request.POST.get('people') location = request.POST.get('location') newPic = Picture(picture=fileupload, location=location) newPic.save() print(fileupload) indTags = tags.split(", ") indPeople = people.split(", ") print(indTags) print(indPeople) print(fileupload) for item in indTags: print(item) pic_tag = picture_tag(picture=newPic, tag=item) pic_tag.save() for item in indPeople: pic_people = picture_people(picture=newPic, person=item) pic_people.save() return redirect(index) return render(request, 'pictures/index.html', { 'pictures': pictures, 'toppeople': toppeople, 'toptags': toptags, })
def upload_picture(request): """Upload picture view. """ if request.method == 'POST': picture = Picture() picture.user = request.user form = UploadFileForm(request.POST, request.FILES, instance=picture) response = {} if form.is_valid(): picture.picture = request.FILES['picture'] picture.picture.name = unidecode(picture.picture.name) picture.save() ### nasty error at 3:45 AM ;/ try: rotate_picture(picture) picture.update_thumb() picture.save() except: import sys, traceback traceback.print_exc(file=sys.stdout) picture.delete() response[ 'status'] = 'UPLOAD ERROR. PUT HELMET ON AND EVACUATE!!!' response = json.dumps(response) return HttpResponse(response) response['url'] = picture.picture_thumb.url response['id'] = picture.id response = json.dumps(response) else: response = "Failed to upload" else: if request.GET.has_key('gallery_id'): preffered_gallery = int(request.GET['gallery_id']) else: preffered_gallery = None galleries = Gallery.objects.filter(user=request.user) return render(request, "upload.html", { 'galleries': galleries, 'preffered_gallery': preffered_gallery }) return HttpResponse(response)
def upload_file(request, object_id): """ takes every files sent by the request upload and insert them inside the database. """ a = get_object_or_404(Album, pk=object_id) if request.method == 'POST': for file in request.FILES.getlist('file'): p = Picture(picture=file, album=a) p.save() return render_to_response('success/url.html', RequestContext(request, {})) else: form = UploadFileForm() context = {'form':form, 'album':a } return render_to_response('admin/albums/upload.html', RequestContext(request, context))
def post(self, request): # Get username from html username = request.POST.get("username") # Check if username is empty if username != "": # Look for username in the database # Filter by username user = User.objects.filter(user_name=username) # If username exists in the database return its account_id if user.count() > 0: return redirect("show_gallery:template1", pk=user.values("account_id")[0]["account_id"]) else: r = requests.get( "https://api.instagram.com/v1/users/search?access_token=1497402817.1fb234f.1b8969bb3b304945a6782ae574069017&q={}".format( username ) ) # Check if the API request returns any data, meaning that the user exists in instagram data = r.json()["data"] if data != []: # Add user to database user = getUser(data, username) username = user["username"] id = user["id"] new_user = User(account_id="{}".format(id), user_name="{}".format(username)) new_user.save() # Get the pictures r = requests.get( "https://api.instagram.com/v1/users/{}/media/recent?access_token=1497402817.1fb234f.1b8969bb3b304945a6782ae574069017".format( id ) ) r = r.json() for picture in r["data"]: picture_name = picture["images"]["standard_resolution"]["url"] new_pic = Picture(user_name=new_user, picture_name="{}".format(picture_name)) new_pic.save() return redirect("show_gallery:template1", pk=id) # User does not exist else: return render(request, "show_gallery/index.html", {"error_message": "User does not exist"}) else: return render(request, "show_gallery/index.html", {"error_message": "Empty field"})
def upload_image(request): if request.method == "POST": if len(request.FILES) > 0: filename = save_file(request.FILES['picture']) width, height = get_image_size(filename) picture = Picture() picture.picture_url = filename picture.posted_on = datetime.datetime.now() picture.text = "testing hardstyle" picture.published = True picture.width = width picture.height = height picture.save() response_data = {} response_data['image_id'] = picture.pk return HttpResponse(simplejson.dumps(response_data), mimetype="application/json")
def upload_file(request, object_id): """ takes every files sent by the request upload and insert them inside the database. """ a = get_object_or_404(Album, pk=object_id) if request.method == 'POST': for file in request.FILES.getlist('file'): p = Picture(picture=file, album=a) p.save() return render_to_response('success/url.html', RequestContext(request, {})) else: form = UploadFileForm() context = {'form': form, 'album': a} return render_to_response('admin/albums/upload.html', RequestContext(request, context))
def upload_picture(request): """Upload picture view. """ if request.method == "POST": picture = Picture() picture.user = request.user form = UploadFileForm(request.POST, request.FILES, instance=picture) response = {} if form.is_valid(): picture.picture = request.FILES["picture"] picture.picture.name = unidecode(picture.picture.name) picture.save() ### nasty error at 3:45 AM ;/ try: rotate_picture(picture) picture.update_thumb() picture.save() except: import sys, traceback traceback.print_exc(file=sys.stdout) picture.delete() response["status"] = "UPLOAD ERROR. PUT HELMET ON AND EVACUATE!!!" response = json.dumps(response) return HttpResponse(response) response["url"] = picture.picture_thumb.url response["id"] = picture.id response = json.dumps(response) else: response = "Failed to upload" else: if request.GET.has_key("gallery_id"): preffered_gallery = int(request.GET["gallery_id"]) else: preffered_gallery = None galleries = Gallery.objects.filter(user=request.user) return render(request, "upload.html", {"galleries": galleries, "preffered_gallery": preffered_gallery}) return HttpResponse(response)
def add_picture(request): if request.method == 'GET': return render(request, 'PicShare/uploadform.html', { 'form': PhotoUploadForm, 'user': request.user }) if request.method == 'POST': form = PhotoUploadForm(request.POST, request.FILES) if form.is_valid(): owner = request.user pic = Picture(owner=owner, caption=form.data['caption'], description=form.data['description'], image=request.FILES['image']) pic.save() return HttpResponseRedirect(reverse('profile')) else: return render(request, 'PicShare/uploadform.html', { 'form': form, 'user': request.user })
def upload(request): if request.method == "POST": filename = str(int(random.random() * 1000000)) + str(int(time.time())) + ".jpg" fh = open(settings.MEDIA_ROOT + filename , "wb") fh.write(request.POST['base64_image'].decode('base64')) fh.close() width, height = get_image_size(filename) picture = Picture() picture.picture_url = filename picture.posted_on = datetime.datetime.now() picture.width = width picture.height = height picture.text = "testing hardstyle" picture.save() response_data = {} response_data['image_id'] = picture.pk return HttpResponse(simplejson.dumps(response_data), mimetype="application/json") else: return HttpResponseRedirect("/")
def picture_upload(path, gallery): f = File(open(path, 'r')) p = Picture(img=f, gallery=gallery) name = os.path.split(path)[1] p.img.save(name, f) p.save()