@@ -2364,6 +2364,26 @@ class ProjectPipelineScheduleManager(CRUDMixin, RESTManager):
2364
2364
('description' , 'ref' , 'cron' , 'cron_timezone' , 'active' ))
2365
2365
2366
2366
2367
+ class ProjectPushRules (SaveMixin , ObjectDeleteMixin , RESTObject ):
2368
+ _id_attr = None
2369
+
2370
+
2371
+ class ProjectPushRulesManager (GetWithoutIdMixin , CRUDMixin , RESTManager ):
2372
+ _path = '/projects/%(project_id)s/push_rule'
2373
+ _obj_cls = ProjectPushRules
2374
+ _from_parent_attrs = {'project_id' : 'id' }
2375
+ _create_attrs = (tuple (),
2376
+ ('deny_delete_tag' , 'member_check' ,
2377
+ 'prevent_secrets' , 'commit_message_regex' ,
2378
+ 'branch_name_regex' , 'author_email_regex' ,
2379
+ 'file_name_regex' , 'max_file_size' ))
2380
+ _update_attrs = (tuple (),
2381
+ ('deny_delete_tag' , 'member_check' ,
2382
+ 'prevent_secrets' , 'commit_message_regex' ,
2383
+ 'branch_name_regex' , 'author_email_regex' ,
2384
+ 'file_name_regex' , 'max_file_size' ))
2385
+
2386
+
2367
2387
class ProjectSnippetNoteAwardEmoji (ObjectDeleteMixin , RESTObject ):
2368
2388
pass
2369
2389
@@ -2755,6 +2775,7 @@ class Project(SaveMixin, ObjectDeleteMixin, RESTObject):
2755
2775
('pipelines' , 'ProjectPipelineManager' ),
2756
2776
('protectedbranches' , 'ProjectProtectedBranchManager' ),
2757
2777
('pipelineschedules' , 'ProjectPipelineScheduleManager' ),
2778
+ ('pushrules' , 'ProjectPushRulesManager' ),
2758
2779
('runners' , 'ProjectRunnerManager' ),
2759
2780
('services' , 'ProjectServiceManager' ),
2760
2781
('snippets' , 'ProjectSnippetManager' ),
0 commit comments