mirror of
				https://gitlab.crans.org/bde/nk20-scripts
				synced 2025-10-30 06:49:50 +01:00 
			
		
		
		
	add a flag to choose data to anonymize (all, wei, user visible) and verbosity
This commit is contained in:
		| @@ -7,60 +7,87 @@ from django.db import connection | |||||||
|  |  | ||||||
| class Command(BaseCommand): | class Command(BaseCommand): | ||||||
|     """ |     """ | ||||||
|     Command to protect sensitive data during the beta phase, to prevent a right escalation. |     Command to protect sensitive data during the beta phase or after WEI. | ||||||
|     Phone number, email address, postal address, first and last name are removed. |     Phone number, email address, postal address, first and last name, | ||||||
|  |     IP addresses, health issues, gender and birth date are removed. | ||||||
|     """ |     """ | ||||||
|     def add_arguments(self, parser): |     def add_arguments(self, parser): | ||||||
|         parser.add_argument('--force', '-f', action='store_true', help="Actually anonymize data.") |         parser.add_argument('--force', '-f', action='store_true', help="Actually anonymize data.") | ||||||
|  |         parser.add_argument('--type', '-t', choices=["all", "wei", "user"], default="", | ||||||
|  |                             help='Select the type of data to anonyze (default None)') | ||||||
|  |  | ||||||
|     def handle(self, *args, **kwargs): |     def handle(self, *args, **options): | ||||||
|         if not kwargs['force']: |         if not options['force']: | ||||||
|             self.stderr.write("CAUTION: This is a dangerous script. This will reset all personal data with " |             if options['type'] == "all": | ||||||
|                               "sample data. Don't use this in production! If you know what you are doing, " |                 self.stderr.write("CAUTION: This is a dangerous script. This will reset ALL personal data with " | ||||||
|  |                               "sample data. Don't use  in production! If you know what you are doing, please " | ||||||
|  |                               "add --force option.") | ||||||
|  |             elif options['type'] == "wei": | ||||||
|  |                 self.stderr.write("CAUTION: This is a dangerous script. This will reset WEI personal data with " | ||||||
|  |                               "sample data. Use it in production only after WEI. If you know what you are doing," | ||||||
|                               "please add --force option.") |                               "please add --force option.") | ||||||
|  |             elif options['type'] == "user": | ||||||
|  |                 self.stderr.write("CAUTION: This is a dangerous script. This will reset all personal data " | ||||||
|  |                               "visible by user (not admin or trez BDE) with sample data. Don't use  in " | ||||||
|  |                               "production! If you know what you are doing, please add --force option.") | ||||||
|  |             else: | ||||||
|  |                 self.stderr.write("CAUTION: This is a dangerous script. This will reset all personal data with " | ||||||
|  |                               "sample data. Don't use  in production ('wei' can be use in production after " | ||||||
|  |                               "the WEI)! If you know what you are doing, please choose a type.") | ||||||
|             exit(1) |             exit(1) | ||||||
|  |  | ||||||
|         cur = connection.cursor() |         cur = connection.cursor() | ||||||
|         cur.execute("UPDATE member_profile SET " |         if options['type'] in ("all","user"): | ||||||
|  |             if options['verbosity'] != 0: | ||||||
|  |                 self.stdout.write("Anonymize profile, user club and guest data") | ||||||
|  |             cur.execute("UPDATE member_profile SET " | ||||||
|                     "phone_number = '0123456789', " |                     "phone_number = '0123456789', " | ||||||
|                     "address = '4 avenue des Sciences, 91190 GIF-SUR-YVETTE';") |                     "address = '4 avenue des Sciences, 91190 GIF-SUR-YVETTE';") | ||||||
|         cur.execute("UPDATE auth_user SET " |             cur.execute("UPDATE auth_user SET " | ||||||
|                     "first_name = 'Anne', " |                     "first_name = 'Anne', " | ||||||
|                     "last_name = 'Onyme', " |                     "last_name = 'Onyme', " | ||||||
|                     "email = 'anonymous@example.com';") |                     "email = 'anonymous@example.com';") | ||||||
|         cur.execute("UPDATE member_club SET " |             cur.execute("UPDATE member_club SET " | ||||||
|                     "email = 'anonymous@example.com';") |                     "email = 'anonymous@example.com';") | ||||||
|         cur.execute("UPDATE activity_guest SET " |             cur.execute("UPDATE activity_guest SET " | ||||||
|                     "first_name = 'Anne', " |                     "first_name = 'Anne', " | ||||||
|                     "last_name = 'Onyme';") |                     "last_name = 'Onyme';") | ||||||
|         cur.execute("UPDATE treasury_invoice SET " |  | ||||||
|                     "name = 'Anne Onyme', " |         if options['type'] in ("all","wei","user"): | ||||||
|                     "object = 'Rends nous riches', " |             if options['verbosity'] != 0: | ||||||
|                     "description = 'Donne nous plein de sous', " |                 self.stdout.write("Anonymize WEI data") | ||||||
|                     "address = '4 avenue des Sciences, 91190 GIF-SUR-YVETTE';") |             cur.execute("UPDATE wei_weiregistration SET " | ||||||
|         cur.execute("UPDATE treasury_product SET " |  | ||||||
|                     "designation = 'un truc inutile';") |  | ||||||
|         cur.execute("UPDATE note_specialtransaction SET " |  | ||||||
|                     "bank = 'le matelas', " |  | ||||||
|                     "first_name = 'Anne', " |  | ||||||
|                     "last_name = 'Onyme';") |  | ||||||
|         cur.execute("UPDATE wei_weiregistration SET " |  | ||||||
|                     "birth_date = '1998-01-08', " |                     "birth_date = '1998-01-08', " | ||||||
|                     "emergency_contact_name = 'Anne Onyme', " |                     "emergency_contact_name = 'Anne Onyme', " | ||||||
|                     "emergency_contact_phone = '0123456789', " |                     "emergency_contact_phone = '0123456789', " | ||||||
|                     "gender = 'nonbinary', " |                     "gender = 'nonbinary', " | ||||||
|                     "health_issues = 'Tout va bien';") |                     "health_issues = 'Tout va bien';") | ||||||
|         cur.execute("UPDATE logs_changelog SET " |  | ||||||
|                     "ip = '138.231.175.203', " |         if options['type'] == "all": | ||||||
|  |             if options['verbosity'] != 0: | ||||||
|  |                 self.stdout.write("Anonymize invoice, special transaction, log, mailer and oauth data") | ||||||
|  |             cur.execute("UPDATE treasury_invoice SET " | ||||||
|  |                     "name = 'Anne Onyme', " | ||||||
|  |                     "object = 'Rends nous riches', " | ||||||
|  |                     "description = 'Donne nous plein de sous', " | ||||||
|  |                     "address = '4 avenue des Sciences, 91190 GIF-SUR-YVETTE';") | ||||||
|  |             cur.execute("UPDATE treasury_product SET " | ||||||
|  |                     "designation = 'un truc inutile';") | ||||||
|  |             cur.execute("UPDATE note_specialtransaction SET " | ||||||
|  |                     "bank = 'le matelas', " | ||||||
|  |                     "first_name = 'Anne', " | ||||||
|  |                     "last_name = 'Onyme';") | ||||||
|  |             cur.execute("UPDATE logs_changelog SET " | ||||||
|  |                     "ip = '127.0.0.1', " | ||||||
|                     "data = 'new data', " |                     "data = 'new data', " | ||||||
|                     "previous = 'old data';") |                     "previous = 'old data';") | ||||||
|         cur.execute("UPDATE mailer_messagelog SET" |             cur.execute("UPDATE mailer_messagelog SET " | ||||||
|                     "log_message = 'log message', " |                     "log_message = 'log message', " | ||||||
|                     "message_data = 'message data';") |                     "message_data = 'message data';") | ||||||
|         cur.execute("UPDATE mailer_dontsendentry SET" |             cur.execute("UPDATE mailer_dontsendentry SET " | ||||||
|                     "to_address = 'anonymous@example.com';") |                     "to_address = 'anonymous@example.com';") | ||||||
|         cur.execute("UPDATE oauth2_provider_application SET" |             cur.execute("UPDATE oauth2_provider_application SET " | ||||||
|                     "name = 'external app', " |                     "name = 'external app', " | ||||||
|                     "redirect_urls = 'http://external.app', " |                     "redirect_uris = 'http://external.app', " | ||||||
|                     "client_secret = 'abcdefghijklmnopqrstuvwxyz';") |                     "client_secret = 'abcdefghijklmnopqrstuvwxyz';") | ||||||
|         cur.close() |         cur.close() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user