From 66904c061ae92cf4abb3fe6b07dcb36de42eedbb Mon Sep 17 00:00:00 2001 From: Edward Betts <edward@4angle.com> Date: Fri, 16 Jul 2021 11:14:05 +0200 Subject: [PATCH] Add per user mock upload toggle with warnings --- frontend/App.vue | 17 ++++++++++++++++- matcher/model.py | 1 + templates/map.html | 1 + 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/frontend/App.vue b/frontend/App.vue index 4b83a05..f42150d 100644 --- a/frontend/App.vue +++ b/frontend/App.vue @@ -54,7 +54,21 @@ <div class="card w-100 bg-light mb-2"> <div class="card-body"> - <p class="card-text">{{ edits.length }} edits to upload</p> + + <template v-if="upload_state === undefined"> + <div v-if="mockUpload" class="alert alert-danger"> + <i class="fa fa-exclamation-triangle"></i> + Changes won't be saved to OpenStreetMap. This software uses a mock upload process to allow testing of the user interface, while it is still in development. + </div> + <div v-else class="alert alert-info"> + <i class="fa fa-info-circle"></i> + Editing is live, changes will be uploaded to OpenStreetMap. + </div> + </template> + + <p class="card-text"> + {{ edits.length + (edits.length == 1 ? " edit" : " edits") }} to upload + </p> <form @submit.prevent="upload"> <div class="mb-3"> <label for="changesetComment" class="form-label">Changeset comment</label> @@ -590,6 +604,7 @@ export default { startMode: String, q: String, defaultComment: String, + mockUpload: Boolean, }, data() { return { diff --git a/matcher/model.py b/matcher/model.py index 84de394..dbab7b0 100644 --- a/matcher/model.py +++ b/matcher/model.py @@ -327,6 +327,7 @@ class User(Base, UserMixin): multi = Column(String) units = Column(String) wikipedia_tag = Column(Boolean, default=False) + mock_upload = Column(Boolean, default=True) osm_id = Column(Integer, index=True) osm_account_created = Column(DateTime) diff --git a/templates/map.html b/templates/map.html index 212db3e..f385a6a 100644 --- a/templates/map.html +++ b/templates/map.html @@ -28,6 +28,7 @@ username: {{ username | tojson }}, startMode: {{ mode | tojson }}, q: {{ q | tojson }}, + mockUpload: {{ g.user.is_authenticated and g.user.mock_upload | tojson }}, }; const app = createApp(App, props).mount('#app');