Need to handle content owned by deleted users
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
KARL3 |
Fix Released
|
Medium
|
Chris Rossi |
Bug Description
Currently, users have the option of deleting themselves from Karl. This causes a problem with referential integrity with regards to content that they have authored in Karl, leading to exceptions like the one pasted below in the first comment. In order to preserve the referential integrity of the system we need to choose and implement a policy for what happens to a user's content when a user is deleted from the system. Possible policies include:
1) Delete any content for which the user is an author.
2) Transfer ownership of the content to a system user.
3) Convert the user's profile into a placeholder profile which has been scraped of any personal or identifying information.
Of these, I would probably go with 3. I am going to assign to Paul for steering to determine the policy. Once the policy is determined, it can be assigned to me (or another developer) for implementation.
Changed in karl3: | |
status: | New → Incomplete |
Changed in karl3: | |
milestone: | none → m42 |
Changed in karl3: | |
milestone: | m44 → m45 |
Changed in karl3: | |
status: | Confirmed → In Progress |
Traceback (most recent call last): src/karl/ karl/errorlog. py", line 11, in middleware eggs/repoze. zodbconn- 0.10-py2. 5.egg/repoze/ zodbconn/ connector app(environ, start_response) eggs/repoze. retry-0. 9.3-py2. 5.egg/repoze/ retry/_ _init__ .py", n(environ, replace_ start_response) eggs/repoze. tm2-1.0a5- py2.5.egg/ repoze/ tm/__init_ _.py", line n(environ, save_status_ and_headers) eggs/Paste- 1.7.2-py2. 5.egg/paste/ registry. py", line 350, in _ n(environ, start_response) eggs/repoze. who-1.0. 15-py2. 5.egg/repoze/ who/middleware. py", l wrap_start_ response) eggs/repoze. browserid- 0.2-py2. 5.egg/repoze/ browserid/ middlewa eggs/repoze. bfg-1.2- py2.5.egg/ repoze/ bfg/router. py", line 130 context, request) eggs/repoze. bfg-1.2- py2.5.egg/ repoze/ bfg/configurati on.py", l src/karl/ karl/content/ views/blog. py", line 105, in show_blog_ entry.creator] eggs/repoze. folder- 0.4-py2. 5.egg/repoze/ folder/ __init_ _.py",
File "/opt/karl3/
return app(environ, start_response)
File "/opt/karl3/
.py", line 21, in __call__
result = self.next_
File "/opt/karl3/
line 86, in __call__
app_iter = self.applicatio
File "/opt/karl3/
23, in __call__
result = self.applicatio
File "/opt/karl3/
_call__
app_iter = self.applicatio
File "/opt/karl3/
ine 107, in __call__
app_iter = app(environ, wrapper.
File "/opt/karl3/
re.py", line 92, in __call__
return self.app(environ, start_response)
File "/opt/karl3/
, in __call__
response = view_callable(
File "/opt/karl3/
ine 1753, in _secured_view
return view(context, request)
File "/opt/karl3/
view
profile = profiles[
File "/opt/karl3/
line 89, in __getitem__
return self.data[name]
KeyError: u'xxxxxxxx'