From 20dd75b1523fe152d3d5928b7c888caca9601a97 Mon Sep 17 00:00:00 2001 From: "Phyks (Lucas Verney)" Date: Thu, 1 Nov 2018 15:43:34 +0100 Subject: [PATCH] Add a source field to keep track of the source of the reports --- scripts/migrations/0.4.py | 43 +++++++++++++++++++++++++++++++++++++++ server/models.py | 1 + server/routes.py | 4 +++- src/api/index.js | 1 + 4 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 scripts/migrations/0.4.py diff --git a/scripts/migrations/0.4.py b/scripts/migrations/0.4.py new file mode 100644 index 0000000..9f02b86 --- /dev/null +++ b/scripts/migrations/0.4.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python +""" +Database migration from < 0.3 to 0.3 version. +""" +import os +import sys + +import peewee + +SCRIPT_DIRECTORY = os.path.dirname(os.path.realpath(__file__)) +sys.path.append(os.path.abspath(os.path.join(SCRIPT_DIRECTORY, '..', '..'))) + +from playhouse.migrate import * + +from server.models import db, Report +from server.tools import UTC_now + + +def run_migration(): + if type(db) == peewee.SqliteDatabase: + migrator = SqliteMigrator(db) + elif type(db) == peewee.MySQLDatabase: + migrator = MySQLMigrator(db) + elif type(db) == peewee.PostgresqlDatabase: + migrator = PostgresqlMigrator(db) + else: + return + + migrate( + migrator.add_column( + 'report', 'source', + peewee.CharField(max_length=255) + ), + ) + query = Report.select() + for report in query: + report.source = 'unknown' + report.save() + + +if __name__ == '__main__': + db.connect() + run_migration() diff --git a/server/models.py b/server/models.py index e79f92c..a9672c7 100644 --- a/server/models.py +++ b/server/models.py @@ -50,6 +50,7 @@ class Report(BaseModel): expiration_datetime = peewee.DateTimeField(null=True) upvotes = peewee.IntegerField(default=0) downvotes = peewee.IntegerField(default=0) + source = peewee.CharField(max_length=255) def to_json(self): return { diff --git a/server/routes.py b/server/routes.py index 033c529..9e30661 100644 --- a/server/routes.py +++ b/server/routes.py @@ -140,6 +140,7 @@ def post_report(): "upvotes": 0, "lng": 2.385234797066081, "type": "pothole", + "source": "survey" … }, "type": "reports", @@ -168,7 +169,8 @@ def post_report(): r = Report( type=payload['type'], lat=payload['lat'], - lng=payload['lng'] + lng=payload['lng'], + source=payload.get('source', 'unknown') ) # Handle expiration if r.type in ['accident', 'gcum']: diff --git a/src/api/index.js b/src/api/index.js index 52d7414..ff70304 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -12,6 +12,7 @@ export function saveReport(type, lat, lng) { type, lat, lng, + source: 'survey', }), headers: AUTHORIZATION_HEADERS, })