Last active
December 27, 2015 13:09
-
-
Save brijrajsingh/7331478 to your computer and use it in GitHub Desktop.
Create project at gitlab along with giving access to developers, QAs and Artists, this python script creates 5 copies of a project and gives access to diff groups as need be, feel free to temper it to your need. I am new to python so I wrote it quite monolithic style.
Developer list is separated by colon, and so does Artist and QA list, the file…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Company - The perfect future technologies pvt. ltd. | |
#website - www.theperfectfuture.com | |
#Author - brijraj singh | |
#email - [email protected] | |
#Date - 06/11/2013 | |
import urllib2,urllib | |
import sys,traceback | |
import csv | |
import json | |
with open('test-sample.csv', 'rb') as csvfile: | |
linereader = csv.reader(csvfile,delimiter=',',quotechar='|') | |
rownum = 0 | |
for row in linereader: | |
# Save header row. | |
if rownum == 0: | |
header = row | |
else: | |
colnum = 0 | |
projectname = '' | |
developers = '' | |
artists = '' | |
qas = '' | |
platform = '' | |
for col in row: | |
#print '%-8s: %s' % (header[colnum], col) | |
if(colnum == 0): | |
projectname = col | |
elif(colnum == 1): | |
developers = col | |
elif(colnum == 2): | |
artists = col | |
elif(colnum == 3): | |
qas = col | |
elif(colnum == 4): | |
platform = col | |
print "project is " + str(projectname) | |
print "developers " + str(developers) | |
print "artists " + str(artists) | |
print "qas " + str(qas) | |
print "platform is " + str(platform) | |
colnum += 1 | |
#creating a project and getting its id | |
projaddparams = {} | |
projaddparams['name'] = str("src_" + platform + "_" +projectname) | |
try: | |
#create src project | |
projaddparams = urllib.urlencode(projaddparams) | |
target = 'http://192.168.1.91/gitlab/api/v3/projects' | |
req = urllib2.Request(target) | |
req.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh') | |
req.add_data(projaddparams) | |
resp = urllib2.urlopen(req) | |
projectjsonResponse = resp.read() | |
print "project created with json "+ projectjsonResponse | |
projectdata = json.loads(str(projectjsonResponse)) | |
srcprojectid = projectdata['id'] | |
#create Artist project folder | |
artprojaddparams = {} | |
artprojaddparams['name'] = str("art_" + platform + "_" +projectname) | |
artreq = urllib2.Request(target) | |
artreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh') | |
artprojaddparams = urllib.urlencode(artprojaddparams) | |
artreq.add_data(artprojaddparams) | |
artresp = urllib2.urlopen(artreq) | |
artprojectjsonResponse = artresp.read() | |
print "project created with json "+ artprojectjsonResponse | |
artprojectdata = json.loads(str(artprojectjsonResponse)) | |
artprojectid = artprojectdata['id'] | |
#create Assets project folder | |
astprojaddparams = {} | |
astprojaddparams['name'] = str("ast_" + platform + "_" +projectname) | |
astreq = urllib2.Request(target) | |
astreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh') | |
astprojaddparams = urllib.urlencode(astprojaddparams) | |
astreq.add_data(astprojaddparams) | |
astresp = urllib2.urlopen(astreq) | |
astprojectjsonResponse = astresp.read() | |
print "project created with json "+ astprojectjsonResponse | |
astprojectdata = json.loads(str(astprojectjsonResponse)) | |
astprojectid = astprojectdata['id'] | |
#create Builds project folder | |
bldprojaddparams = {} | |
bldprojaddparams['name'] = str("bld_" + platform + "_" +projectname) | |
bldreq = urllib2.Request(target) | |
bldreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh') | |
bldprojaddparams = urllib.urlencode(bldprojaddparams) | |
bldreq.add_data(bldprojaddparams) | |
bldresp = urllib2.urlopen(bldreq) | |
bldprojectjsonResponse = bldresp.read() | |
print "project created with json "+ bldprojectjsonResponse | |
bldprojectdata = json.loads(str(bldprojectjsonResponse)) | |
bldprojectid = bldprojectdata['id'] | |
#create Marketing project folder | |
mktprojaddparams = {} | |
mktprojaddparams['name'] = str("mkt_" + platform + "_" +projectname) | |
mktreq = urllib2.Request(target) | |
mktreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh') | |
mktprojaddparams = urllib.urlencode(mktprojaddparams) | |
mktreq.add_data(mktprojaddparams) | |
mktresp = urllib2.urlopen(mktreq) | |
mktprojectjsonResponse = mktresp.read() | |
print "project created with json "+ mktprojectjsonResponse | |
mktprojectdata = json.loads(str(mktprojectjsonResponse)) | |
mktprojectid = mktprojectdata['id'] | |
#get the developers, split by semicolon if have to and add them as members | |
print str(developers) | |
listdevelopers = str(developers).split(':') | |
for eachdeveloper in listdevelopers: | |
print "this developer : " + eachdeveloper + " is for project " + str(projectname) | |
usersjson_data=open('users_git.json').read() | |
gitusersdata = json.loads(usersjson_data) | |
for eachgituser in gitusersdata: | |
if (eachgituser['username'] == eachdeveloper): | |
print "id of " + eachdeveloper + " is : " + str(eachgituser['id']) | |
#add this developer as the member of the project - src project - R/W | |
#curl --header "PRIVATE-TOKEN: 216324ghqv4vq3hvh" --data "id=85&user_id=3&access_level=30" http://192.168.1.91/gitlab/api/v3/projects/85/members | |
addmemmbertarget = 'http://192.168.1.91/gitlab/api/v3/projects/' + str(srcprojectid) + '/members' | |
devmemberaddparams = {} | |
devmemberaddparams['user_id'] = str(eachgituser['id']) | |
devmemberaddparams['access_level'] = '30' | |
devmemberreq = urllib2.Request(addmemmbertarget) | |
devmemberreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh') | |
devmemberaddparams = urllib.urlencode(devmemberaddparams) | |
devmemberreq.add_data(devmemberaddparams) | |
devmemberresp = urllib2.urlopen(devmemberreq) | |
devmemberjsonResponse = devmemberresp.read() | |
#add this developer as the read only | |
addmemmbertarget = 'http://192.168.1.91/gitlab/api/v3/projects/' + str(astprojectid) + '/members' | |
devmemberaddparams = {} | |
devmemberaddparams['user_id'] = str(eachgituser['id']) | |
devmemberaddparams['access_level'] = '20' | |
devmemberreq = urllib2.Request(addmemmbertarget) | |
devmemberreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh') | |
devmemberaddparams = urllib.urlencode(devmemberaddparams) | |
devmemberreq.add_data(devmemberaddparams) | |
devmemberresp = urllib2.urlopen(devmemberreq) | |
devmemberjsonResponse = devmemberresp.read() | |
#get the artists, split by semicolon if have to and add them as members | |
print str(artists) | |
listartists = str(artists).split(':') | |
for eachartist in listartists: | |
print "this artist : " + eachartist + " is for project " + str(projectname) | |
usersjson_data=open('users_git.json').read() | |
gitusersdata = json.loads(usersjson_data) | |
for eachgituser in gitusersdata: | |
if (eachgituser['username'] == eachartist): | |
print "id of " + eachartist + " is : " + str(eachgituser['id']) | |
#add this developer as the member of the project - art,ast,mkt project - R/W | |
#curl --header "PRIVATE-TOKEN: 216324ghqv4vq3hvh" --data "id=85&user_id=3&access_level=30" http://192.168.1.91/gitlab/api/v3/projects/85/members | |
addmemmbertarget = 'http://192.168.1.91/gitlab/api/v3/projects/' + str(artprojectid) + '/members' | |
devmemberaddparams = {} | |
devmemberaddparams['user_id'] = str(eachgituser['id']) | |
devmemberaddparams['access_level'] = '30' | |
devmemberreq = urllib2.Request(addmemmbertarget) | |
devmemberreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh') | |
devmemberaddparams = urllib.urlencode(devmemberaddparams) | |
devmemberreq.add_data(devmemberaddparams) | |
devmemberresp = urllib2.urlopen(devmemberreq) | |
devmemberjsonResponse = devmemberresp.read() | |
#add this developer as the R/W at assets | |
addmemmbertarget = 'http://192.168.1.91/gitlab/api/v3/projects/' + str(astprojectid) + '/members' | |
devmemberaddparams = {} | |
devmemberaddparams['user_id'] = str(eachgituser['id']) | |
devmemberaddparams['access_level'] = '30' | |
devmemberreq = urllib2.Request(addmemmbertarget) | |
devmemberreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh') | |
devmemberaddparams = urllib.urlencode(devmemberaddparams) | |
devmemberreq.add_data(devmemberaddparams) | |
devmemberresp = urllib2.urlopen(devmemberreq) | |
devmemberjsonResponse = devmemberresp.read() | |
#add this developer as the R/W at Marketing | |
addmemmbertarget = 'http://192.168.1.91/gitlab/api/v3/projects/' + str(mktprojectid) + '/members' | |
devmemberaddparams = {} | |
devmemberaddparams['user_id'] = str(eachgituser['id']) | |
devmemberaddparams['access_level'] = '30' | |
devmemberreq = urllib2.Request(addmemmbertarget) | |
devmemberreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh') | |
devmemberaddparams = urllib.urlencode(devmemberaddparams) | |
devmemberreq.add_data(devmemberaddparams) | |
devmemberresp = urllib2.urlopen(devmemberreq) | |
devmemberjsonResponse = devmemberresp.read() | |
#get the qas, split by semicolon if have to and add them as members | |
print str(qas) | |
listqas = str(qas).split(':') | |
for eachqa in listqas: | |
print "this Qa : " + eachqa + " is for project " + str(projectname) | |
usersjson_data=open('users_git.json').read() | |
gitusersdata = json.loads(usersjson_data) | |
for eachgituser in gitusersdata: | |
if (eachgituser['username'] == eachqa): | |
print "id of " + eachqa + " is : " + str(eachgituser['id']) | |
#add this developer as the member of the project - art,ast,mkt project - R/W | |
#curl --header "PRIVATE-TOKEN: 216324ghqv4vq3hvh" --data "id=85&user_id=3&access_level=30" http://192.168.1.91/gitlab/api/v3/projects/85/members | |
addmemmbertarget = 'http://192.168.1.91/gitlab/api/v3/projects/' + str(bldprojectid) + '/members' | |
devmemberaddparams = {} | |
devmemberaddparams['user_id'] = str(eachgituser['id']) | |
devmemberaddparams['access_level'] = '20' | |
devmemberreq = urllib2.Request(addmemmbertarget) | |
devmemberreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh') | |
devmemberaddparams = urllib.urlencode(devmemberaddparams) | |
devmemberreq.add_data(devmemberaddparams) | |
devmemberresp = urllib2.urlopen(devmemberreq) | |
devmemberjsonResponse = devmemberresp.read() | |
#add this developer as the R/W at assets | |
addmemmbertarget = 'http://192.168.1.91/gitlab/api/v3/projects/' + str(mktprojectid) + '/members' | |
devmemberaddparams = {} | |
devmemberaddparams['user_id'] = str(eachgituser['id']) | |
devmemberaddparams['access_level'] = '30' | |
devmemberreq = urllib2.Request(addmemmbertarget) | |
devmemberreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh') | |
devmemberaddparams = urllib.urlencode(devmemberaddparams) | |
devmemberreq.add_data(devmemberaddparams) | |
devmemberresp = urllib2.urlopen(devmemberreq) | |
devmemberjsonResponse = devmemberresp.read() | |
except: | |
traceback.print_exc(file=sys.stdout) | |
rownum += 1 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment