Skip to content

Commit 1e1e33e

Browse files
Rup-Narayan-Rajbanshitnagorra
authored andcommitted
chore(admin): add management command to create dummy contributor user
- Add link to view contributor users in team row. - Allow to update only team in contributor admin form.
1 parent 7aa7207 commit 1e1e33e

File tree

6 files changed

+60
-1
lines changed

6 files changed

+60
-1
lines changed

apps/contributor/admin.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
from django.contrib import admin
55
from django.db import transaction
6+
from django.urls import reverse
7+
from django.utils.html import format_html
68
from djangoql.admin import DjangoQLSearchMixin
79

810
from apps.common.admin import ArchivableResourceAdmin
@@ -19,6 +21,15 @@ class ContributorUserAdmin(DjangoQLSearchMixin, admin.ModelAdmin):
1921
"created_at",
2022
"modified_at",
2123
)
24+
readonly_fields = (
25+
"old_id",
26+
"user_id",
27+
"username",
28+
"firebase_last_pushed",
29+
"firebase_push_status",
30+
"created_at",
31+
"modified_at",
32+
)
2233
list_filter = ("team",)
2334

2435
@typing.override
@@ -42,6 +53,7 @@ class ContributorTeamAdmin(ArchivableResourceAdmin, DjangoQLSearchMixin, admin.M
4253
"is_archived",
4354
"created_at",
4455
"modified_at",
56+
"view_contributor_users",
4557
)
4658
list_filter = ("is_archived",)
4759

@@ -59,6 +71,10 @@ def save_model(self, request, obj, form, change):
5971
super().save_model(request, obj, form, change) # type: ignore[reportAttributeAccessIssue]
6072
transaction.on_commit(lambda: FirebaseContributorTeam.task.delay(obj.id))
6173

74+
def view_contributor_users(self, obj):
75+
url = reverse("admin:contributor_contributoruser_changelist") + f"?team__id__exact={obj.id}"
76+
return format_html('<a href="{}">View Contributors</a>', url)
77+
6278

6379
@admin.register(ContributorUserGroupMembership)
6480
class ContributorUserGroupMembershipAdmin(DjangoQLSearchMixin, admin.ModelAdmin):

apps/contributor/factories.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# pyright: reportIncompatibleVariableOverride=false
33
# pyright: reportMissingTypeArgument=false
44
import typing
5+
import uuid
56

67
import factory
78
from factory.django import DjangoModelFactory
@@ -20,7 +21,7 @@ class ContributorUserFactory(DjangoModelFactory):
2021
class Meta:
2122
model = ContributorUser
2223

23-
user_id = factory.Sequence(lambda n: f"unique-contributor-user-id-{n}")
24+
user_id = factory.LazyAttribute(lambda _: f"contributor-user-id-{uuid.uuid4().int % 1000000}")
2425
username = factory.Sequence(lambda n: f"Contributor User {n}")
2526

2627

apps/contributor/management/__init__.py

Whitespace-only changes.

apps/contributor/management/commands/__init__.py

Whitespace-only changes.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import logging
2+
import typing
3+
import uuid
4+
5+
from django.conf import settings
6+
from django.core.management.base import BaseCommand
7+
from django.db import transaction
8+
9+
from apps.contributor.factories import ContributorTeamFactory, ContributorUserFactory
10+
from apps.contributor.firebase import FirebaseContributorTeam
11+
from apps.user.factories import UserFactory
12+
13+
logger = logging.getLogger(__name__)
14+
15+
16+
class Command(BaseCommand):
17+
help = "Create dummy contributor users. Also sync these users to firebase"
18+
19+
@typing.override
20+
def handle(self, *args, **options):
21+
if not settings.ENABLE_DANGER_MODE:
22+
logger.warning("Dummy data generation is disabled")
23+
return
24+
25+
user = UserFactory.create(email=f"user-{uuid.uuid4()}@mapwsipe.com")
26+
user_resources = dict(
27+
created_by=user,
28+
modified_by=user,
29+
)
30+
team_a, team_b = ContributorTeamFactory.create_batch(2, **user_resources)
31+
for team in [team_a, team_b]:
32+
transaction.on_commit(lambda team_id=team.pk: FirebaseContributorTeam.task.delay(team_id))
33+
34+
ContributorUserFactory.create_batch(5, team=team_a)
35+
ContributorUserFactory.create_batch(5, team=team_b)
36+
ContributorUserFactory.create_batch(20)
37+
38+
logger.info("Contributor users created successfully")

main/settings.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,12 @@
9898
GOOGLE_APPLICATION_CREDENTIALS=str,
9999
# Pytest
100100
PYTEST_XDIST_WORKER=(str, None),
101+
# Test
102+
ENABLE_DANGER_MODE=(bool, False),
101103
)
102104

105+
ENABLE_DANGER_MODE = env("ENABLE_DANGER_MODE")
106+
103107
GIT_HELPER = GitHelper(BASE_DIR)
104108

105109
# Quick-start development settings - unsuitable for production

0 commit comments

Comments
 (0)