|
| 1 | +import os |
1 | 2 | from django.utils import timezone |
2 | 3 | from osf.models import OSFUser, Node, Institution |
3 | 4 |
|
| 5 | +WIKI_ENABLED = os.environ.get('WIKI_ENABLED', 'false').lower() == 'true' |
| 6 | + |
4 | 7 | INSTITUTION_NAME = 'Virginia Tech [Test]' |
5 | 8 |
|
6 | 9 | test_users = [ |
|
45 | 48 | }, |
46 | 49 | ] |
47 | 50 |
|
| 51 | +def create_rdmuserkey(user): |
| 52 | + # このスクリプトは `manage.py shell < file` で exec されるため、 |
| 53 | + # 関数内で使うシンボルは関数内で import する(トップレベル import は関数から見えない) |
| 54 | + import hashlib |
| 55 | + from django.utils import timezone |
| 56 | + from osf.models.rdm_user_key import RdmUserKey |
| 57 | + |
| 58 | + PRIVATE_KEY_VALUE = 1 |
| 59 | + PUBLIC_KEY_VALUE = 2 |
| 60 | + |
| 61 | + if RdmUserKey.objects.filter(guid=user.id).exists(): |
| 62 | + print(f"RdmUserKey already exists for user: {user.username}") |
| 63 | + return |
| 64 | + |
| 65 | + now = timezone.now() |
| 66 | + date_hash = hashlib.md5(now.strftime('%Y%m%d%H%M%S').encode('utf-8')).hexdigest() |
| 67 | + pvt_key_name = f'{user._id}_{date_hash}_pvt.pem' |
| 68 | + pub_key_name = f'{user._id}_{date_hash}_pub.pem' |
| 69 | + |
| 70 | + pvt_key = RdmUserKey() |
| 71 | + pvt_key.guid = user.id |
| 72 | + pvt_key.key_name = pvt_key_name |
| 73 | + pvt_key.key_kind = PRIVATE_KEY_VALUE |
| 74 | + pvt_key.created_time = now |
| 75 | + pvt_key.save() |
| 76 | + |
| 77 | + pub_key = RdmUserKey() |
| 78 | + pub_key.guid = user.id |
| 79 | + pub_key.key_name = pub_key_name |
| 80 | + pub_key.key_kind = PUBLIC_KEY_VALUE |
| 81 | + pub_key.created_time = now |
| 82 | + pub_key.save() |
| 83 | + |
| 84 | + print(f"Created RdmUserKey (pvt+pub) for user: {user.username}") |
| 85 | + |
| 86 | + |
48 | 87 | for user_data in test_users: |
49 | 88 | username = user_data['username'] |
50 | 89 | if not OSFUser.objects.filter(username=username).exists(): |
|
93 | 132 | user.emails.create(address=username) |
94 | 133 | print(f"Created test user: {username}") |
95 | 134 |
|
| 135 | + # Create user key (only needed when Wiki is enabled) |
| 136 | + if WIKI_ENABLED: |
| 137 | + create_rdmuserkey(user) |
| 138 | + |
96 | 139 | # Create a project for the new user |
97 | 140 | project = Node( |
98 | 141 | title=f"Test Project for {user_data['fullname']}", |
|
109 | 152 | print(f"Test user already exists: {username}") |
110 | 153 | # Ensure existing user has at least one project |
111 | 154 | user = OSFUser.objects.get(username=username) |
| 155 | + |
| 156 | + # Create user key (only needed when Wiki is enabled) |
| 157 | + if WIKI_ENABLED: |
| 158 | + create_rdmuserkey(user) |
| 159 | + |
112 | 160 | if not user.nodes.filter(category='project').exists(): |
113 | 161 | project = Node( |
114 | 162 | title=f"Test Project for {user.fullname}", |
|
0 commit comments