Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • isc/projects/practical-work-manager
1 result
Show changes
Commits on Source (4)
......@@ -62,8 +62,12 @@ def emails_to_ids(emails: List[str], headers: Dict[str, str]) -> List[int]:
for email in emails:
# Dirty and hackish way that attempts to extract the username from the email.
# It's inefficient, but currently there is now way to reliably obtain
# It's inefficient, but currently there is no way to reliably obtain
# the username from the email.
# new strategy: - stop when we reach the "." or when we get more than 1 result
# Example of tricky users:
# pierre-louis.roden@etu.hesge.ch -> login AAI: pierrelo.roden
# joel.ferreirapinto@etu.hesge.ch -> login AAI: joelfili.ferreira
username = email.split("@")[0]
#print("Email: ",email)
......@@ -71,11 +75,17 @@ def emails_to_ids(emails: List[str], headers: Dict[str, str]) -> List[int]:
#print("Guessed username: ",username)
user_requested = requests.get(BASE_API_URL + '/users', params={'search': username}, headers=headers).json()
if len(user_requested) == 0:
nb_users = len(user_requested)
if nb_users == 0:
#print('No user %s found, another try...' % email)
lastchar = username[-1]
username = username.rstrip(lastchar)
if username[-1] == '.': # stop if we reach the . -> probably at least one wrong person match the first name
break
continue
elif nb_users > 1:
print('Too many users found for email %s, aborting.' % email)
exit(1)
#print(json.dumps(user_requested, indent=4))
user_ids.append(user_requested[0]['id'])
......@@ -104,7 +114,7 @@ def create_repository(token: str, group_id: str, emails: List[str], name: str, i
project['web_url'] + "' created")
# Allow users with developer access level to push and merge on master
access_level = 30
access_level = 40
params = {'name': 'master', 'push_access_level': str(
access_level), 'merge_access_level': str(access_level)}
requests.post(BASE_API_URL + '/projects/' +
......@@ -113,7 +123,7 @@ def create_repository(token: str, group_id: str, emails: List[str], name: str, i
# Get students ids from their emails
user_ids = emails_to_ids(emails, headers)
# Add each student as project's developer (level 30)
# Add each student as maintainer (level 40)
for user_id in user_ids:
params = {'user_id': user_id, 'access_level': access_level}
if expires_at:
......