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'))
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'))
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')