Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
aaa5f91
add dialog for workspace creation
nikochiko Feb 28, 2025
317280f
fix error msg display in step1 of workspace-creation dialog
nikochiko Mar 4, 2025
b4eb2db
fix: ui layout for workspace creation step 2
nikochiko Mar 4, 2025
1480512
fix: remove assignment for form_div, make handle name input grow insi…
nikochiko Mar 4, 2025
b381040
better error handling for invalid emails, only use set_current_worksp…
nikochiko Mar 5, 2025
6de5425
add link-button to open workspace creation dialog from workflow page
nikochiko Mar 5, 2025
9e2e26e
preserve old UX for workspace selector when user has multiple workspaces
nikochiko Mar 5, 2025
d139339
rename: form_buttons_div -> form_buttons_container
nikochiko Mar 5, 2025
74ab257
rename: error_msg_div -> error_msg_container
nikochiko Mar 5, 2025
005aa61
use rsplit with maxsplit=1 instead of split for parsing email address
nikochiko Mar 5, 2025
4e5ce60
add max_emails param in bulk-invite, change default from 10 to 5
nikochiko Mar 5, 2025
a6d7313
fix: disallow common email domains in selector
nikochiko Mar 5, 2025
70bb2d8
remove admin restriction on creating new workspaces
nikochiko Mar 6, 2025
bd7aeca
ux and text adjustments for workspace create dialog
nikochiko Mar 12, 2025
5a17632
remove debug print statements
nikochiko Mar 12, 2025
b327e64
Merge branch 'master' into public-workspaces
nikochiko Mar 12, 2025
b1e4e29
Deprecate old creator, business plans. Add new plan for business
nikochiko Mar 12, 2025
9e83a8d
add new button states for billing page plans
nikochiko Mar 13, 2025
5973833
Add new button labels, create->pay dialog on pressing "Go Private" fr…
nikochiko Mar 20, 2025
6d8c531
fix plan comparison logic
nikochiko Mar 24, 2025
fe5fe9d
Add missing migrations
nikochiko Mar 25, 2025
c25fbde
Don't show plan box for Enterprise customers
nikochiko Mar 25, 2025
70ce7d2
Add is_public and new visibility modes for published runs
nikochiko Mar 25, 2025
fae4642
add new permission system with team_permissions and visibility
nikochiko Mar 27, 2025
a98d287
squash migrations for bots app
nikochiko Mar 27, 2025
b382f3f
fix: revert overridden migration bots/0092
nikochiko Mar 27, 2025
23b59db
remove debug print
nikochiko Mar 27, 2025
dd80cda
fix imports
nikochiko Mar 27, 2025
f87b629
Merge branch 'master' into new-business-plan
nikochiko Mar 31, 2025
d2ce359
fix migration conflict
nikochiko Mar 31, 2025
8868b79
add 'Create a team workspace' alertbox to share dialog for non-org users
nikochiko Mar 31, 2025
1bc88c9
fix spaces in share dialog text
nikochiko Mar 31, 2025
edc93c9
obscure phone number unless editing
nikochiko Apr 3, 2025
ec359a8
update workspaces view with updated banner
nikochiko Apr 3, 2025
ec6a09e
refactor: move workspace invite button to separate widget module
devxpy Apr 4, 2025
e80969d
migration
devxpy Apr 4, 2025
7f9a4dc
Refactor: Move permission logic to PublishedRunPermission class and a…
devxpy Apr 4, 2025
f2b176d
Refactor: Move can_user_edit_published_run to PublishedRunPermission …
devxpy Apr 4, 2025
6ec812b
Refactor: Move _render_share_options_for_team_workspace to workflow_s…
devxpy Apr 4, 2025
57b82db
Refactor: Move _render_alert_to_create_team_workspace to workspaces/w…
devxpy Apr 4, 2025
098567c
Refactor: Move clear_publish_form to publish_form.py and improve impl…
devxpy Apr 4, 2025
6fdabfb
Refactor: Move _render_share_options_for_personal_workspace to workfl…
devxpy Apr 4, 2025
496bd54
Refactor: Improve publish dialog state management in base.py
devxpy Apr 4, 2025
bb2fa5a
refactor: extract workflow share modal into standalone component - Mo…
devxpy Apr 4, 2025
531e8d3
refactor: improve workflow sharing and permission handling - Move sha…
devxpy Apr 4, 2025
e25c416
refactor: rename PublishedRunPermission to WorkflowAccessLevel
devxpy Apr 4, 2025
e88507b
fix: publish form should not show save button if selected workspace i…
devxpy Apr 4, 2025
d30c330
disable public checkbox on share options when unlisted is selected
devxpy Apr 6, 2025
de14c15
Refactor workspace creation dialog into separate popup route handlers
devxpy Apr 9, 2025
0f900bd
fix: enforce workspace membership for workflow edit access
devxpy Apr 9, 2025
a556fd7
refactor: optimize handle suggestion logic with set operations
devxpy Apr 9, 2025
cb554cc
tweak handle input padding
devxpy Apr 9, 2025
b4224a1
fix: invalid css props
devxpy Apr 10, 2025
9e52d6a
update fixtures
devxpy Apr 11, 2025
86ad7b4
Merge branch 'master' of github.com:GooeyAI/gooey-server into new-bus…
devxpy Apr 11, 2025
c986665
remove debug comments
devxpy Apr 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions app_users/migrations/0026_alter_appusertransaction_plan.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 5.1.3 on 2025-03-25 11:06

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('app_users', '0025_remove_appuser_handle'),
]

operations = [
migrations.AlterField(
model_name='appusertransaction',
name='plan',
field=models.IntegerField(blank=True, choices=[(1, 'Basic Plan'), (2, 'Premium Plan'), (4, 'Creator'), (5, 'Business (2024)'), (3, 'Pay as you go'), (7, 'Business'), (6, 'Enterprise')], default=None, help_text="User's plan at the time of this transaction.", null=True),
),
]
23 changes: 22 additions & 1 deletion app_users/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

if typing.TYPE_CHECKING:
from workspaces.models import Workspace
from phonenumber_field.phonenumber import PhoneNumber


class AppUserQuerySet(models.QuerySet):
Expand Down Expand Up @@ -164,7 +165,7 @@ def full_name(
elif self.email:
name = self.email.split("@")[0]
elif self.phone_number:
name = str(self.phone_number)
name = obscure_phone_number(self.phone_number)
else:
return fallback
if current_user and self == current_user:
Expand Down Expand Up @@ -253,6 +254,9 @@ def get_anonymous_token(self):
def get_photo(self) -> str:
return self.photo_url or get_placeholder_profile_image(self.uid)

def is_admin(self) -> bool:
return bool(self.email and self.email in settings.ADMIN_EMAILS)


class TransactionReason(models.IntegerChoices):
DEDUCT = 1, "Deduct"
Expand Down Expand Up @@ -391,3 +395,20 @@ def payment_provider_url(self) -> str | None:
def get_placeholder_profile_image(seed: str) -> str:
hash = hashlib.md5(seed.encode()).hexdigest()
return f"https://gravatar.com/avatar/{hash}?d=robohash&size=150"


def obscure_phone_number(phone_number: "PhoneNumber") -> str:
"""
Obscure the phone number by replacing the middle digits with asterisks.
"""
country_code = phone_number.country_code
national_number = str(phone_number.national_number)

return "".join(
[
(country_code and f"+{country_code}" or ""),
national_number[:3],
"*" * len(national_number[3:-3]),
national_number[-3:],
]
)
4 changes: 2 additions & 2 deletions bots/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -322,15 +322,15 @@ class PublishedRunVersionInline(admin.TabularInline):
class PublishedRunAdmin(admin.ModelAdmin):
list_display = [
"__str__",
"visibility",
"public_access",
"view_user",
"open_in_gooey",
"linked_saved_run",
"view_runs",
"created_at",
"updated_at",
]
list_filter = ["workflow", "visibility", "created_by__is_paying"]
list_filter = ["workflow", "public_access", "created_by__is_paying"]
search_fields = ["workflow", "published_run_id", "title", "notes"]
autocomplete_fields = ["saved_run", "created_by", "last_edited_by", "workspace"]
readonly_fields = [
Expand Down
6 changes: 3 additions & 3 deletions bots/migrations/0049_publishedrun_publishedrunversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from django.db import migrations, models
import django.db.models.deletion

from bots.models import PublishedRunVisibility
from bots.models import WorkflowAccessLevel
from daras_ai_v2.crypto import get_random_doc_id


Expand All @@ -30,7 +30,7 @@ def create_published_run_from_example(
saved_run=saved_run,
title=saved_run.page_title,
notes=saved_run.page_notes,
visibility=PublishedRunVisibility.PUBLIC,
visibility=WorkflowAccessLevel.FIND_AND_VIEW,
is_approved_example=not saved_run.hidden,
)
set_field_attribute(published_run, "created_at", auto_now_add=False)
Expand All @@ -48,7 +48,7 @@ def create_published_run_from_example(
changed_by=user,
title=saved_run.page_title,
notes=saved_run.page_notes,
visibility=PublishedRunVisibility.PUBLIC,
visibility=WorkflowAccessLevel.FIND_AND_VIEW,
)
set_field_attribute(published_run, "created_at", auto_now_add=False)
version.created_at = saved_run.updated_at
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Generated by Django 5.1.3 on 2025-04-04 08:30

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('app_users', '0026_alter_appusertransaction_plan'),
('bots', '0094_publishedrun_photo_url_workflowmetadata_emoji'),
('workspaces', '0010_workspace_banner_url'),
]

operations = [
migrations.RemoveIndex(
model_name='publishedrun',
name='bots_publis_updated_af6358_idx',
),
migrations.RemoveIndex(
model_name='publishedrun',
name='bots_publis_is_appr_a989ec_idx',
),
migrations.AddField(
model_name='publishedrun',
name='workspace_access',
field=models.IntegerField(choices=[(1, 'View Only'), (2, 'Find And View'), (4, 'Edit'), (3, 'Internal')], default=4),
),
migrations.AddField(
model_name='publishedrunversion',
name='workspace_access',
field=models.IntegerField(choices=[(1, 'View Only'), (2, 'Find And View'), (4, 'Edit'), (3, 'Internal')], default=4),
),
migrations.AlterField(
model_name='publishedrun',
name='visibility',
field=models.IntegerField(choices=[(1, 'View Only'), (2, 'Find And View'), (4, 'Edit'), (3, 'Internal')], default=2),
),
migrations.AlterField(
model_name='publishedrunversion',
name='visibility',
field=models.IntegerField(choices=[(1, 'View Only'), (2, 'Find And View'), (4, 'Edit'), (3, 'Internal')], default=1),
),
migrations.AddIndex(
model_name='publishedrun',
index=models.Index(fields=['is_approved_example', 'visibility', 'workspace_access', 'published_run_id', 'updated_at', 'workflow', 'example_priority'], name='bots_publis_is_appr_8c8651_idx'),
),
migrations.AddIndex(
model_name='publishedrun',
index=models.Index(fields=['-updated_at', 'workspace', 'created_by', 'visibility', 'workspace_access'], name='bots_publis_updated_31d8a4_idx'),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Generated by Django 5.1.3 on 2025-04-04 08:31

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('app_users', '0026_alter_appusertransaction_plan'),
('bots', '0095_remove_publishedrun_bots_publis_updated_af6358_idx_and_more'),
('workspaces', '0010_workspace_banner_url'),
]

operations = [
migrations.RemoveIndex(
model_name='publishedrun',
name='bots_publis_is_appr_8c8651_idx',
),
migrations.RemoveIndex(
model_name='publishedrun',
name='bots_publis_updated_31d8a4_idx',
),
migrations.RenameField(
model_name='publishedrun',
old_name='visibility',
new_name='public_access',
),
migrations.RenameField(
model_name='publishedrunversion',
old_name='visibility',
new_name='public_access',
),
migrations.AddIndex(
model_name='publishedrun',
index=models.Index(fields=['is_approved_example', 'public_access', 'workspace_access', 'published_run_id', 'updated_at', 'workflow', 'example_priority'], name='bots_publis_is_appr_644b75_idx'),
),
migrations.AddIndex(
model_name='publishedrun',
index=models.Index(fields=['-updated_at', 'workspace', 'created_by', 'public_access', 'workspace_access'], name='bots_publis_updated_fcf021_idx'),
),
]
Loading