feat(mm): git suffix for webhooks (#52)
This commit is contained in:
		
							parent
							
								
									34539f435e
								
							
						
					
					
						commit
						31374ce816
					
				|  | @ -93,7 +93,7 @@ create teams on gitea by canvas groups | ||||||
| 
 | 
 | ||||||
| Create a pair of webhooks on gitea and mm for all student groups on gitea, and configure them so that updates on gitea will be pushed to the mm channel. Optionally specify a prefix to ignore all repos whose names do not start with it. | Create a pair of webhooks on gitea and mm for all student groups on gitea, and configure them so that updates on gitea will be pushed to the mm channel. Optionally specify a prefix to ignore all repos whose names do not start with it. | ||||||
| 
 | 
 | ||||||
| Example: `python3 -m joint_teapot create-webhooks-for-mm p1` will fetch all repos whose names start with `"p1"` and create two-way webhooks for these repos. All repos should already have same-name mm channels. If not, use `create-channels-on-mm` to create them. | Example: `python3 -m joint_teapot create-webhooks-for-mm p1 -git-suffix` will fetch all repos whose names start with `"p1"` and create two-way webhooks for these repos and channels of the same name but with a "-git" suffix. All repos should already have mm channels following the requirement. If not, use `create-channels-on-mm` to create them. | ||||||
| 
 | 
 | ||||||
| ### `get-no-collaborator-repos` | ### `get-no-collaborator-repos` | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -215,14 +215,16 @@ def create_personal_channels_on_mm( | ||||||
|     help="create a pair of webhooks on gitea and mm for all student groups on gitea, " |     help="create a pair of webhooks on gitea and mm for all student groups on gitea, " | ||||||
|     "and configure them so that updates on gitea will be pushed to the mm channel", |     "and configure them so that updates on gitea will be pushed to the mm channel", | ||||||
| ) | ) | ||||||
| def create_webhooks_for_mm(prefix: str = Argument("")) -> None: | def create_webhooks_for_mm( | ||||||
|  |     regex: str = Argument(""), git_suffix: bool = Option(False) | ||||||
|  | ) -> None: | ||||||
|     repo_names = [ |     repo_names = [ | ||||||
|         group_name |         group_name | ||||||
|         for group_name in tea.pot.gitea.get_all_teams() |         for group_name in tea.pot.gitea.get_all_teams() | ||||||
|         if group_name.startswith(prefix) |         if re.match(regex, group_name) | ||||||
|     ] |     ] | ||||||
|     logger.info(f"{len(repo_names)} pair(s) of webhooks to be created: {repo_names}") |     logger.info(f"{len(repo_names)} pair(s) of webhooks to be created: {repo_names}") | ||||||
|     tea.pot.mattermost.create_webhooks_for_repos(repo_names, tea.pot.gitea) |     tea.pot.mattermost.create_webhooks_for_repos(repo_names, tea.pot.gitea, git_suffix) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @app.command( | @app.command( | ||||||
|  |  | ||||||
|  | @ -166,17 +166,20 @@ class Mattermost: | ||||||
| 
 | 
 | ||||||
|                 logger.info(f"Added member {member} to channel {channel_name}") |                 logger.info(f"Added member {member} to channel {channel_name}") | ||||||
| 
 | 
 | ||||||
|     def create_webhooks_for_repos(self, repos: List[str], gitea: Gitea) -> None: |     def create_webhooks_for_repos( | ||||||
|  |         self, repos: List[str], gitea: Gitea, git_suffix: bool | ||||||
|  |     ) -> None: | ||||||
|         # one group corresponds to one repo so these concepts can be used interchangeably |         # one group corresponds to one repo so these concepts can be used interchangeably | ||||||
|         for repo in repos: |         for repo in repos: | ||||||
|             logger.info(f"Creating webhooks for repo {gitea.org_name}/{repo}") |             logger.info(f"Creating webhooks for repo {gitea.org_name}/{repo}") | ||||||
|  |             channel_name = f"{repo}-git" if git_suffix else repo | ||||||
|             try: |             try: | ||||||
|                 mm_channel = self.endpoint.channels.get_channel_by_name( |                 mm_channel = self.endpoint.channels.get_channel_by_name( | ||||||
|                     self.team["id"], repo |                     self.team["id"], channel_name | ||||||
|                 ) |                 ) | ||||||
|             except Exception as e: |             except Exception as e: | ||||||
|                 logger.warning( |                 logger.warning( | ||||||
|                     f"Error when getting channel {repo} from Mattermost team {self.team['name']}: {e}" |                     f"Error when getting channel {channel_name} from Mattermost team {self.team['name']}: {e}" | ||||||
|                 ) |                 ) | ||||||
|                 continue |                 continue | ||||||
|             try: |             try: | ||||||
|  | @ -209,7 +212,7 @@ class Mattermost: | ||||||
|                             "username": "FOCS Gitea", |                             "username": "FOCS Gitea", | ||||||
|                             "icon_url": f"https://{self.url}{self.url_suffix}/api/v4/brand/image", |                             "icon_url": f"https://{self.url}{self.url_suffix}/api/v4/brand/image", | ||||||
|                             "content_type": "json", |                             "content_type": "json", | ||||||
|                             "channel": repo, |                             "channel": channel_name, | ||||||
|                         }, |                         }, | ||||||
|                     ), |                     ), | ||||||
|                 ) |                 ) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 mQzLjP
						mQzLjP