-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
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
Project updated when subproject modified #3649
Conversation
Re-symlink when: * a subproject is deleted * a subproject privacy level is changed * a subproject version privacy level is changed
This reverts commit 3fe6cb3.
Instead of trigger the re-symlink task on each of the Form actions, we trigger it once on ``Project.save()`` or ``Project.delete()`` method.
I have some questions/doubts that are related to this PR (maybe to be implemented in another -but related):
@agjohnson the PR for the original issue is ready to review --let me know if you want me to squash the commits into one. Although, I would like you to take a look a those questions that I'm raising here. |
There are a lot of bugs in our "keep symlinks up to date" code. We should write a design document that specifies the exact place that we should be doing sync'ing for this, and then do an audit (and tests!) to make sure that we're actually doing it. I've tried to build a proper abstraction for maintaining the symlinks in code (https://github.com/rtfd/readthedocs.org/blob/master/readthedocs/core/symlink.py), but that never got pushed back into a proper abstraction for updating/removing/editing symlinks with the lifecycle of the model. I think that is what this PR (and your questions) are addressing. "What is the correct way to handle updating & syncing symlinks when models change?" is the question we need to answer. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The test that you added is a good litmus test for this particular change, but we should add a test that ensures the we're calling the broadcast functions correctly in save()
.
For instance:
- Symlink broadcast is called as expected
- Symlink broadcast is called for superprojects in the case that we have superprojects and don't have superprojects
@@ -9,3 +9,4 @@ Mercurial==4.4.2 | |||
|
|||
# local debugging tools | |||
pdbpp | |||
datadiff |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks unused, but is it helpful to keep around?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I used a lot while debugging to diff two dicts (current filesystem and expected one). It's a debugging tool that I usually use, but we can definetly remove from here if you want.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
great, let's keep it for debug purposes
A design document might be good to have in the future, but i think will slow down this work without much gain to be had. I'll create a new issue for this under our refactoring milestone. |
@agjohnson I just pushed a change with a test to check that |
Looks great! |
Closes #3396
To Do: