forked from JOJ/Joint-Teapot
		
	feat: less commit iter
This commit is contained in:
		
							parent
							
								
									4b59a3d629
								
							
						
					
					
						commit
						6d9c5e6431
					
				|  | @ -1007,17 +1007,24 @@ def joj3_check_env( | ||||||
|         r"by @(?P<submitter>.+) in " |         r"by @(?P<submitter>.+) in " | ||||||
|         r"(?P<gitea_org_name>.+)/(?P<submitter_repo_name>.+)@(?P<commit_hash>.+)" |         r"(?P<gitea_org_name>.+)/(?P<submitter_repo_name>.+)@(?P<commit_hash>.+)" | ||||||
|     ) |     ) | ||||||
|  |     time_windows = [] | ||||||
|  |     valid_items = [] | ||||||
|     for item in items: |     for item in items: | ||||||
|         name, values = item.split("=") |         name, values = item.split("=") | ||||||
|         max_count, time_period = map(int, values.split(":")) |         max_count, time_period = map(int, values.split(":")) | ||||||
|         if max_count < 0 or time_period < 0: |         if max_count < 0 or time_period < 0: | ||||||
|             continue |             continue | ||||||
|         since = now - timedelta(hours=time_period) |         since = now - timedelta(hours=time_period) | ||||||
|         since_git_format = since.strftime("%Y-%m-%dT%H:%M:%S") |         time_windows.append(since) | ||||||
|         submit_count = 0 |         valid_items.append((name, max_count, time_period, since)) | ||||||
|         commits = repo.iter_commits(paths=scoreboard_filename, since=since_git_format) |     all_commits = [] | ||||||
|  |     if time_windows: | ||||||
|  |         earliest_since = min(time_windows).strftime("%Y-%m-%dT%H:%M:%S") | ||||||
|  |         commits = repo.iter_commits(paths=scoreboard_filename, since=earliest_since) | ||||||
|         for commit in commits: |         for commit in commits: | ||||||
|             lines = commit.message.strip().splitlines() |             lines = commit.message.strip().splitlines() | ||||||
|  |             if not lines: | ||||||
|  |                 continue | ||||||
|             match = pattern.match(lines[0]) |             match = pattern.match(lines[0]) | ||||||
|             if not match: |             if not match: | ||||||
|                 continue |                 continue | ||||||
|  | @ -1028,14 +1035,31 @@ def joj3_check_env( | ||||||
|                 or submitter_repo_name != d["submitter_repo_name"] |                 or submitter_repo_name != d["submitter_repo_name"] | ||||||
|             ): |             ): | ||||||
|                 continue |                 continue | ||||||
|             if name != "": |             groups_line = next((l for l in lines if l.startswith("groups: ")), None) | ||||||
|                 line = first(lines, lambda l: l.startswith("groups: ")) |             commit_groups = ( | ||||||
|                 if line and name not in line[len("groups: ") :].split(","): |                 groups_line[len("groups: ") :].split(",") if groups_line else [] | ||||||
|  |             ) | ||||||
|  |             all_commits.append( | ||||||
|  |                 { | ||||||
|  |                     "time": commit.committed_datetime, | ||||||
|  |                     "groups": [g.strip() for g in commit_groups], | ||||||
|  |                 } | ||||||
|  |             ) | ||||||
|  |     for name, max_count, time_period, since in valid_items: | ||||||
|  |         submit_count = 0 | ||||||
|  |         time_limit = now - timedelta(hours=time_period) | ||||||
|  |         for commit in all_commits: | ||||||
|  |             if commit["time"] < time_limit: | ||||||
|  |                 continue | ||||||
|  |             if name: | ||||||
|  |                 target_group = name.lower() | ||||||
|  |                 commit_groups_lower = [g.lower() for g in commit["groups"]] | ||||||
|  |                 if target_group not in commit_groups_lower: | ||||||
|                     continue |                     continue | ||||||
|             submit_count += 1 |             submit_count += 1 | ||||||
|         logger.info( |         logger.info( | ||||||
|             f"submitter {submitter} is submitting for the {submit_count + 1} time, " |             f"submitter {submitter} is submitting for the {submit_count + 1} time, " | ||||||
|             f"{max_count - submit_count - 1} time(s) remaining, " |             f"{min(0, max_count - submit_count - 1)} time(s) remaining, " | ||||||
|             f"group={name}, " |             f"group={name}, " | ||||||
|             f"time period={time_period} hour(s), " |             f"time period={time_period} hour(s), " | ||||||
|             f"max count={max_count}, submit count={submit_count}" |             f"max count={max_count}, submit count={submit_count}" | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user