Open GoogleCodeExporter opened 9 years ago
Yeah, that makes sense. Reviewers have other special powers too. (I would
still
only allow the owner to actually *delete* an issue. A reviewer should also be
allowed to reopen an issue.)
If you want this to happen, could you contribute a patch? Shouldn't be too
hard.
Original comment by gvanrossum@gmail.com
on 8 Aug 2009 at 9:33
I started to do this but cannot get rietveld working
in the AppEngine dev SDK on Linux.
When I try to use upload.py to send to it, I get
this in the dev sdk window:
ERROR 2009-08-11 16:11:01,273 main.py:78] Exception in request:
BadValueError: Property owner is required
Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/django/core/handlers/base.py", line 91, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/home/rsc/pub/rietveld/codereview/views.py", line 478, in post_wrapper
return func(request, *args, **kwds)
File "/home/rsc/pub/rietveld/codereview/views.py", line 831, in upload
issue = _make_new(request, form)
File "/home/rsc/pub/rietveld/codereview/views.py", line 1041, in _make_new
issue = db.run_in_transaction(txn)
File "/home/rsc/pub/google_appengine/google/appengine/api/datastore.py", line 1765, in RunInTransaction
DEFAULT_TRANSACTION_RETRIES, function, *args, **kwargs)
File "/home/rsc/pub/google_appengine/google/appengine/api/datastore.py", line 1862, in RunInTransactionCustomRetries
result = function(*args, **kwargs)
File "/home/rsc/pub/rietveld/codereview/views.py", line 1026, in txn
n_comments=0)
File "/home/rsc/pub/google_appengine/google/appengine/ext/db/__init__.py", line 656, in __init__
prop.__set__(self, value)
File "/home/rsc/pub/google_appengine/google/appengine/ext/db/__init__.py", line 442, in __set__
value = self.validate(value)
File "/home/rsc/pub/google_appengine/google/appengine/ext/db/__init__.py", line 2431, in validate
value = super(UserProperty, self).validate(value)
File "/home/rsc/pub/google_appengine/google/appengine/ext/db/__init__.py", line 469, in validate
raise BadValueError('Property %s is required' % self.name)
BadValueError: Property owner is required
sure enough, there is no owner= in the creation
of txn in _make_new. I tried setting owner=request.User
but that didn't change anything.
Original comment by russ...@gmail.com
on 11 Aug 2009 at 4:21
Can you contact me offline about this? This code works for me; the owner is
supposed
to be filled in automatically from request.user. What command line are you
using for
upload.py? I use "upload.py -s localhost:8080" and it just works. How old is
your SDK?
Original comment by gvanrossum@gmail.com
on 11 Aug 2009 at 4:39
Here is a patch that allow reviewers to edit issues and add also reviewed
issues to
the "Issues Closed Recently"
Original comment by cedric.krier@b2ck.com
on 26 Sep 2009 at 2:22
Attachments:
There's a problem with this patch: Anyone can add himself to reviewers, so
anyone is
allowed to close an issue.
Original comment by albrecht.andi
on 26 Sep 2009 at 4:49
I don't see any problem. Owner or reviewer can re-open the issue if needed.
Original comment by cedric.krier@b2ck.com
on 26 Sep 2009 at 5:11
Also with your patch anyone can edit the description. They can do it
stealthily, fooling
others, and then remove themselves from the Issue again.
This won't make progress unless you implement a feature whereby only the owner
can
add reviewers, and everyone else is relegated to the "CC" role which has no
special
powers. (Anonymous comments are fine of course.)
Original comment by gvanrossum@gmail.com
on 27 Sep 2009 at 5:32
I understand the problem. Consider this patch
at least temporarily withdrawn. I am wondering
about defining a project as a URL and then
letting each issue be tagged with a project,
and then the owners for that project can do
things like edit the description (on the web too)
and close issues.
Original comment by russ...@gmail.com
on 28 Sep 2009 at 5:30
I thought about "projects" a several times now and it seems like it would solve
a few things
at once. Regarding this issue, I think that the reviewers who want to edit or
close an issue
are most likely project members too. So we would introduce an enhanced
permission system
here.
But there are other issues that would be targeted when adding projects too.
Here's a short
overview of the issues I've figured out in that context so far:
issue58: Distinct issues from multiple repositories
issue89: Add default CCs (that would be on a per project basis)
issue95: Default reviewers per project (almost the same as the issue above)
issue135: Allow users to monitor reviews posted to a group
Projects would make additional feature enhancements possible, like automatic
linking between
issue/bug numbers in the description and the corresponding issue tracker using
a href
template or maybe even default reviewers assigned via some path-based
algorithm, e.g. for
the Python project: If a file in the changeset is somewhere below the
Lib/distutils assign
one of the distutils maintainers.
Original comment by albrecht.andi
on 28 Sep 2009 at 6:09
I wonder if it would make sense to use multitenancy as (part of?) a solution.
Right
now there is a slightly hacked-up version of Rietveld in Google Apps Labs that
you
can deploy for your own domain
(http://www.google.com/enterprise/marketplace/viewListing?
productListingId=5143210+12982233047309328439). It is technically a single app
but
it maintains strictly separated data for each domain.
We are close to making this form of multi-tenancy a general App Engine feature,
and
then it would be easy to add this to the regular Rietveld codebase (even for
projects
that don't use Google Apps). Projects could then designate
"foo.codereview.appspot.com" as their URL and define custom rules for who can
create/edit/review/see issues in their project. (The
"<whatever>.<appid>.appspot.com" feature is available today, and the app can
find the
value of <whatever> by inspecting the Host: header; the missing piece is
automatically setting the datastore and memcache namespace based on <whatever>.
Oh,
and datastore namespaces haven't been released yet. But it's pretty close; it
will
work similar to the memcache namespace feature, see the docs at
http://code.google.com/appengine/docs/python/memcache/functions.html .)
Original comment by gvanrossum@gmail.com
on 28 Sep 2009 at 4:53
Projects seem like a good idea but a big hammer
for this particular issue. In my usage, it would
suffice to introduce a new bit, like the "starred" bit,
called "hidden". In the UI, it could be the
implementation of the "x in a circle" icon for
users other than the owner. Then if I don't want
to see the issue anymore in "My Issues", i just click
the icon and it's gone. (presumably i could unclick it too.)
Original comment by russ...@gmail.com
on 2 Dec 2009 at 5:09
That's the archive flag mentioned in the TODO :)
But I don't like the "x in a circle" that much and if it will have two
different
meanings I would propose to replace it by a checkbox and a select box somewhere
at the
top of the issue lists to set those flags. Maybe we want to add more of such
flags in
the future (e.g. read/unread).
Original comment by albrecht.andi
on 2 Dec 2009 at 5:22
Our projects are being affected by this missing feature as well, the problem we
face is that an intern opened an issue, and did not close it before their
internship was ended. Now, we are left with issues on our lists that can never
be closed just accumulating. We would definitely like to request it be
prioritized.
Original comment by asky...@google.com
on 11 Nov 2011 at 6:36
[Not sure if email replies are working, so pasting into the box.]
While you can't close issues, you can change the
Reviewer and CC lists while replying to an issue.
Issues only show up on a dashboard based on
the reviewer. When I want an issue to stop showing
up, I click "Reply", move all the reviewers to the CC
list, type a note like "Moving reviewers to CC list."
and click send.
Original comment by rsc@swtch.com
on 11 Nov 2011 at 7:31
Thanks for the comment by rsc, since it's better than nothing. And in case it
helps, 'reply' here seems to mean clicking on the "Publish and mail comments"
link for the case, after which you can either move names to CC OR delete them
entirely, which means you won't get dead issues in your "Issues CCed to me"
list in the "My issues" view.
Still would like a real way to close issues for long-gone users...
Original comment by rich.hol...@morphormics.com
on 7 Feb 2012 at 8:32
We're using Rietveld on a project where we have students working on issues, and
we'd really like to be able to close the issues when the students leave.
Original comment by halatmit...@gmail.com
on 31 Mar 2012 at 2:58
On my way to make this happen without hacks, the stumbling block is the unclear
definition of Account, which should be unified - there should not be any GAE
specific or Django specific usernames/nicknames/emails and identifiers - only
accounts and profiles. Then it will be easy to assign roles to accounts. If
anyone can help - welcome to mailing list.
Original comment by techtonik@gmail.com
on 2 Apr 2012 at 9:28
But the Account class was always meant to be what you call a Profile. And we
have use cases in the code for finding an Account (or Profile) given either the
email or the nickname, since we try to hide the email from other users who
don't already know it. (In particular, if you browse /all, you should never be
able to get to the email address of a reviewer or owner of an issue.) So if we
rename Account to Profile, what would be left to put in Account?
Original comment by gvanrossum@gmail.com
on 2 Apr 2012 at 3:00
What we put into Account is the unique user identity and views for displaying
it. Profile should contain user specific settings for the site. Right now there
are many concepts and helpers that make the code confusing:
AppEngine https://developers.google.com/appengine/docs/python/users/userclass
- User.user_id() - not an unique user - fails for if email address is not
associated with a Google account
- User.email() - for OpenID should not rely on this to be correct -
"Applications should use nickname for displayable names."
- User.nickname() - can be "name" portion of the user's email address, user's
full email address or OpenID identifier - looks like a universal ID, but you
can not use it in URLs, because sometimes it contains emails
Django https://docs.djangoproject.com/en/dev/topics/auth/
- User.username - essentially, a nickname, and a unique ID
- User.email - email, optional
- User.get_profile() - site specific settings
Rietveld
http://code.google.com/p/rietveld/source/browse/codereview/models.py#587
- Account.user - probably unique ID, but it is not string you can pass in URL
- Account.email - # key = <email>
- Account.nickname - "nicknames don't have to be unique"
Rietveld Account description:
"Maps a user or email address to a user-selected nickname, and more." - so,
what is the unique ID? Probably GAE user, but to get unique GAE user you need
email, but email can be unset, so you need GAE nickname, and GAE nickname is
not the same as Account.nickname, and you can't actually use nickname in UI,
because it may contain full email address.
Everything that relates to account/user/nickname conversions is very confusing
in Rietveld. If I'd created the Account, I'd do a unique ID, which is a 10
digit string for usage through all the interface consistently without
restrictions, and everything else just a property to this ID. This way
reviewers should not necessarily be CC emails.
Original comment by techtonik@gmail.com
on 3 Apr 2012 at 1:18
Account.nickname is unique and is used in URLs already. However,
Account.nickname can be changed by the user (but still needs to be unique).
Then there is a 1:1 relation between User and Account. To reference a distinct
user we always use a reference to a User object in all models. Account holds
extra application related information like settings (or the
application-specific nickname), where User holds any framework related data.
Original comment by albrecht.andi
on 3 Apr 2012 at 1:35
Sorry I don't have the energy to discuss this.
Original comment by gvanrossum@gmail.com
on 3 Apr 2012 at 2:54
Original comment by albrecht.andi
on 6 Apr 2012 at 6:31
bump
Original comment by Thomas.J...@gmail.com
on 2 Aug 2014 at 5:31
Original issue reported on code.google.com by
russ...@gmail.com
on 8 Aug 2009 at 9:01