Skip to content

Commit b5957b0

Browse files
committed
Add check for initdb.sql and set_up_db.sql assert.
- Update testcase related to usergroup mapping table changes. - Change Result to mapping session in test cases.
1 parent bcab10f commit b5957b0

File tree

13 files changed

+198
-266
lines changed

13 files changed

+198
-266
lines changed

.github/workflows/actions.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,13 @@ jobs:
2727
black --check mapswipe_workers ../django
2828
flake8 --count --config setup.cfg mapswipe_workers/ ../django/
2929
isort --check --settings-file setup.cfg mapswipe_workers/ ../django/
30+
- name: Assert check
31+
run: |
32+
cmp --silent ./postgres/initdb.sql ./mapswipe_workers/tests/integration/set_up_db.sql || {
33+
echo 'The set_up_db.sql is not same as initdb.sql. Please do `cp ./postgres/initdb.sql ./mapswipe_workers/tests/integration/set_up_db.sql` and push';
34+
diff ./postgres/initdb.sql ./mapswipe_workers/tests/integration/set_up_db.sql;
35+
exit 1;
36+
}
3037
- name: Setup Postgres Database Container
3138
env:
3239
POSTGRES_PASSWORD: postgres

django/apps/aggregated/management/commands/update_aggregated_data.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
AggregatedUserGroupStatData,
77
AggregatedUserStatData,
88
)
9-
from apps.existing_database.models import Result
9+
from apps.existing_database.models import MappingSession
1010
from django.core.management.base import BaseCommand
1111
from django.db import connection, models, transaction
1212
from django.utils import timezone
@@ -59,7 +59,7 @@
5959
INNER JOIN mapping_sessions MS USING (mapping_session_id)
6060
INNER JOIN task_data T USING (project_id, group_id, task_id)
6161
WHERE
62-
R.timestamp >= %(from_date)s and R.timestamp < %(until_date)s
62+
MS.start_time >= %(from_date)s and MS.start_time < %(until_date)s
6363
GROUP BY MS.project_id, MS.group_id, MS.user_id
6464
),
6565
-- Aggregate group data
@@ -114,7 +114,7 @@
114114
INNER JOIN mapping_sessions_results MSR USING (mapping_session_id)
115115
INNER JOIN tasks T USING (project_id, group_id, task_id)
116116
WHERE
117-
R.timestamp >= %(from_date)s and R.timestamp < %(until_date)s
117+
MS.start_time >= %(from_date)s and MS.start_time < %(until_date)s
118118
GROUP BY project_id, group_id, task_id
119119
),
120120
-- Calculated task area.
@@ -144,8 +144,8 @@
144144
INNER JOIN mapping_sessions_results MSR USING (mapping_session_id)
145145
INNER JOIN task_data T USING (task_id)
146146
WHERE
147-
R.timestamp >= %(from_date)s and R.timestamp < %(until_date)s
148-
GROUP BY ug.project_id, ug.group_id, ug.user_id, ug.user_group_id
147+
MS.start_time >= %(from_date)s and MS.start_time < %(until_date)s
148+
GROUP BY MS.project_id, MS.group_id, MS.user_id, MSUR.user_group_id
149149
),
150150
-- Aggregate group data
151151
user_group_agg_data as (
@@ -193,8 +193,8 @@ def _track(self, tracker_type, label, sql):
193193
from_date = datetime.datetime.strptime(tracker.value, "%Y-%m-%d").date()
194194
else:
195195
self.stdout.write(f"{label.title()} Last tracker data not found.")
196-
timestamp_min = Result.objects.aggregate(
197-
timestamp_min=models.Min("timestamp")
196+
timestamp_min = MappingSession.objects.aggregate(
197+
timestamp_min=models.Min("start_time")
198198
)["timestamp_min"]
199199
if timestamp_min:
200200
self.stdout.write(f"Using min timestamp from database {timestamp_min}")

django/apps/existing_database/factories.py

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
import factory
22
import factory.fuzzy
33
from factory.django import DjangoModelFactory
4+
from mapswipe.utils import raise_if_field_not_found
45

56
from .models import (
67
Group,
8+
MappingSession,
9+
MappingSessionResult,
10+
MappingSessionUserGroup,
711
Project,
8-
Result,
912
Task,
1013
User,
1114
UserGroup,
12-
UserGroupResult,
1315
UserGroupUserMembership,
1416
)
1517

@@ -44,40 +46,29 @@ class Meta:
4446

4547
@classmethod
4648
def _create(cls, model_class, *args, **kwargs):
47-
if "group" not in kwargs:
48-
raise Exception("Please define group")
49+
raise_if_field_not_found(kwargs, ["group"])
4950
group = kwargs.pop("group")
5051
kwargs["project"] = group.project
5152
kwargs["group_id"] = group.group_id
5253
return super()._create(model_class, *args, **kwargs)
5354

5455

55-
class ResultFactory(DjangoModelFactory):
56+
class MappingSessionFactory(DjangoModelFactory):
5657
class Meta:
57-
model = Result
58+
model = MappingSession
5859

59-
@classmethod
60-
def _create(cls, model_class, *args, **kwargs):
61-
if "task" not in kwargs:
62-
raise Exception("Please define task")
63-
task = kwargs.pop("task")
64-
kwargs["project"] = task.project
65-
kwargs["group_id"] = task.group_id
66-
kwargs["task_id"] = task.task_id
67-
return super()._create(model_class, *args, **kwargs)
60+
61+
class MappingSessionResultFactory(DjangoModelFactory):
62+
class Meta:
63+
model = MappingSessionResult
6864

6965

70-
class UserGroupResultFactory(DjangoModelFactory):
66+
class MappingSessionUserGroupFactory(DjangoModelFactory):
7167
class Meta:
72-
model = UserGroupResult
68+
model = MappingSessionUserGroup
7369

7470
@classmethod
7571
def _create(cls, model_class, *args, **kwargs):
76-
if "group" not in kwargs:
77-
raise Exception("Please define group")
78-
group = kwargs.pop("group")
79-
kwargs["project"] = group.project
80-
kwargs["group_id"] = group.group_id
8172
return super()._create(model_class, *args, **kwargs)
8273

8374

django/apps/existing_database/management/commands/create_dummy_existing_database_content.py

Lines changed: 0 additions & 159 deletions
This file was deleted.

django/apps/existing_database/management/commands/update_organization_name.py

Lines changed: 0 additions & 36 deletions
This file was deleted.
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Generated by Django 4.1.1 on 2022-12-02 10:49
2+
3+
import django.db.models.manager
4+
from django.conf import settings
5+
from django.db import migrations, models
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
("existing_database", "0001_initial"),
12+
]
13+
14+
operations = [
15+
migrations.CreateModel(
16+
name="MappingSession",
17+
fields=[
18+
("mapping_session_id", models.BigAutoField(primary_key=True)),
19+
("project_id", models.CharField(max_length=999)),
20+
("group_id", models.CharField(max_length=999)),
21+
("user_id", models.CharField(max_length=999)),
22+
("start_time", models.DateTimeField(blank=True, null=True)),
23+
("end_time", models.DateTimeField(blank=True, null=True)),
24+
("items_count", models.SmallIntegerField(default=0)),
25+
],
26+
options={
27+
"db_table": "mapping_sessions",
28+
"managed": settings.TESTING,
29+
},
30+
managers=[
31+
("cte_objects", django.db.models.manager.Manager()),
32+
],
33+
),
34+
migrations.CreateModel(
35+
name="MappingSessionResult",
36+
fields=[
37+
("mapping_session_id", models.BigIntegerField()),
38+
("task_id", models.CharField(max_length=999)),
39+
("result", models.IntegerField(blank=True, null=True)),
40+
],
41+
options={
42+
"db_table": "mapping_sessions_results",
43+
"managed": settings.TESTING,
44+
},
45+
managers=[
46+
("cte_objects", django.db.models.manager.Manager()),
47+
],
48+
),
49+
migrations.CreateModel(
50+
name="MappingSessionUserGroup",
51+
fields=[
52+
("mapping_session_id", models.BigIntegerField()),
53+
("user_group_id", models.CharField(max_length=999)),
54+
],
55+
options={
56+
"db_table": "mapping_sessions_user_groups",
57+
"managed": settings.TESTING,
58+
},
59+
managers=[
60+
("cte_objects", django.db.models.manager.Manager()),
61+
],
62+
),
63+
]

0 commit comments

Comments
 (0)