def upload_plant(request): index, type_, root = 'plants', 'planttype', 'plant' if request.user is None: raise Forbidden() if request.method == 'POST': pic = request.POST.get('picture') name = request.POST.get('name', '') if not name: name = str(uuid4()) if pic not in (None, ''): name, ext = _save_pic(pic, request, name) filename = name + ext else: filename = None # TODO: check if plant exist first # Add to Elastic Search doc = { 'user': request.user.id, 'timestamp': datetime.datetime.utcnow(), 'filename': filename, 'gravatar': gravatar_image_url(request.user.email), 'geo_longitude': request.POST.get('longitude'), 'geo_latitude': request.POST.get('latitude'), 'geo_accuracy': request.POST.get('accuracy'), 'name': name, } logger.debug("Indexing plant %s: %r", name, doc) res = request.db.index(doc, index, type_, name) if not res['ok']: logger.error("Error while creating plant %s", name) logger.error(res) raise HTTPServerError() request.db.refresh() request.session.flash('Plant registered') return HTTPFound(location='/%s/%s' % (root, name)) return _basic(request)
def _upload(request, index, type_, root): if request.user is None: raise Forbidden() if request.method == 'POST': pic = request.POST.get('picture') file_uuid = request.POST.get('name', str(uuid4())) if pic is not None: file_uuid, ext = _save_pic(pic, request, file_uuid) else: ext = '.bin' # Add to Elastic Search doc = { 'user': request.user.id, 'timestamp': datetime.datetime.utcnow(), 'filename': file_uuid + ext, 'gravatar': gravatar_image_url(request.user.email), 'geo_longitude': request.POST.get('longitude'), 'geo_latitude': request.POST.get('latitude'), 'geo_accuracy': request.POST.get('accuracy'), 'name': request.POST.get('name') } res = request.db.index(doc, index, type_, file_uuid) if not res['ok']: logger.error("Error while saving index %r for %r", index, file_uuid) logger.error(res) raise HTTPServerError() request.db.refresh() request.session.flash('Image uploaded') return HTTPFound(location='/%s/%s' % (root, file_uuid + ext)) return _basic(request)