@@ -89,21 +89,12 @@ def change_description(request, user, project_slug):
89
89
90
90
@login_required
91
91
def grant_access_to_project (request , user , project_slug ):
92
- project = Project .objects .filter (slug = project_slug ).first ()
93
92
94
- if request . method == 'POST' :
93
+ project = Project . objects . get ( slug = project_slug )
95
94
96
- print (request .POST )
97
- # if form.is_valid():
98
- # print('Form valid:')
99
- # print(form.is_valid())
95
+ if request .method == 'POST' :
100
96
101
- selected_users = request .POST .getlist ('selected_users' ) #form.cleaned_data.get('selected_users')
102
- print ('Selected users:' )
103
- print (request .POST .getlist ('selected_users' ))
104
- print ('....' )
105
- project .authorized .set (selected_users )
106
- project .save ()
97
+ selected_users = request .POST .getlist ('selected_users' )
107
98
108
99
l = ProjectLog (project = project , module = 'PR' , headline = 'New members' ,
109
100
description = '{number} new members have been added to the Project' .format (
@@ -115,13 +106,41 @@ def grant_access_to_project(request, user, project_slug):
115
106
116
107
for selected_user in selected_users :
117
108
user_tmp = User .objects .get (pk = selected_user )
109
+ project .authorized .add (user_tmp )
118
110
username_tmp = user_tmp .username
119
111
logger .info ('Trying to add user {} to project.' .format (username_tmp ))
120
112
kc .keycloak_add_role_to_user (project .slug , username_tmp , 'member' )
121
113
122
114
return HttpResponseRedirect (
123
115
reverse ('projects:settings' , kwargs = {'user' : user , 'project_slug' : project .slug }))
124
116
117
+ @login_required
118
+ def revoke_access_to_project (request , user , project_slug ):
119
+
120
+ project = Project .objects .get (slug = project_slug )
121
+
122
+ if request .method == 'POST' :
123
+
124
+ selected_users = request .POST .getlist ('selected_users' )
125
+
126
+ l = ProjectLog (project = project , module = 'PR' , headline = 'Removed Project members' ,
127
+ description = '{number} of members have been removed from the Project' .format (
128
+ number = len (selected_users )))
129
+ l .save ()
130
+
131
+ if len (selected_users ) == 1 :
132
+ selected_users = list (selected_users )
133
+
134
+ for selected_user in selected_users :
135
+ user_tmp = User .objects .get (pk = selected_user )
136
+ project .authorized .remove (user_tmp )
137
+ username_tmp = user_tmp .username
138
+ logger .info ('Trying to add user {} to project.' .format (username_tmp ))
139
+ kc .keycloak_remove_role_from_user (project .slug , username_tmp , 'member' )
140
+
141
+ return HttpResponseRedirect (
142
+ reverse ('projects:settings' , kwargs = {'user' : user , 'project_slug' : project .slug }))
143
+
125
144
@login_required
126
145
def create (request ):
127
146
template = 'index_projects.html'
@@ -206,8 +225,6 @@ def details(request, user, project_slug):
206
225
except Exception as e :
207
226
logger .error ("Failed to get response from {} with error: {}" .format (url , e ))
208
227
209
- project_logs = ProjectLog .objects .filter (project = project ).order_by ('-created_at' )
210
-
211
228
return render (request , template , locals ())
212
229
213
230
@@ -281,16 +298,25 @@ def publish_project(request, user, project_slug):
281
298
def load_project_activity (request , user , project_slug ):
282
299
template = 'project_activity.html'
283
300
284
- time_period = request .GET .get ('period' )
285
- if time_period == 'week' :
286
- last_week = datetime .today () - timedelta (days = 7 )
287
- project_logs = ProjectLog .objects .filter (created_at__gte = last_week ).order_by ('-created_at' )
288
- elif time_period == 'month' :
289
- last_month = datetime .today () - timedelta (days = 30 )
290
- project_logs = ProjectLog .objects .filter (created_at__gte = last_month ).order_by ('-created_at' )
301
+ member = None
302
+ project = None
303
+ try :
304
+ member = User .objects .get (username = user )
305
+ project = Project .objects .get (Q (slug = project_slug ), Q (owner = member ) | Q (authorized = member ))
306
+ except Exception as e :
307
+ print (e )
308
+
309
+ if member and project :
310
+ time_period = request .GET .get ('period' )
311
+ if time_period == 'week' :
312
+ last_week = datetime .today () - timedelta (days = 7 )
313
+ project_logs = ProjectLog .objects .filter (project = project , created_at__gte = last_week ).order_by ('-created_at' )
314
+ elif time_period == 'month' :
315
+ last_month = datetime .today () - timedelta (days = 30 )
316
+ project_logs = ProjectLog .objects .filter (project = project , created_at__gte = last_month ).order_by ('-created_at' )
317
+ else :
318
+ project_logs = ProjectLog .objects .filter (project = project ).order_by ('-created_at' )
291
319
else :
292
- project_logs = ProjectLog .objects .all (). order_by ( '-created_at' )
320
+ project_logs = ProjectLog .objects .none ( )
293
321
294
322
return render (request , template , {'project_logs' : project_logs })
295
-
296
-
0 commit comments