Skip to content

Commit

Permalink
Move organization email from metadata -> organization email field
Browse files Browse the repository at this point in the history
  • Loading branch information
FrankApiyo committed Oct 1, 2024
1 parent 7edc29c commit a8c0a66
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 15 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.2.14 on 2024-10-01 08:01

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('api', '0007_odktoken_expires'),
]

operations = [
migrations.AddField(
model_name='organizationprofile',
name='organization_email',
field=models.EmailField(blank=True, max_length=254, verbose_name='email address'),
),
]
5 changes: 3 additions & 2 deletions onadata/apps/api/models/organization_profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.db.models.signals import post_delete, post_save
from django.utils.translation import gettext_lazy as _

from guardian.models import GroupObjectPermissionBase, UserObjectPermissionBase
from guardian.shortcuts import assign_perm, get_perms_for_model
Expand Down Expand Up @@ -154,7 +155,6 @@ def _post_save_create_owner_team(sender, instance, created, **kwargs):


class OrganizationProfile(UserProfile):

"""Organization: Extends the user profile for organization specific info
* What does this do?
Expand All @@ -176,6 +176,7 @@ class Meta:
is_organization = models.BooleanField(default=True)
# Other fields here
creator = models.ForeignKey(User, on_delete=models.CASCADE)
organization_email = models.EmailField(_("email address"), blank=True)

def __str__(self):
return f"{self.name}[{self.user.username}]"
Expand All @@ -186,7 +187,7 @@ def save(self, *args, **kwargs): # pylint: disable=arguments-differ
@property
def email(self):
"organization email"
return self.user.email
return self.organization_email

def remove_user_from_organization(self, user):
"""Removes a user from all teams/groups in the organization.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -222,10 +222,7 @@ def test_orgs_get_anon(self):
def test_orgs_create(self):
self._org_create()
self.assertTrue(self.organization.user.is_active)
self.assertTrue("billing_email" in self.organization.metadata)
self.assertEqual(
self.organization.metadata["billing_email"], "[email protected]"
)
self.assertEqual(self.organization.email, "[email protected]")

def test_orgs_create_without_name(self):
data = {
Expand Down Expand Up @@ -267,8 +264,7 @@ def test_org_create_and_fetch_by_admin_user(self):
request.user = self.user
response = self.view(request)
self.assertEqual(response.status_code, 201)
self.assertTrue("billing_email" in response.data["metadata"])
self.assertEqual(response.data["metadata"]["billing_email"], org_email)
self.assertEqual(response.data["email"], org_email)

def test_org_create_with_anonymous_user(self):
data = {
Expand Down Expand Up @@ -456,10 +452,7 @@ def test_role_for_org_non_owner(self):
request = self.factory.get("/", **self.extra)
response = view(request, user="denoinc")
self.assertEqual(response.status_code, 200)
self.assertTrue("billing_email" in response.data["metadata"])
self.assertEqual(
response.data["metadata"]["billing_email"], "[email protected]"
)
self.assertEqual(response.data["email"], "[email protected]")
self.assertIn("users", list(response.data))

for user in response.data["users"]:
Expand Down Expand Up @@ -988,7 +981,7 @@ def test_member_added_to_org_with_correct_perms(self):
},
{
"is_org": True,
"metadata": {"billing_email": "[email protected]"},
"metadata": {},
"first_name": "Dennis",
"last_name": "",
"user": "denoinc",
Expand Down
2 changes: 1 addition & 1 deletion onadata/apps/api/tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ def create_organization_object(org_name, creator, attrs=None):
organization=attrs.get("organization", ""),
home_page=attrs.get("home_page", ""),
twitter=attrs.get("twitter", ""),
metadata={"billing_email": email},
organization_email=email,
)
return profile

Expand Down
2 changes: 1 addition & 1 deletion onadata/libs/serializers/organization_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ def update(self, instance, validated_data):
instance.user.last_name = last_name

if "email" in validated_data:
instance.metadata["billing_email"] = validated_data.pop("email")
instance.organization_email = validated_data.pop("email")

instance.user.save()
return super().update(instance, validated_data)
Expand Down

0 comments on commit a8c0a66

Please sign in to comment.