プロジェクト

全般

プロフィール

Vote #65689

完了

Permission to log time for another user

Admin Redmine さんが約4年前に追加. 約4年前に更新.

ステータス:
Closed
優先度:
通常
担当者:
-
カテゴリ:
Time tracking_13
対象バージョン:
開始日:
2009/09/11
期日:
進捗率:

0%

予定工数:
category_id:
13
version_id:
127
issue_org_id:
3848
author_id:
6166
assigned_to_id:
1
comments:
67
status_id:
5
tracker_id:
2
plus1:
1
affected_version:
closed_on:
affected_version_id:
ステータス-->[Closed]

説明

This patch allows the current user to record the time spent by another one, as you can see in attachment:timelog1.png and attachment:timelog2.png I wrote this patch because my co-workers are too -lazy- busy to update their issues ;)

I never programmed in Ruby before this patch, so feel free to rewrite it at your convenience. Maybe an exception should be thrown in the controllers if the current user tries to edit a time entry he is not allowed to, even if it is already checked in the views.


journals

Patch to apply against redmine-0.8.4
--------------------------------------------------------------------------------
Thank you, that's a good feature. We'll need to update the patch to apply to trunk. I'm not sure if the edit time entries permission should be used or if a new one should be created.
--------------------------------------------------------------------------------
I think a new permission would be required if we add this feature.
--------------------------------------------------------------------------------
Oops! There are two bugs in the previous patch, here come the corresponding fixes:

# Access params[:time_entry] only if editing a time entry. It fixes the error "ActiveRecord::RecordNotFound".
# Allow to change the "owner" of a time entry. Previously, the "owner" was not changed because it is a protected attribute.

Cheers,
Cedric.

--------------------------------------------------------------------------------
You can update the patch to version 0.9.3?

--------------------------------------------------------------------------------
This patch is not entirely correct, since there is no information who (instead of the user) has made him the information. In addition, there is a need to create new questions and make comments from another user. Both questions are needed when the user is not possible to do it yourself, and he asked the operator to do so by phone.

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
This path is changed:
1. Allow change user only entry/edit "Spent time" (http://www.redmine.org/attachments/2520/timelog1.png) and disabled from Issue Update (http://www.redmine.org/attachments/2521/timelog2.png).
2. Select only users with permission to add record time. (Excluded admin!)

TODO: Logged real user name.
--------------------------------------------------------------------------------
I created a new version of the patch.
The patch is shorter.
--------------------------------------------------------------------------------
I'm very interested in this patch. Is the patch submitted by Oleg still working ?
We are running redmine against trunk r4359.

I still think this is a very useful feature. In our company, we have projects where the workers do not encode their spent times themselves.
Eric and Jean-Philippe both have shown interest in this so I am hopeful in seeing this integrated in trunk ?
--------------------------------------------------------------------------------
Updated Oleg's patch to work on Redmine 1.1.0.

I'm new to Redmine, and one of the updates I made to Oleg's patch was in @app/controllers/timelog_controller.rb@, I made changes to both @def new@ and @def create sections instead of @def edit@.
--------------------------------------------------------------------------------
The last patch did not work for my Redmine 1.1.0.stable.4761, so I adapted it a little bit to work with my Redmine. Furthermore editing of the user field of existing time logs now works for me, too.
--------------------------------------------------------------------------------
Is there any plan to include this in current?
--------------------------------------------------------------------------------
this worked for 1.3.3
but unfortunately last patch doesn't work with current 2.x.x
any suggestions?
--------------------------------------------------------------------------------
I update the patch to work with version 2.2.1. I haven't tested in any other version.

Some changes were added. In a nutshell, this patch does:

* Allow users with permission :edit_time_entries to log time in a project for another user assigned to that project and with permission to log time.
* Since an admin does not need to be assigned to a project to log time in it, he/she will be added to the select list of users as "<< me >>"
* The label << me >> will appear in the select list if the available users include the current user (or if current user is admin as mentioned before).
* These log can be done either through /projects/identifier/time_entries/new or when updating an issue. Maybe I'll add later the option to update through /time_entries/new but it will require a little adittional work.

Let me know if you find any bug.
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Maybe this could be a candidate for 2.4?
--------------------------------------------------------------------------------
Agreed. This is definitely something I need (my co-workers are very lazy on logging their times).
--------------------------------------------------------------------------------
A slightly updated diff that works with redmine 2.3.1 There was a small modification I had to make by hand to get the patch to apply otherwise it's the same as the one produced by Bishma Stornelli Ortega that worked with 2.2.1
--------------------------------------------------------------------------------
The last patch requires ruby >= 1.9.2.

+1 for including this in asap
--------------------------------------------------------------------------------
The patch from Gary Watson also works with version 2.4.2 if you remove the diff for issue.rb. I've attatched an updated patch. All use cases we tested worked but I can't guarantee it works in all.
--------------------------------------------------------------------------------
Paul Freund wrote:
> The patch from Gary Watson also works with version 2.4.2 if you remove the diff for issue.rb. I've attatched an updated patch. All use cases we tested worked but I can't guarantee it works in all.

is there any plan to include this functionality in trunk?
--------------------------------------------------------------------------------
I just threw together a hacky plugin that seeks to achieve the same thing
It doesn't check any permissions and probably has other bugs, but it works for us on redmine 2.6 without hacking core:

https://github.com/evolvingweb/redmine_timesheet_log_user
--------------------------------------------------------------------------------
Hi all,
for latest version 2.6.1 I'm using following patch, is has origin in patch from this feature request, but include separete permisson, so it is possible permit this functionality for some roles only.

Intersting should be add functionality requested by #8505.
--------------------------------------------------------------------------------
We tested Patrick Halfars patch, Redmine_foreign_timelog.patch and it breaks redmine 2.6.1.

--------------------------------------------------------------------------------
+1 is there a plugin for that?

Our Admin only want to implement plugins and no patch files. Thanks a Lot!
--------------------------------------------------------------------------------
Unfortunately this path doesn't work in redmine 3.x.
If you select another person you want to log time for, you'll get time entries logged by yourself and not by that person.
--------------------------------------------------------------------------------
We use this plugin http://www.redmine.org/plugins/redmine_work_time with Redmine 3.1.0. It allows to add / edit work time of another users. But it is not very simple, please add this functionality to Redmine core!
--------------------------------------------------------------------------------
How select collection: assigned and current user only?
--------------------------------------------------------------------------------
I have updated Patrik's patch for 3.2.0.stable.
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Edited the patch above for 3.4 (tested on 3.4.2)
--------------------------------------------------------------------------------
My Synology docker Redmine recently went to 3.3.6-1 so instead of manually patching I just put it in a plugin. I'll be adding my own custom stuff, but for now the master version is just a plugin for Patrik's 3.2 patch. YMMV, and it's my first attempt at ruby and Redmine plugins.
https://github.com/gferley/redmine_ferplugin
--------------------------------------------------------------------------------
Grant Ferley wrote:
> My Synology docker Redmine recently went to 3.3.6-1 so instead of manually patching I just put it in a plugin. I'll be adding my own custom stuff, but for now the master version is just a plugin for Patrik's 3.2 patch. YMMV, and it's my first attempt at ruby and Redmine plugins.
> https://github.com/gferley/redmine_ferplugin

great! do you know if your plugins supports also redmine 3.2.1. If so I can be your alpha tester...

By the way, the issue is already 8 years old. Is there any plan to integrate this patch into latest 3.x branch or maybe even into 4.0 branch?

--------------------------------------------------------------------------------
I made a new patch for this feature (inspired from the existing ones) which is more complete from my point of view.

The patch:
- adds a new column ('author_id') to the time entries table where the user who logs the time spent is saved. For the existing entries, author_id will be filled with the user_id during the migration. I found this change a must for this feature.
- makes this new column available in the columns list and filters (from Spent time tab)
- renames the permission to "Add time logs for other users"
- adds tests
- adds the user field only in the new log time page. I don't find it necessary to add the select field also to the time log section from the issue edit page.

Some screenshots attached.

This feature is long requested and it has multiple duplicate issues.
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Marius, thank you for your great work. This is one of the long-awaited features.

The patch attachment:0001-Allow-the-current-user-to-log-time-for-other-users.patch works almost fine, however, I found only one small issue. Users who don't have "Log spent time" permission should not be able to access TimelogController#new page, however, they can access the page via "+" button if they have "Log time for other users" permission. They can fill the form but they will see 403 error after hitting "Create" button.
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Thanks for pointing this out. I've fixed the issue in the attached patch.
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Now the patch series looks good. Setting target version to 4.1.0.
--------------------------------------------------------------------------------
I really like the idea of this feature and would love to have the ability to log time for other users in Redmine. Good job on polishing the patch and making it ready for inclusion, Marius!

I still have some behavior-related comments about the latest patch by Marius from #3848-44:

* If the current user doesn't have the permission to edit time entries for other users, I would rather see the creation / edit of a time entry rejected rather than silently logged to the current user, e.g. with a validation error. The currentlt defined behavior could lead to unexpected data, esp. when used via the API
* @TimelogHelper#user_collection_for_select_options@ should probably use @collection = project.members.active.map(&:user)@ to ensure that locked users don't show up in the list of users
* The list of allowed users should be checked with a validation on the @TimeEntry@ model too in order to prevent someone assigning hours to arbitrary users.
* In the @TimelogController#create@ action, we will see an exception if somene (e.g. via the API) doesn't correctly provide @params[:time_entries]@. This case should be handled.
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Holger Just wrote:
> I really like the idea of this feature and would love to have the ability to log time for other users in Redmine. Good job on polishing the patch and making it ready for inclusion, Marius!
>
> I still have some behavior-related comments about the latest patch by Marius from #3848-44:
>
> * If the current user doesn't have the permission to edit time entries for other users, I would rather see the creation / edit of a time entry rejected rather than silently logged to the current user, e.g. with a validation error. The currentlt defined behavior could lead to unexpected data, esp. when used via the API
> * @TimelogHelper#user_collection_for_select_options@ should probably use @collection = project.members.active.map(&:user)@ to ensure that locked users don't show up in the list of users
> * The list of allowed users should be checked with a validation on the @TimeEntry@ model too in order to prevent someone assigning hours to arbitrary users.
> * In the @TimelogController#create@ action, we will see an exception if somene (e.g. via the API) doesn't correctly provide @params[:time_entries]@. This case should be handled.

Thanks Holger for your feedback. I'll update my patch these days to integrate your feedback.

--------------------------------------------------------------------------------
I've reworked my patch in order to include the issues reported by Holger Just.
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Patch is committed, thanks for your work on this feature.
--------------------------------------------------------------------------------
Jean-Philippe, please apply the attached patch in order to update the translation for @error_not_allowed_to_log_time_for_other_users@ also for the generated locales. I think that you first generated the locales and after that you have changed the en translation.
--------------------------------------------------------------------------------
You're right, thanks!
--------------------------------------------------------------------------------
Oh, sorry, I've missed to update the translation for en-GB.yml in my previous patch (source:trunk/config/locales/en-GB.yml#L1263).
--------------------------------------------------------------------------------
Please commit the below change:

<pre><code class="diff">
vagrant@jessie:/vagrant/project/redmine$ git diff
diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml
index 00db732..5cd0e14 100644
--- a/config/locales/en-GB.yml
+++ b/config/locales/en-GB.yml
@@ -1260,6 +1260,5 @@ en-GB:
error_spent_on_future_date: Cannot log time on a future date
setting_timelog_accept_future_dates: Accept time logs on future dates
label_delete_link_to_subtask: Delete relation
- error_not_allowed_to_log_time_for_other_users: Your role is not allowed to log time
- for other users
+ error_not_allowed_to_log_time_for_other_users: You are not allowed to log time for other users
permission_log_time_for_other_users: Log spent time for other users
</code></pre>
--------------------------------------------------------------------------------
Done.
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
Hello, thanks for the good work.

Is there a patch that I can apply on redmine 4.0.7? I can't upgrade because of redmine debian multiple instances solution we use.
--------------------------------------------------------------------------------


related_issues

relates,New,8505,Log Time for Multiple Users
relates,Closed,32196,Allow import time entries for other users
relates,Closed,32774,Creating time tracking entry for other user through rest API fails with 403
relates,Closed,32959,Fix selected user on log time edit page when user has permissions to log time for another user
relates,Closed,32973,Editing a time entry for a locked user changes the user to the current user
relates,Closed,3800,Editing time entries should show the person involved
duplicates,Closed,10753,Abiliy to log time spent for other user
duplicates,Closed,27328,edit the time of the user
duplicates,Closed,7239,Allow some users to add / edit time entries on behalf of other users
duplicates,Closed,9276,Log Time on an issue assigned to other
duplicates,Closed,6486,Log time for other users

Admin Redmine さんが約4年前に更新

  • カテゴリTime tracking_13 にセット
  • 対象バージョン4.1.0_127 にセット

他の形式にエクスポート: Atom PDF

いいね!0
いいね!0