Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

move handles from appuser to workspace (with fallback) #585

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

nikochiko
Copy link
Member

@nikochiko nikochiko commented Jan 8, 2025

Q/A checklist

  • If you add new dependencies, did you update the lock file?
poetry lock --no-update
  • Run tests
ulimit -n unlimited && ./scripts/run-tests.sh
  • Do a self code review of the changes - Read the diff at least twice.
  • Carefully think about the stuff that might break because of this change - this sounds obvious but it's easy to forget to do "Go to references" on each function you're changing and see if it's used in a way you didn't expect.
  • The relevant pages still run when you press submit
  • The API for those pages still work (API tab)
  • The public API interface doesn't change if you didn't want it to (check API tab > docs page)
  • Do your UI changes (if applicable) look acceptable on mobile?
  • Ensure you have not regressed the import time unless you have a good reason to do so.
    You can visualize this using tuna:
python3 -X importtime -c 'import server' 2> out.log && tuna out.log

To measure import time for a specific library:

$ time python -c 'import pandas'

________________________________________________________
Executed in    1.15 secs    fish           external
   usr time    2.22 secs   86.00 micros    2.22 secs
   sys time    0.72 secs  613.00 micros    0.72 secs

To reduce import times, import libraries that take a long time inside the functions that use them instead of at the top of the file:

def my_function():
    import pandas as pd
    ...

Legal Boilerplate

Look, I get it. The entity doing business as “Gooey.AI” and/or “Dara.network” was incorporated in the State of Delaware in 2020 as Dara Network Inc. and is gonna need some rights from me in order to utilize my contributions in this PR. So here's the deal: I retain all rights, title and interest in and to my contributions, and by keeping this boilerplate intact I confirm that Dara Network Inc can use, modify, copy, and redistribute my contributions, under its choice of terms.

Comment on lines +230 to +234
workspace, _ = self.get_or_create_personal_workspace()

if handle := Handle.create_default_for_user(user=self):
workspace.handle = handle
workspace.save()
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for new users, handle should be on the workspace

Comment on lines +253 to +257
def get_handle(self) -> Handle | None:
if self.handle:
return self.handle
workspace, _ = self.get_or_create_personal_workspace()
return workspace.handle
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cache get_or_create_personal_workspace()?

if show_as_link and workspace.is_personal and workspace.created_by.handle:
link = workspace.created_by.handle.get_app_url()
if show_as_link and workspace.is_personal:
handle = workspace.handle or workspace.created_by.handle
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not using workspace.created_by.get_handle() because personal workspace already

Comment on lines +47 to +48
handle = user.get_handle()
assert handle
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

assert (handle := user.get_handle()) is also valid python

migrations.AlterField(
model_name='appuser',
name='handle',
field=models.OneToOneField(blank=True, default=None, help_text='[deprecated] use workspace.handle instead', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='user', to='handles.handle'),
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adds help_text='[deprecated] ... here

Comment on lines +123 to +129
if (
self.has_workspace
and self.has_user
and self.workspace.created_by_id == self.user.id
):
# TODO: remove this once all handles are migrated
return
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to handle an in-between state where the same handle can be attached to a personal workspace & its user. won't be needed after cleanup_handles() is run in the script

@nikochiko nikochiko marked this pull request as ready for review January 8, 2025 15:22
@nikochiko nikochiko requested a review from devxpy January 8, 2025 15:22
Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Summary

Hi! Looks like you've reached your API usage limit. You can increase it from your account settings page here: app.greptile.com/settings/usage

14 file(s) reviewed, no comment(s)
Edit PR Review Bot Settings | Greptile

@devxpy
Copy link
Member

devxpy commented Jan 10, 2025

missed?

with gui.link(to=m.user.handle.get_app_url()):

user_profile_page(request, handle.user)
return dict(meta=get_meta_tags_for_profile(handle.user))
user_profile_page(request, user)
return dict(meta=get_meta_tags_for_profile(user))
Copy link
Member

@devxpy devxpy Jan 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pass handle into user_profile_page / get_meta_tags_for_profile directly instead of doing a 2x lookup

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@@ -329,11 +329,11 @@ def _render_run(pr: PublishedRun):
return

if workspace.is_personal:
if request.user.handle:
if handle := request.user.get_handle():
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be workspace.handle

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Summary

(updates since last review)

Hi! Looks like you've reached your API usage limit. You can increase it from your account settings page here: app.greptile.com/settings/usage

3 file(s) reviewed, no comment(s)
Edit PR Review Bot Settings | Greptile

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Summary

(updates since last review)

Hi! Looks like you've reached your API usage limit. You can increase it from your account settings page here: app.greptile.com/settings/usage

1 file(s) reviewed, no comment(s)
Edit PR Review Bot Settings | Greptile

@nikochiko
Copy link
Member Author

thanks, fixed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants