Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit123a01e

Browse files
author
Gauvain Pocentek
committed
Check the needed attributes to create objects
Provide a required and optional arguments lists for each object that canbe created using the API
1 parent8d65870 commit123a01e

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

‎gitlab.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ def default(self, obj):
3535
return {'url':obj._url}
3636
returnjson.JSONEncoder.default(self,obj)
3737

38+
3839
classGitlabConnectionError(Exception):
3940
pass
4041

@@ -229,6 +230,14 @@ def delete(self, obj):
229230
returnFalse
230231

231232
defcreate(self,obj):
233+
missing= []
234+
forkinobj.requiredCreateAttrs:
235+
ifknotinobj.__dict__:
236+
missing.append (k)
237+
ifmissing:
238+
raiseGitlabCreateError('Missing attribute(s): %s'% \
239+
", ".join(missing))
240+
232241
url=obj._url%obj.__dict__
233242
url='%s%s?private_token=%s'% (self._url,url,self.private_token)
234243

@@ -346,6 +355,8 @@ class GitlabObject(object):
346355
canCreate=True
347356
canUpdate=True
348357
canDelete=True
358+
requiredCreateAttrs= []
359+
optionalCreateAttrs= []
349360

350361
@classmethod
351362
deflist(cls,gl,**kwargs):
@@ -436,6 +447,9 @@ def json(self):
436447

437448
classUser(GitlabObject):
438449
_url='/users'
450+
requiredCreateAttrs= ['email','password','username','name']
451+
optionalCreateAttrs= ['skype','linkedin','twitter','projects_limit',
452+
'extern_uid','provider','bio']
439453

440454

441455
classCurrentUserKey(GitlabObject):
@@ -460,6 +474,7 @@ def Key(self, id=None, **kwargs):
460474
classGroup(GitlabObject):
461475
_url='/groups'
462476
_constructorTypes= {'projects':'Project'}
477+
requiredCreateAttrs= ['name','path']
463478

464479
deftransfer_project(self,id):
465480
url='/groups/%d/projects/%d?private_token=%s'% \
@@ -471,6 +486,7 @@ def transfer_project(self, id):
471486

472487
classHook(GitlabObject):
473488
_url='/hooks'
489+
requiredCreateAttrs= ['url']
474490

475491

476492
classIssue(GitlabObject):
@@ -520,24 +536,30 @@ class ProjectCommit(GitlabObject):
520536
classProjectKey(GitlabObject):
521537
_url='/projects/%(project_id)d/keys'
522538
canUpdate=False
539+
requiredCreateAttrs= ['title','key']
523540

524541

525542
classProjectHook(GitlabObject):
526543
_url='/projects/%(project_id)d/hooks'
544+
requiredCreateAttrs= ['url']
527545

528546

529547
classProjectIssueNote(GitlabObject):
530548
_url='/projects/%(project_id)d/issues/%(issue_id)d/notes'
531549
_constructorTypes= {'author':'User'}
532550
canUpdate=False
533551
canDelete=False
552+
requiredCreateAttrs= ['body']
534553

535554

536555
classProjectIssue(GitlabObject):
537556
_url='/projects/%(project_id)s/issues/'
538557
_constructorTypes= {'author':'User','assignee':'User',
539558
'milestone':'ProjectMilestone'}
540559
canDelete=False
560+
requiredCreateAttrs= ['title']
561+
optionalCreateAttrs= ['description','assignee_id','milestone_id',
562+
'labels']
541563

542564
defNote(self,id=None,**kwargs):
543565
returnself._getListOrObject(ProjectIssueNote,id,
@@ -549,13 +571,15 @@ def Note(self, id=None, **kwargs):
549571
classProjectMember(GitlabObject):
550572
_url='/projects/%(project_id)d/members'
551573
_returnClass=User
574+
requiredCreateAttrs= ['user_id','access_level']
552575

553576

554577
classProjectNote(GitlabObject):
555578
_url='/projects/%(project_id)d/notes'
556579
_constructorTypes= {'author':'User'}
557580
canUpdate=False
558581
canDelete=False
582+
requiredCreateAttrs= ['body']
559583

560584

561585
classProjectTag(GitlabObject):
@@ -579,6 +603,8 @@ class ProjectMergeRequest(GitlabObject):
579603
_url='/projects/%(project_id)d/merge_request'
580604
_constructorTypes= {'author':'User','assignee':'User'}
581605
canDelete=False
606+
requiredCreateAttrs= ['source_branch','target_branch','title']
607+
optionalCreateAttrs= ['assignee_id']
582608

583609
defNote(self,id=None,**kwargs):
584610
returnself._getListOrObject(ProjectMergeRequestNote,id,
@@ -590,18 +616,23 @@ def Note(self, id=None, **kwargs):
590616
classProjectMilestone(GitlabObject):
591617
_url='/projects/%(project_id)s/milestones'
592618
canDelete=False
619+
requiredCreateAttrs= ['title']
620+
optionalCreateAttrs= ['description','due_date']
593621

594622

595623
classProjectSnippetNote(GitlabObject):
596624
_url='/projects/%(project_id)d/snippets/%(snippet_id)d/notes'
597625
_constructorTypes= {'author':'User'}
598626
canUpdate=False
599627
canDelete=False
628+
requiredCreateAttrs= ['body']
600629

601630

602631
classProjectSnippet(GitlabObject):
603632
_url='/projects/%(project_id)d/snippets'
604633
_constructorTypes= {'author':'User'}
634+
requiredCreateAttrs= ['title','file_name','code']
635+
optionalCreateAttrs= ['lifetime']
605636

606637
defNote(self,id=None,**kwargs):
607638
returnself._getListOrObject(ProjectSnippetNote,id,
@@ -615,6 +646,10 @@ class Project(GitlabObject):
615646
_constructorTypes= {'owner':'User','namespace':'Group'}
616647
canUpdate=False
617648
canDelete=False
649+
requiredCreateAttrs= ['name']
650+
optionalCreateAttrs= ['default_branch','issues_enabled','wall_enabled',
651+
'merge_requests_enabled','wiki_enabled',
652+
'namespace_id']
618653

619654
defBranch(self,id=None,**kwargs):
620655
returnself._getListOrObject(ProjectBranch,id,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp