Beispiel #1
0
def deleteMeasurement():
	if not current_user.isAdmin():
		flash(constants.NOT_ALLOWED, 'danger')
	else:
		measurementid = unicode(request.form['measurementid'])
		Measurement.delete(Measurement.get(measurementid))
		flash(constants.MEASUREMENT_DELETE_SUCCESS, 'success')
	return redirect(url_for('manageMeasurements'))
Beispiel #2
0
def manageMeasurements():
	if request.method == 'GET':
		measurements = Measurement.getAll()
		users = {}
		for user in User.getAll():
			users[user.id] = user.username
		return render_template('measurements.html', measurements=measurements, users=users)
	elif request.method == 'POST':
		month = request.form['month']
		day = request.form['day']
		year = request.form['year']
		hour = request.form['hour']
		minute = request.form['minute']
		second = request.form['second']
		ampm = request.form['ampm']
		if ampm == 'am' and hour == '12':
			hour = '00'
		elif ampm == 'pm' and hour != '12':
			hour = str(int(hour) + 12)
		try:
			t = datetime.strptime(' '.join([month, day, year, hour, minute, second]), '%m %d %Y %H %M %S')
		except ValueError:
			flash(constants.DATE_OUT_OF_RANGE, 'danger')
			return redirect(url_for('manageMeasurements'))
		
		# t = request.form['time']
		# try:
		# 	t = datetime.strptime(t, '%Y-%m-%dT%H:%M:%S')
		# except ValueError:
		# 	try:
		# 		t = datetime.strptime(t, '%Y-%m-%dT%H:%M')
		# 	except ValueError:
		# 		flash(constants.INVALID_DATE, 'danger')
		# 		return redirect(url_for('manageMeasurements'))
		
		ph = float(request.form['ph'])
		do = float(request.form['do'])
		ec = float(request.form['ec'])
		temp = float(request.form['temp'])
		
		try:
			if not (0 <= ph <=14):
				raise ValueError(constants.INVALID_PH)
			if not (0 <= do <= 36):
				raise ValueError(constants.INVALID_DO)
			if not (0 <= ec):
				raise ValueError(constants.INVALID_EC)
		except ValueError as e:
			flash(e.args[0], 'danger')
			return redirect(url_for('manageMeasurements'))
		
		measurement = Measurement.get(t)
		if measurement:
			flash(constants.TIME_TAKEN, 'danger')
		else:
			Measurement.create(Measurement(current_user.id, t, ph, do, ec, temp))
			flash(constants.MEASUREMENT_CREATE_SUCCESS, 'success')
		return redirect(url_for('manageMeasurements'))
Beispiel #3
0
def processRows(reader, filename):
	badSyntax = []
	timeTaken = []
	date = os.path.splitext(filename)[0]
	try:
		datetime.strptime(date, '%m.%d.%y')
	except ValueError:
		flash(constants.INVALID_CSV_NAME, 'danger')
		return
	
	for row in reader:
		if len(row) == 5:
			t = date + ' ' + row[0]
			try:
				t = datetime.strptime(t, '%m.%d.%y %H:%M:%S')
			except ValueError:
				try:
					t = datetime.strptime(t, '%m.%d.%y %H:%M')
				except ValueError:
					badSyntax.append(reader.line_num)
					continue
			
			ph = row[1]
			do = row[2]
			ec = row[3]
			temp = row[4]
			try:
				ph = float(ph)
				do = float(do)
				ec = float(ec)
				temp = float(temp)
				if not (0 <= ph <= 14):
					raise ValueError(constants.INVALID_PH)
				if not (0 <= do <= 36):
					raise ValueError(constants.INVALID_DO)
				if not (0 <= ec):
					raise ValueError(constants.INVALID_EC)
			except ValueError:
				badSyntax.append(reader.line_num)
				continue
			
			measurement = Measurement.get(t)
			if measurement:
				timeTaken.append(reader.line_num)
				continue
			Measurement.create(Measurement(current_user.id, t, ph, do, ec, temp))
		else:
			badSyntax.append(reader.line_num)
	
	flash(constants.CSV_UPLOAD_SUCCESS, 'success')
	if badSyntax:
		flash(constants.CSV_BAD_SYNTAX.format(json.dumps(badSyntax)), 'info')
	if timeTaken:
		flash(constants.CSV_TIME_TAKEN.format(json.dumps(timeTaken)), 'info')