使用GitLab Python库判断一个mr是否完全approval

12 篇文章 0 订阅
import gitlab

# GitLab server URL and personal access token
gitlab_url = 'https://gitlab.example.com'
private_token = 'your_personal_access_token'

# ID of the project and merge request
project_id = 1234
merge_request_iid = 5678

# Create GitLab client
gl = gitlab.Gitlab(gitlab_url, private_token)

# Get the project
project = gl.projects.get(project_id)

# Get the merge request
mr = project.mergerequests.get(merge_request_iid)

# Get the approval status of the merge request
all_approved = mr.approval_state.get()

for rule in all_approved.rules:
   if rule.get('approved')==False:
       print("Not all approvals received.")
       break
else:
	print("All approvals received.")

mr.approval_state.get()返回的格式:

<class 'gitlab.v4.objects.merge_request_approvals.ProjectMergeRequestApprovalState'> => {
  'approval_rules_overwritten': True,
  'rules': [
    {
      'id': 12345,
      'name': 'All Members',
      'rule_type': 'any_approver',
      'eligible_approvers': [],
      'approvals_required': 1,
      'users': [],
      'groups': [],
      'contains_hidden_groups': False,
      'section': None,
      'source_rule': {
        'approvals_required': 1
      },
      'overridden': False,
      'code_owner': False,
      'approved_by': [
        {
          'id': 121,
          'username': 'xxx',
          ......
        },
        {
          'id': 122,
          'username': 'xxx',
          ......
        }
      ],
      'approved': True
    },

所有rule的approved为True则表明全部approved。

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是Approval实体类的基本CRUD接口实现: 1. 定义Approval实体类 ```java @Entity @Table(name = "approval") public class Approval { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String description; // getters and setters } ``` 2. 创建ApprovalRepository接口 ```java @Repository public interface ApprovalRepository extends JpaRepository<Approval, Long> {} ``` 3. 创建ApprovalService接口和实现类 ```java public interface ApprovalService { Approval create(Approval approval); Approval update(Long id, Approval approval); void delete(Long id); Approval findById(Long id); List<Approval> findAll(); } @Service public class ApprovalServiceImpl implements ApprovalService { @Autowired private ApprovalRepository approvalRepository; @Override public Approval create(Approval approval) { return approvalRepository.save(approval); } @Override public Approval update(Long id, Approval approval) { Approval existingApproval = findById(id); existingApproval.setName(approval.getName()); existingApproval.setDescription(approval.getDescription()); return approvalRepository.save(existingApproval); } @Override public void delete(Long id) { approvalRepository.deleteById(id); } @Override public Approval findById(Long id) { return approvalRepository.findById(id) .orElseThrow(() -> new NoSuchElementException("Approval not found with id " + id)); } @Override public List<Approval> findAll() { return approvalRepository.findAll(); } } ``` 4. 创建ApprovalController类 ```java @RestController @RequestMapping("/approvals") public class ApprovalController { @Autowired private ApprovalService approvalService; @PostMapping public Approval create(@RequestBody Approval approval) { return approvalService.create(approval); } @PutMapping("/{id}") public Approval update(@PathVariable Long id, @RequestBody Approval approval) { return approvalService.update(id, approval); } @DeleteMapping("/{id}") public void delete(@PathVariable Long id) { approvalService.delete(id); } @GetMapping("/{id}") public Approval findById(@PathVariable Long id) { return approvalService.findById(id); } @GetMapping public List<Approval> findAll() { return approvalService.findAll(); } } ``` 至此,我们就完成了一个基本的Approval实体类的CRUD接口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值