Пример #1
0
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
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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
Пример #5
0
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())
Пример #6
0
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())
Пример #7
0
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/')
Пример #8
0
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)
Пример #9
0
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")
Пример #10
0
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
Пример #11
0
 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()
Пример #12
0
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)
Пример #13
0
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,
    })
Пример #14
0
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)
Пример #15
0
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))
Пример #16
0
 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"})
Пример #17
0
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")
Пример #18
0
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))
Пример #19
0
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)
Пример #20
0
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
            })
Пример #21
0
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)
Пример #22
0
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("/")
Пример #23
0
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()