def insertDataImage(request): if request.method == 'POST': # If the form has been submitted... stationform = StationForm(request.user.get_username(),request.POST, request.FILES) # A form bound to the POST data nominatimform = NominatimForm(request.POST) # A form bound to the POST data form = ImageForm(request.POST, request.FILES) # A form bound to the POST data if stationform.is_valid(): # All validation rules pass slug=stationform.cleaned_data['station_slug'] if slug: station=StationMetadata.objects.get(ident__username=request.user.username,slug=slug) #stationlat=station.lat #stationlon=station.lon request.POST['geom']= str(Point(station.lon,station.lat)) return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform}) else: stationform = StationForm(request.user.get_username()) return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform,"invalid":True}) if nominatimform.is_valid(): # All validation rules pass address=nominatimform.cleaned_data['address'] if address: nom = Nominatim(base_url="http://nominatim.openstreetmap.org") result=nom.query(address,limit=1,countrycodes="IT") if len(result) >= 1: lat= result[0]["lat"] lon= result[0]["lon"] address= result[0]["display_name"] request.POST['geom']= str(Point(float(lon),float(lat))) request.POST['address']= address return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform}) else: nominatimform = NominatimForm() return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform,"invalid":True}) if form.is_valid(): # All validation rules pass if True: from rmap import exifutils comment=form.cleaned_data['comment'] geom=form.cleaned_data['geom'] image=request.FILES['image'] dt=datetime.utcnow().replace(microsecond=0) lon=geom['coordinates'][0] lat=geom['coordinates'][1] image=image.read() body=exifutils.setgeoimage(image,lat,lon,imagedescription=request.user.username,usercomment=comment) else: import pexif img = pexif.JpegFile.fromString(handle_uploaded_file(image).encode("utf8")) exif = img.get_exif() if exif: primary = exif.get_primary() if not exif is None or not primary is None: primary.ImageDescription = str(request.user.username) #primary.ExtendedEXIF.UserComment = "UNICODE"+chr(0x00)+str(comment) primary.ExtendedEXIF.UserComment = chr(0x55)+chr(0x4E)+chr(0x49)+chr(0x43)+chr(0x4F)+chr(0x44)+chr(0x45)+chr(0x00)+str(comment) img.set_geo(lat,lon) # try: # print primary.DateTime # except: # print "DateTime not present" primary.DateTime=datetime.utcnow().strftime("%Y:%m:%d %H:%M:%S") # print primary.DateTime body=img.writeString() #grimages=GeorefencedImage.objects.filter(ident__username=ident) #grimages=GeorefencedImage.objects.filter(id=1) #f = NamedTemporaryFile(delete=False) #image = File(f) #image.write(body) #f.close() #os.unlink(f.name) if True: #inserimento diretto in DB geoimage=GeorefencedImage(active=True,geom = geom,comment=comment,ident=request.user, date=dt, category = CATEGORY_CHOICES[1]) geoimage.image.save('geoimage.jpg',ContentFile(body)) geoimage.save() else: # invio ad AMQP #quale utente usare per AMQP; ho l'utente ma non la password #bisognerebbe abilitare tutti gli admin a pubblicare immagini e qui usare amqpuser #user=request.user.username, user=rmap.settings.amqpuser password=rmap.settings.amqppassword import rmap.rmap_core rmap.rmap_core.send2amqp(body=body, user=user, password=password, host="localhost", exchange="photo",routing_key="photo") #return HttpResponseRedirect(reverse('geoimage-ident-id', args=[request.user.username,geoimage.pk])) return HttpResponseRedirect(reverse('geoimage-ident', args=[request.user.username])) else: form = ImageForm() # An unbound form return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform,"invalid":True}) else: stationform = StationForm(request.user.get_username()) # An unbound form nominatimform = NominatimForm() # An unbound form form = ImageForm() # An unbound form return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform})
def insertDataImage(request): if request.method == 'POST': # If the form has been submitted... stationform = StationForm(request.user.get_username(),request.POST, request.FILES) # A form bound to the POST data nominatimform = NominatimForm(request.POST) # A form bound to the POST data form = ImageForm(request.POST, request.FILES) # A form bound to the POST data if stationform.is_valid(): # All validation rules pass slug=stationform.cleaned_data['station_slug'] if slug: station=StationMetadata.objects.get(ident__username=request.user.username,slug=slug) #stationlat=station.lat #stationlon=station.lon POST=request.POST.copy() POST['geom']= str(Point(station.lon,station.lat)) stationform = StationForm(request.user.get_username(),POST, request.FILES) # A form bound to the new data form = ImageForm(POST, request.FILES) # A form bound to the new data return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform}) else: stationform = StationForm(request.user.get_username()) return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform,"invalid":True}) if nominatimform.is_valid(): # All validation rules pass address=nominatimform.cleaned_data['address'] if address: nom = Nominatim(base_url="http://nominatim.openstreetmap.org",referer= get_current_site(request)) result=nom.query(address,limit=1,countrycodes="IT") if len(result) >= 1: lat= result[0]["lat"] lon= result[0]["lon"] address= result[0]["display_name"] POST=request.POST.copy() POST['geom']= str(Point(float(lon),float(lat))) POST['address']= address stationform = StationForm(request.user.get_username(),POST, request.FILES) # A form bound to the new data nominatimform = NominatimForm(POST) # A form bound to the new data form = ImageForm(POST, request.FILES) # A form bound to the new data return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform}) else: nominatimform = NominatimForm() return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform,"invalid":True}) if form.is_valid(): # All validation rules pass if True: from rmap import exifutils comment=form.cleaned_data['comment'] geom=form.cleaned_data['geom'] image=request.FILES['image'] dt=datetime.utcnow().replace(microsecond=0) lon=geom['coordinates'][0] lat=geom['coordinates'][1] image=image.read() body=exifutils.setgeoimage(image,lat,lon,imagedescription=request.user.username,usercomment=comment) else: import pexif img = pexif.JpegFile.fromString(handle_uploaded_file(image).encode("utf8")) exif = img.get_exif() if exif: primary = exif.get_primary() if not exif is None or not primary is None: primary.ImageDescription = str(request.user.username) #primary.ExtendedEXIF.UserComment = "UNICODE"+chr(0x00)+str(comment) primary.ExtendedEXIF.UserComment = chr(0x55)+chr(0x4E)+chr(0x49)+chr(0x43)+chr(0x4F)+chr(0x44)+chr(0x45)+chr(0x00)+str(comment) img.set_geo(lat,lon) # try: # print primary.DateTime # except: # print "DateTime not present" primary.DateTime=datetime.utcnow().strftime("%Y:%m:%d %H:%M:%S") # print primary.DateTime body=img.writeString() #grimages=GeorefencedImage.objects.filter(ident__username=ident) #grimages=GeorefencedImage.objects.filter(id=1) #f = NamedTemporaryFile(delete=False) #image = File(f) #image.write(body) #f.close() #os.unlink(f.name) if True: #inserimento diretto in DB geoimage=GeorefencedImage(active=True,geom = geom,comment=comment,ident=request.user, date=dt, category = CATEGORY_CHOICES[1]) geoimage.image.save('geoimage.jpg',ContentFile(body)) geoimage.save() else: # invio ad AMQP #quale utente usare per AMQP; ho l'utente ma non la password #bisognerebbe abilitare tutti gli admin a pubblicare immagini e qui usare amqpuser #user=request.user.username, user=rmap.settings.amqpuser password=rmap.settings.amqppassword rmap.rmap_core.send2amqp(body=body, user=user, password=password, host="localhost", exchange="photo",routing_key="photo") #return HttpResponseRedirect(reverse('geoimage-ident-id', args=[request.user.username,geoimage.pk])) return HttpResponseRedirect(reverse('geoimage-ident', args=[request.user.username])) else: form = ImageForm() # An unbound form return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform,"invalid":True}) else: stationform = StationForm(request.user.get_username()) # An unbound form nominatimform = NominatimForm() # An unbound form form = ImageForm() # An unbound form return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform})