@@ -89,21 +89,12 @@ def change_description(request, user, project_slug):
8989
9090@login_required
9191def grant_access_to_project (request , user , project_slug ):
92- project = Project .objects .filter (slug = project_slug ).first ()
9392
94- if request . method == 'POST' :
93+ project = Project . objects . get ( slug = project_slug )
9594
96- print (request .POST )
97- # if form.is_valid():
98- # print('Form valid:')
99- # print(form.is_valid())
95+ if request .method == 'POST' :
10096
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' )
10798
10899 l = ProjectLog (project = project , module = 'PR' , headline = 'New members' ,
109100 description = '{number} new members have been added to the Project' .format (
@@ -115,13 +106,41 @@ def grant_access_to_project(request, user, project_slug):
115106
116107 for selected_user in selected_users :
117108 user_tmp = User .objects .get (pk = selected_user )
109+ project .authorized .add (user_tmp )
118110 username_tmp = user_tmp .username
119111 logger .info ('Trying to add user {} to project.' .format (username_tmp ))
120112 kc .keycloak_add_role_to_user (project .slug , username_tmp , 'member' )
121113
122114 return HttpResponseRedirect (
123115 reverse ('projects:settings' , kwargs = {'user' : user , 'project_slug' : project .slug }))
124116
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+
125144@login_required
126145def create (request ):
127146 template = 'index_projects.html'
@@ -206,8 +225,6 @@ def details(request, user, project_slug):
206225 except Exception as e :
207226 logger .error ("Failed to get response from {} with error: {}" .format (url , e ))
208227
209- project_logs = ProjectLog .objects .filter (project = project ).order_by ('-created_at' )
210-
211228 return render (request , template , locals ())
212229
213230
@@ -281,16 +298,25 @@ def publish_project(request, user, project_slug):
281298def load_project_activity (request , user , project_slug ):
282299 template = 'project_activity.html'
283300
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' )
291319 else :
292- project_logs = ProjectLog .objects .all (). order_by ( '-created_at' )
320+ project_logs = ProjectLog .objects .none ( )
293321
294322 return render (request , template , {'project_logs' : project_logs })
295-
296-
0 commit comments