From c061103b354cbfa47ff9d711ab68a37e4638a3a4 Mon Sep 17 00:00:00 2001 From: kedar2a Date: Mon, 14 Aug 2017 14:14:25 +0530 Subject: [PATCH 1/4] Updated 'create_authusers_from_code_username_password_csv.py' for adding FN and LN (commented) --- ...create_authusers_from_code_username_password_csv.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/doc/deployer/create_authusers_from_code_username_password_csv.py b/doc/deployer/create_authusers_from_code_username_password_csv.py index 1884daa763..1b4586c55e 100644 --- a/doc/deployer/create_authusers_from_code_username_password_csv.py +++ b/doc/deployer/create_authusers_from_code_username_password_csv.py @@ -24,6 +24,7 @@ with open(file_input, 'rb') as csvfile: users = csv.reader(csvfile, delimiter=',') for school_code, username, password in users: + # for school_code, username, password, user_id, first_name, last_name in users: # email validation from username email = '' @@ -33,6 +34,7 @@ temp_csv_log_list = [school_code, username, password] user_obj = User.objects.create_user(username=username, email=email, password=password) + # user_obj = User.objects.create_user(username=username, email=email, password=password, first_name=first_name, last_name=last_name) user_id = user_obj.id temp_csv_log_list.append(str(user_id)) @@ -43,10 +45,10 @@ auth['member_of'] = [auth_gst_id] auth['group_type'] = u"PUBLIC" auth['edit_policy'] = u"NON_EDITABLE" - auth['created_by'] = user_id - auth['modified_by'] = user_id - auth['contributors'] = [user_id] - auth['group_admin'] = [user_id] + auth['created_by'] = int(user_id) + auth['modified_by'] = int(user_id) + auth['contributors'] = [int(user_id)] + auth['group_admin'] = [int(user_id)] auth['agency_type'] = "Student" auth['_id'] = ObjectId() auth.save(groupid=auth['_id']) From 394eec78eacdce823210534fa5626342544ea04b Mon Sep 17 00:00:00 2001 From: kedar2a Date: Tue, 15 Aug 2017 02:25:41 +0530 Subject: [PATCH 2/4] Added new script to loggout all users along with their buddies --- doc/deployer/logout_all_users.py | 44 ++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 doc/deployer/logout_all_users.py diff --git a/doc/deployer/logout_all_users.py b/doc/deployer/logout_all_users.py new file mode 100644 index 0000000000..6b80aedb8e --- /dev/null +++ b/doc/deployer/logout_all_users.py @@ -0,0 +1,44 @@ +from django.conf import settings +from django.contrib.auth import logout +from django.contrib.auth.models import User +from django.contrib.sessions.models import Session +from django.http import HttpRequest +from django.utils.importlib import import_module +from django.utils import timezone + + + +def main(): + """ + Read all available users and all available not expired sessions. Then + logout from each session. + """ + request = HttpRequest() + + # sessions = Session.objects.filter(expire_date__gte=timezone.now()) + sessions = Session.objects.filter(expire_date__gte=timezone.now()).distinct('session_data') + + # Experimental trial (aggregate query): + # unique_sessions_list = Session.objects.filter(expire_date__gte=timezone.now()).values('session_data').annotate(Count('session_data')).filter(session_data__count__lte=1) + + print('Found %d non-expired session(s).' % len(sessions)) + + for session in sessions: + try: + user_id = session.get_decoded().get('_auth_user_id') + engine = import_module(settings.SESSION_ENGINE) + request.session = engine.SessionStore(session.session_key) + + request.user = User.objects.get(id=user_id) + print ('\nProcessing session of [ %d : "%s" ]\n' % (request.user.id, request.user.username)) + + logout(request) + print('- Successfully logout user with id: %r ' % user_id) + + except Exception as e: + # print "Exception: ", e + pass + + +if __name__ == '__main__': + main() \ No newline at end of file From 2eaecf0919e470d17063d40d7d622818cc6fe6fd Mon Sep 17 00:00:00 2001 From: kedar2a Date: Tue, 15 Aug 2017 02:28:34 +0530 Subject: [PATCH 3/4] Additional checks added for user in signals and models.Buddy --- gnowsys-ndf/gnowsys_ndf/ndf/models.py | 4 ++-- gnowsys-ndf/gnowsys_ndf/ndf/signals.py | 17 +++++++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/gnowsys-ndf/gnowsys_ndf/ndf/models.py b/gnowsys-ndf/gnowsys_ndf/ndf/models.py index 9449a5549a..e6257226dd 100644 --- a/gnowsys-ndf/gnowsys_ndf/ndf/models.py +++ b/gnowsys-ndf/gnowsys_ndf/ndf/models.py @@ -3194,10 +3194,10 @@ def get_active_id_session_keys(): for session in sessions: data = session.get_decoded() user_id = data.get('_auth_user_id', 0) - # if user_id: + if user_id: + userid_session_key_dict[user_id] = session.session_key # uid_list_append(user_id) # session_key_list.append(session.session_key) - userid_session_key_dict[user_id] = session.session_key return userid_session_key_dict diff --git a/gnowsys-ndf/gnowsys_ndf/ndf/signals.py b/gnowsys-ndf/gnowsys_ndf/ndf/signals.py index ed101a4381..85eaffba90 100644 --- a/gnowsys-ndf/gnowsys_ndf/ndf/signals.py +++ b/gnowsys-ndf/gnowsys_ndf/ndf/signals.py @@ -127,13 +127,18 @@ def logged_out(sender, user, request, **kwargs): # print "userid", request.user.id # print "session val: ", request.session.get('buddies_authid_list', []) - user_id = request.user.id - if user_id and request.session.session_key: - buddy_obj = Buddy.query_buddy_obj(loggedin_userid=user_id, - session_key=request.session.session_key) - if buddy_obj: - buddy_obj.end_buddy_session() + try: + user_id = request.user.id + if user_id and request.session.session_key: + buddy_obj = Buddy.query_buddy_obj(loggedin_userid=user_id, + session_key=request.session.session_key) + + if buddy_obj: + buddy_obj.end_buddy_session() + except Exception as e: + print e + pass # DjangoActiveUsersGroup.removefrom_user_set(user_id) From da29b5b73b77b4f71701247a6bd1a734afa8dbdf Mon Sep 17 00:00:00 2001 From: kedar2a Date: Thu, 17 Aug 2017 19:59:21 +0530 Subject: [PATCH 4/4] Moved methods from doc.deployer.logout_all_users to models.ActiveUsers.logout_all_users() --- doc/deployer/logout_all_users.py | 45 ++------------------------- gnowsys-ndf/gnowsys_ndf/ndf/models.py | 44 ++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 43 deletions(-) diff --git a/doc/deployer/logout_all_users.py b/doc/deployer/logout_all_users.py index 6b80aedb8e..866b39ba15 100644 --- a/doc/deployer/logout_all_users.py +++ b/doc/deployer/logout_all_users.py @@ -1,44 +1,3 @@ -from django.conf import settings -from django.contrib.auth import logout -from django.contrib.auth.models import User -from django.contrib.sessions.models import Session -from django.http import HttpRequest -from django.utils.importlib import import_module -from django.utils import timezone +from gnowsys_ndf.ndf.models import ActiveUsers - - -def main(): - """ - Read all available users and all available not expired sessions. Then - logout from each session. - """ - request = HttpRequest() - - # sessions = Session.objects.filter(expire_date__gte=timezone.now()) - sessions = Session.objects.filter(expire_date__gte=timezone.now()).distinct('session_data') - - # Experimental trial (aggregate query): - # unique_sessions_list = Session.objects.filter(expire_date__gte=timezone.now()).values('session_data').annotate(Count('session_data')).filter(session_data__count__lte=1) - - print('Found %d non-expired session(s).' % len(sessions)) - - for session in sessions: - try: - user_id = session.get_decoded().get('_auth_user_id') - engine = import_module(settings.SESSION_ENGINE) - request.session = engine.SessionStore(session.session_key) - - request.user = User.objects.get(id=user_id) - print ('\nProcessing session of [ %d : "%s" ]\n' % (request.user.id, request.user.username)) - - logout(request) - print('- Successfully logout user with id: %r ' % user_id) - - except Exception as e: - # print "Exception: ", e - pass - - -if __name__ == '__main__': - main() \ No newline at end of file +ActiveUsers.logout_all_users() diff --git a/gnowsys-ndf/gnowsys_ndf/ndf/models.py b/gnowsys-ndf/gnowsys_ndf/ndf/models.py index e6257226dd..b9f6db5962 100644 --- a/gnowsys-ndf/gnowsys_ndf/ndf/models.py +++ b/gnowsys-ndf/gnowsys_ndf/ndf/models.py @@ -672,6 +672,10 @@ def type_of_names_list(self, smallcase=False): @staticmethod def get_name_id_from_type(node_name_or_id, node_type, get_obj=False): + ''' + e.g: + Node.get_name_id_from_type('pink-bunny', 'Author') + ''' if not get_obj: # if cached result exists return it @@ -3207,6 +3211,45 @@ def get_active_id_session_keys(): # else: # return User.objects.filter(id__in=uid_list) + @staticmethod + def logout_all_users(): + """ + Read all available users and all available not expired sessions. Then + logout from each session. This method also releases all buddies with each user session. + """ + from django.utils.importlib import import_module + from django.conf import settings + from django.contrib.auth import logout + + request = HttpRequest() + + # sessions = Session.objects.filter(expire_date__gte=timezone.now()) + sessions = Session.objects.filter(expire_date__gte=timezone.now()).distinct('session_data') + + # Experimental trial (aggregate query): + # unique_sessions_list = Session.objects.filter(expire_date__gte=timezone.now()).values('session_data').annotate(Count('session_data')).filter(session_data__count__lte=1) + + print('Found %d non-expired session(s).' % len(sessions)) + + for session in sessions: + try: + user_id = session.get_decoded().get('_auth_user_id') + engine = import_module(settings.SESSION_ENGINE) + request.session = engine.SessionStore(session.session_key) + + request.user = User.objects.get(id=user_id) + print ('\nProcessing session of [ %d : "%s" ]\n' % (request.user.id, request.user.username)) + + logout(request) + print('- Successfully logout user with id: %r ' % user_id) + + except Exception as e: + # print "Exception: ", e + pass + + Buddy.sitewide_remove_all_buddies() + + # class DjangoActiveUsersGroup(object): # """docstring for DjangoActiveUsersGroup""" @@ -3805,6 +3848,7 @@ def remove_all_buddies(self): active_buddy_authid_list = self.get_active_authid_list_from_single_buddy() for each_buddy_authid in active_buddy_authid_list: + print "- Released Buddy: ", Node.get_name_id_from_type(each_buddy_authid, u'Author')[0] self.get_latest_in_out_dict(self.buddy_in_out[each_buddy_authid])['out'] = datetime.datetime.now() return self