Exemplo n.º 1
0
def upload_photos(request):
    if request.method == "POST":
        # get fields from page and build object
        files = request.FILES.getlist('images')
        description = request.POST['description']
        title = request.POST['title']
        pric = request.POST['price']
        pub = request.POST.get('public', False)
        if (pub == 'on'):
            pub = False
        s_instance = Photoseries(title = title , description = description, owner=request.user ,price = pric, public = pub)
        # save series before adding images
        s_instance.save(False)
        # iterate over files
        for count,a_file in enumerate(files):
            # create & save Image for every file
            p_instance = Photo(title='Photoseries Photo', image=a_file, owner=request.user, public = pub)
            p_instance.save(True)
            # add image to series
            s_instance.images.add(p_instance)
        # save modified series
        s_instance.save()
        return redirect('/photoseries/list/')

    return render(request, 'photoseries/upload.html')
Exemplo n.º 2
0
    def handle(self, *args, **options):
        if not os.path.isdir(options["folder"]):
            raise Exception("You must specify a directory to import")

        foldername = os.path.relpath(options["folder"])
        album, date, title = foldername.split("_", maxsplit=2)
        date = parse_date("{}-{}-{}".format(date[:4], date[4:6], date[6:]))
        slug = slugify("-".join([str(date), title]))

        if Album.objects.filter(title=title, date=date).exists():
            self.stdout.write(
                "An album with title ({}) and"
                " date ({}) already exists.".format(title, date)
            )
            return

        self.stdout.write("Importing album '{}' ({})".format(title, str(date)))
        album = Album(title=title, date=date, slug=slug)
        album.save()

        n = 0
        for filename in os.listdir(options["folder"]):
            try:
                photo = Photo(album=album)
                file = open(os.path.join(options["folder"], filename), "rb")
                photo.file.save(filename, File(file))
                photo.save()
                n += 1
            except Exception:
                self.stdout.write("Could not import {}".format(filename))

        self.stdout.write("Imported {} photos from {}".format(n, options["folder"]))
Exemplo n.º 3
0
    def post(self, request):

        #Crea una instancia vacía de foto
        photo_with_owner = Photo()

        #Asigna los datos
        photo_with_owner.owner = request.user

        form = PhotoForm(request.POST, instance=photo_with_owner)
        if form.is_valid():
            new_photo = form.save(
            )  #Guarda el objeto que viene en el formulario y lo devuelve

            #Poner todos los campos vacíos
            form = PhotoForm()

            success_message = 'Guardado con exito!'

            #reverse sirve para generar la url
            success_message += '<a href="{0}">'.format(
                reverse('photo_detail', args=[new_photo.pk]))
            success_message += 'Ver Foto'
            success_message += '</a>'
        context = {'form': form, 'success_message': success_message}
        return self.render(request, context)
Exemplo n.º 4
0
def send_photos(request):
    if request.method == 'POST':
        package = json.loads(request.body.decode('utf-8'))
        feedbacks = package['feedbacks']
        category_id = package['categoryId']
        product_id = package['productId']

        for feedback in feedbacks:
            for image in feedback['images']:
                photo = Photo(
                    url=image['url'],
                    width=image['width'],
                    height=image['height'],
                    item_id=product_id,
                    category_id=category_id,
                    feedback_id=feedback['feedbackId'],
                )
                try:
                    photo.save()
                except Exception:
                    pass

    response = HttpResponse("OK")
    add_access_control_headers(response)
    return response
Exemplo n.º 5
0
    def test_get(self):
        Membership.objects.create(
            type=Membership.MEMBER,
            user=self.member,
            since=date(year=2015, month=1, day=1),
            until=None,
        )

        for i in range(10):
            with open(
                os.path.join(settings.BASE_DIR, "photos/fixtures/thom_assessor.png"),
                "rb",
            ) as f:
                fi = SimpleUploadedFile(
                    name="photo{}.png".format(i),
                    content=f.read(),
                    content_type="image/png",
                )
                photo = Photo(album=self.album, file=fi)
                photo.save()

        response = self.client.get(reverse("photos:album", args=(self.album.slug,)))
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.context["album"], self.album)
        self.assertEqual(len(response.context["photos"]), 10)
Exemplo n.º 6
0
    def post(self, request):
        """
        Crea una foto en base a la informacion POST
        :param request: HttpRequest
        :return: HttpResponse
        """
        success_message = ''

        # Instancio el objeto
        photo_with_owner = Photo()

        # Asigno como propietario de la foto, al usuario que esta autenticado
        photo_with_owner.owner = request.user
        form = PhotoForm(request.POST, instance=photo_with_owner)
        if form.is_valid():
            # Guarda el objeto photo y me lo devuelve
            new_photo = form.save()
            form = PhotoForm()
            success_message = 'Guardado con éxito!'
            """No se debe usar new_photo.id, se debe usar pk. pk es la clave primaria que django identifica como id.
                El {0} nos indica el orden en el que van los argumentos
            """
            success_message += '<a href="{0}">'.format(reverse('photo_detail', args=[new_photo.pk]))
            success_message += 'Ver foto'
            success_message += '</a>'
        context = {
            'form': form,
            'success_message': success_message
        }
        return render(request, 'photos/new_photo.html', context)
Exemplo n.º 7
0
def extract_photo(request, archive_file, photo, album):
    # zipfile and tarfile are inconsistent
    if isinstance(photo, ZipInfo):
        photo_filename = photo.filename
        extract_file = archive_file.open
    elif isinstance(photo, tarfile.TarInfo):
        photo_filename = photo.name
        extract_file = archive_file.extractfile
    else:
        raise TypeError("'photo' must be a ZipInfo or TarInfo object.")

    # Ignore directories
    if not os.path.basename(photo_filename):
        return

    # Generate unique filename
    num = album.photo_set.count()
    filename, extension = os.path.splitext(photo_filename)
    new_filename = str(num).zfill(4) + extension

    photo_obj = Photo()
    photo_obj.album = album
    try:
        with extract_file(photo) as f:
            photo_obj.file.save(new_filename, File(f))

        if not save_photo(photo_obj):
            messages.add_message(request, messages.WARNING,
                                 _("{} is duplicate.").format(photo_filename))
    except (OSError, AttributeError, UnidentifiedImageError):
        messages.add_message(request, messages.WARNING,
                             _("Ignoring {}").format(photo_filename))
        if photo_obj.file.path:
            os.remove(photo_obj.file.path)
        photo_obj.delete()
Exemplo n.º 8
0
def create(request):
    '''
    Formulario para creacion de de foto (petición POST)
    param request: HttpRequest
    return: HttpResponse
    '''

    success_message = ''
    if request.method == 'GET':
        form = PhotoForm()
    else:
        photo_with_owner = Photo()
        photo_with_owner.owner = request.user # Asignar como propietario de la foto al user autenticado
        form = PhotoForm(request.POST, instance=photo_with_owner)
        if form.is_valid():
            new_photo = form.save() # Guarda el objeto y lo devuelve
            form = PhotoForm() # Al no pasar valores aparece el formulario vacio
            success_message = 'Guardado con éxito'
            success_message += '<a href="{0}">'.format(reverse('photo_detail',args=[new_photo.pk]))
            success_message += 'ver foto'
            success_message += '</a>'

    context = {
        'form': form ,
        'success_message': success_message
    }
    return render(request, 'photos/new_photo.html', context)
Exemplo n.º 9
0
    def _create_photos(self):
        # print(os.getcwd())
        with open('photos/management/commands/test-photo.csv', 'r') as fh:
            next(fh)
            for line in fh:
                image_url, dt = line.split(';')[1:3]
                image_url = image_url[1:-1]
                dt = dt.strip()[1:-1]
                photo_dt = datetime.strptime(dt, '%Y-%m-%d %H:%M:%S')

                r = requests.get(image_url, stream=True)
                if r.status_code != requests.codes.ok:
                    continue

                img_temp = NamedTemporaryFile(delete=True)
                img_temp.write(r.content)
                img_temp.flush()

                file_name = image_url.rsplit('/', 1)[1]
                tags_count = random.randint(4, 7)

                new_photo = Photo()
                new_photo.creation_date = photo_dt
                new_photo.image.save(file_name, File(img_temp), save=True)
                new_photo.tags = Tag.objects.order_by('?')[:tags_count]
                new_photo.save()
                print('\t', file_name)

        print('photos loaded, count: ', Photo.objects.count())
Exemplo n.º 10
0
    def post(self, request):
        """
         crea una foto en base a la información POST
         :param request: HttpRequest
         :return: HttpResponse
        """

        success_message = ''

        photo_with_owner = Photo()
        photo_with_owner.owner = request.user  #asigno como propietario de la foto al usuario atuenticado
        form = PhotoForm(
            request.POST, instance=photo_with_owner
        )  #especificar instancia de foto a utilizar por el formulario
        if form.is_valid():
            new_photo = form.save()  #guarda el objeto Photo y me lo devuelves
            form = PhotoForm()
            success_message = '¡Guardado con éxito!'
            success_message += '<a href="{0}">'.format(
                reverse('photo_detail', args=[new_photo.pk]))
            success_message += 'Ver foto'
            success_message += '</a>'
        context = {'form': form, 'success_message': success_message}

        return render(request, 'photos/new_photo.html', context)
Exemplo n.º 11
0
def create(request):
    """
    Show a form for create a new photo post.
    :param request: HttpRequest Object
    :return: HttpResponse Object
    """

    success_message = ''

    if request.method == 'GET': #GET REQUEST
        form = PhotoForm()
    else: #POST REQUEST
        photo_with_owner = Photo()
        photo_with_owner.owner = request.user #Automatic asign user autenticated as owner

        form = PhotoForm(request.POST,instance=photo_with_owner)
        if form.is_valid():
            new_photo = form.save() #Save the object photo and return it
            form =  PhotoForm() #Empty form after submitting
            success_message = 'Photo created succesfully'
            success_message += '<a href="{0}">'.format(reverse('photo_detail',args=[new_photo.pk]))
            success_message += 'Take a look'
            success_message += '</a>'
    context = dict(form=form,success_message=success_message)

    return render(request,'photos/new_photo.html',context)
Exemplo n.º 12
0
 def post(self, request):
     success_message = ''
     number_of_photos_uploaded = self.get_number_of_photos_from_user(
         request)
     if not check_if_uploads_remaining(number_of_photos_uploaded):
         form = PhotoForm()
         success_message = 'Ya has subido 25 fotos. Has alcansado el limite.'
     else:
         photo_with_owner = Photo()
         photo_with_owner.owner = request.user
         form = PhotoForm(request.POST, instance=photo_with_owner)
         if form.is_valid():
             new_photo = form.save()
             form = PhotoForm()
             success_message = 'Guardado con éxito'
             success_message += '<br>'
             success_message += '<br>'
             success_message += '<a href="{0}">'.format(
                 reverse('photos_detail', args=[new_photo.pk]))
             success_message += 'Ver foto'
             success_message += '</a>'
     context = {
         'form': form,
         'success_message': success_message,
         'nof': number_of_photos_uploaded,
         'nof2': 25 - number_of_photos_uploaded
     }
     return render(request, 'photos/new_photo.html', context)
Exemplo n.º 13
0
    def test_validation_fields(self):
        photo = Photo(name="")
        with self.assertRaises(IOError):
            photo.save()


#@TODO:Criar teste para o upload usando o GoogleStorage
Exemplo n.º 14
0
 def post(self, request):
     """
     Crea una foto en base a la documentacioón POST
     :param request: HttpRequest
     :param pk: id de la foto
     :return: HttpResponse
     """
     success_message = ''
     photo_with_owner = Photo()
     photo_with_owner.owner = request.user                      # asigno como usuario de la foto, el usuario auteticado
     form = PhotoForm(request.POST, instance=photo_with_owner)  # Instanciamos el formulario con los datos del POST
     if form.is_valid():                                        # Preguntar si es válido
         new_photo = form.save()                                # Guarda el objeto Photo y me lo devuelve
         form = PhotoForm()
         success_message = 'Guardado con éxito!'
         success_message += '<a href="{0}">'.format(
             reverse('photo_detail', args=[new_photo.pk])
         )
         success_message += 'Ver foto'
         success_message += '</a>'
     context = {
         'form': form,
         'success_message': success_message
     }
     return render(request, 'photos/new_photo.html', context)
Exemplo n.º 15
0
def save_latest_flick_image():
    flickr_image = get_latest_flickr_image()

    if not Photo.objects.filter(link=flickr_image['link']).exists():
        photo = Photo(title=flickr_image['title'],
                      link=flickr_image['link'],
                      image_url=flickr_image['media']['m'],
                      description=flickr_image['description'])
        photo.save()
Exemplo n.º 16
0
 def post(self, request):
     photo = Photo()
     photo.owner = request.user
     form = PhotoForm(request.POST, instance=photo)
     if form.is_valid():
         new_photo = form.save()
         messages.success(
             request,
             'Foto creada correctamente con ID {0}'.format(new_photo.pk))
         form = PhotoForm()
     context = {'form': form}
     return render(request, 'photos/new.html', context)
Exemplo n.º 17
0
 def create_photo_model(self, name='testname', border_color="#FFFFFF",
                        created_at=None):
     photo = Photo(
         owner=self.user,
         photo=self.create_image_file(),
         name=name,
         border_color=border_color,
     )
     photo.save()
     if created_at is not None:
         Photo.objects.filter(pk=photo.pk).update(created_at=created_at)
     return photo
Exemplo n.º 18
0
def save_latest_flickr_image():
    """
    We get the lastest image and save it to our Photo Model in the Database
    """
    flickr_image = get_latest_flickr_image()
    # lets make sure we don't save the same image more than once
    # we are assuming each Flickr image has a unique Link
    if not Photo.objects.filter(link=flickr_image['link']).exists():
        photo = Photo(title=flickr_image['title'],
                      link=flickr_image['link'],
                      image_url=flickr_image['media']['m'],
                      description=flickr_image['description'])
        photo.save()
Exemplo n.º 19
0
def create_photos(num_photos: int = 100):
    """Create num_photos Photos in the DB for testing"""
    photos_to_create = []
    start_date = datetime.date(year=2000, month=1, day=1)
    base_num_prints = 10
    for i in range(num_photos):
        shot_date = start_date + datetime.timedelta(days=i)
        p = Photo(image_id=i,
                  image_location='photos',
                  title=f'photo{i}',
                  shot_date=shot_date,
                  max_prints=i % base_num_prints + base_num_prints)
        photos_to_create.append(p)
    Photo.objects.bulk_create(photos_to_create)
Exemplo n.º 20
0
    def create(self, validated_data):
        post = Post.objects.get(id=self.context['request'].data['post_id'])
        images_data = self.context['request'].FILES
        photo_bulk_list = []

        for image in images_data.getlist('photos'):
            photo = Photo(post=post,
                          photo_images=image,
                          image_name=image.name,
                          user=self.context['request'].user)
            photo_bulk_list.append(photo)
        Photo.objects.bulk_create(photo_bulk_list)

        return post
Exemplo n.º 21
0
def upload(request):
    user = request.twitter_user
    if user is None:
        raise HTTPUnauthorized()
    if user.get('id') != request.registry.uploader_twitter_id:
        raise HTTPForbidden()

    media = request.POST.get('media')
    photo = Photo(media.type, request.POST.get('message', ''))
    photo.set_content(request.registry.photo_storage, media.file.read())
    DBSession.add(photo)

    return dict(photo=photo,
                user_id=user['id'],
                user_screen_name=user.get('screen_name', ''))
Exemplo n.º 22
0
    def post(self, request):
        success_message = ''
        photo_with_owner = Photo()
        photo_with_owner.owner = request.user
        form = PhotoForm(request.POST, instance=photo_with_owner)
        if form.is_valid():
            new_photo = form.save()
            form = PhotoForm()
            success_message = 'Imagen guardada con éxito! Ver '
            success_message += '<a href="{0}">'.format(
                reverse('photo_detail', args=[new_photo.pk]))
            success_message += 'foto'
            success_message += '</a>'

        context = {'new_photo_form': form, 'success_message': success_message}
        return render(request, 'photos/new_photo.html', context)
Exemplo n.º 23
0
 def post(self, request, pk, **kwargs):
     review = get_object_or_404(ParkReview, pk=pk, user=request.user)
     if review.photos.count == 10:
         return HttpResponseBadRequest('Max photos have been reached')
     im = Image.open(request.FILES.get('file'))
     width, height = im.size
     if width < 720 or height < 540:
         return HttpResponseBadRequest('Image is too small')
     else:
         photo = Photo()
         photo.park_review = review
         photo.image = request.FILES.get('file')
         photo.user = request.user
         photo.draft = True
         photo.save()
         return HttpResponse(photo.id)
Exemplo n.º 24
0
    def post(self,request):
        success_message = ''
        photo_with_owner = Photo()
        photo_with_owner.owner = request.user #Automatic asign user autenticated as owner

        form = PhotoForm(request.POST,instance=photo_with_owner)
        if form.is_valid():
            new_photo = form.save() #Save the object photo and return it
            form =  PhotoForm() #Empty form after submitting
            success_message = 'Photo created succesfully'
            success_message += '<a href="{0}">'.format(reverse('photo_detail',args=[new_photo.pk]))
            success_message += 'Take a look'
            success_message += '</a>'
        context = dict(form=form,success_message=success_message)

        return render(request,'photos/new_photo.html',context)
Exemplo n.º 25
0
def upload(request):
    file = upload_receive(request)
    instance = Photo(file=file)
    instance.save()

    basename = os.path.basename(instance.file.file.name)
    file_dict = {
        'name': basename,
        'size': instance.file.file.size,
        'url': settings.MEDIA_URL + basename,
        'thumbnail_url': settings.MEDIA_URL + basename,
        'delete_url': reverse('jfu_delete', kwargs={'pk': instance.pk}),
        'delete_type': 'POST',
    }

    return UploadResponse(request, file_dict)
Exemplo n.º 26
0
    def import_photo(self, row, photographer):
        '''
        Add or update a Photograph record from the given CSV row.
        '''
        ret = None

        image = self.get_or_create_image(row)
        if not image:
            print('WARNING: image file not found {}'.format(row['filename']))
            return ret

        created = False
        if not self.append_only:
            ret = Photo.objects.filter(image=image).first()

        if not ret:
            ret = Photo()
            created = True

        date_parts = _parse_date(row['date'])
        photo = {
            'taken_year': date_parts.year,
            'taken_month': date_parts.month,
            'taken_day': date_parts.day,
            'photographer': photographer,
            'description': (row['description'] or ''),
            'comments': row['comments'],
            'image': image,
        }
        coords = row['dd_co_ordinates']
        if coords:
            coords = coords.split()
            photo['location'] = Point(float(coords[1]), float(coords[0]))

        for field in photo:
            if photo[field]:
                setattr(ret, field, photo[field])

        ret.save()

        _print_operation(ret, created, 'title')

        # Update or Create image file as Wagtail Image
        # .image_title = ~slugify(FILENAME)
        # .file = hash(FILE).jpg

        return ret
Exemplo n.º 27
0
    def handle(self, *args, **options):

        if not args:
            raise CommandError("The <photo_target_dir> argument is required")

        img_dir = os.path.join(settings.DJANGO_PROJECT_ROOT, args[0])
        for fn in os.listdir(img_dir):
            if re.match(r'.+\.(png|jpg|gif)', fn) is not None:
                fp = os.path.join(img_dir, fn)
                self.stdout.write('Loading the photo "%s" ...' % fn)

                photo = Photo()
                photo.photo = photo.get_photo_path(fn)
                photo.photo.storage.save(photo.photo.name, File(open(fp)))
                photo.save()

        self.stdout.write('All photos loaded succesfully.')
Exemplo n.º 28
0
 def post(self, request):
     """
     Presenta el formulario para crear una foto y en caso de que la peticion sea POST la
     valida y la creat en caso de ser valida
     :param request: objeto HttpRequest con los datos de la peticion
     :return: un objeto HttpResponse con los datos de respuesta
     """
     message = None
     photo_with_user = Photo(owner=request.user)
     photo_form = PhotoForm(request.POST, instance=photo_with_user)
     if photo_form.is_valid():
         new_photo = photo_form.save()
         photo_form = PhotoForm()
         message = 'Foto creada satisfactoriamente <a href="{0}">Ver foto</a>'.format(
             reverse('photos_detail', args=[new_photo.pk]))
     context = {'form': photo_form, 'message': message}
     return render(request, 'photos/photo_creation.html', context)
Exemplo n.º 29
0
    def create_photo(self, album):
        photo = Photo()

        photo.album = album

        name = _generate_title()

        igen = IconGenerator(5, 5)  # 5x5 blocks
        icon = igen.generate(
            name,
            480,
            480,
            padding=(10, 10, 10, 10),
            output_format="jpeg",
        )  # 620x620 pixels, with 10 pixels padding on each side
        photo.file.save(f"{name}.jpeg", ContentFile(icon))

        photo.save()
Exemplo n.º 30
0
    def post(self, request):
        """
        Presenta el formulario para crear una foto
        :param request: objeto HttpRequest con los datos de la petición
        :return: HttpResponse con la plantilla
        """
        message = None
        photo_with_user = Photo(owner=request.user)
        photo_form = PhotoForm(request.POST, instance=photo_with_user)
        if photo_form.is_valid():
            new_photo = photo_form.save()
            photo_form = PhotoForm()
            message = "Foto creada satisfactoriamente. <a href='{0}'>Ver foto</a>".format(
                # obtiene la url nombrada 'photos_detail'
                reverse('photos_detail', args={new_photo.pk}))

        context = {'form': photo_form, 'message': message}
        return render(request, 'photos/photo_creation.html', context)