Exemple #1
0
	def handle(self, *args, **options):
		if len(args) != 1:
			raise CommandError('Argument must be a link to the binary plist file')
		
		plist = biplist.readPlist(args[0])
		computers = plist['computers']
		
		with transaction.atomic():
			for computer in computers.values():
				computerInfo = _parseComputerInfo(computer)
				
				if not computerInfo['serial']:
					continue
				
				if not (computerInfo['localUser'] or computerInfo['munkiMap']):
					continue
					
				computerObj = Computer()
				computerObj.serialNumber = computerInfo['serial']
				computerObj.computerName = computerInfo['computerName']
				
				if computerInfo['group'] in enrollmentSetMap:
					enrollmentSetName = enrollmentSetMap[computerInfo['group']]
					try:
						enrollmentSet = AutoEnroll.objects.get(pk=enrollmentSetName)
					except AutoEnroll.DoesNotExist:
						enrollmentSet = AutoEnroll()
						enrollmentSet.name = enrollmentSetName
						enrollmentSet.enrollmentAllowed = False
						enrollmentSet.setEnabled = False
						enrollmentSet.requireComputerName = False
						enrollmentSet.requireLanschool = False
						enrollmentSet.save()
					
					computerObj.enrollmentSet = enrollmentSet
				
				computerObj.save()
				
				if computerInfo['localUser']:
					localUser = AutoLocalUser()
					localUser.computer = computerObj
					localUser.fullName = computerInfo['localUser']['fullName']
					localUser.userName = computerInfo['localUser']['userName']
					localUser.admin = computerInfo['localUser']['admin']
					
					localUser.save()
				
				for attr, (objClass, objNames) in computerInfo['munkiMap'].items():
					objs = [objClass.objects.get(pk=name) for name in objNames]
					setattr(computerObj, attr, objs)
				
				computerObj.save()
Exemple #2
0
def autoEnroll(request):
	if request.method != 'POST':
		return HttpResponseNotAllowed(['POST'])
	
	serialNumber = request.POST.get("serialNumber", None)
	enrollmentSetName = request.POST.get("enrollmentSet", None)
	description = request.POST.get("description", None)
	
	if not serialNumber:
		return HttpResponseBadRequest("Serial number is required")
	
	if not enrollmentSetName:
		return HttpResponseBadRequest("Enrollment set is required")
	
	try:
		enrollmentSet = AutoEnroll.objects.get(pk=enrollmentSetName)
	except AutoEnroll.DoesNotExist:
		return HttpResponseNotFound("Enrollment set not found")
	
	if not enrollmentSet.enrollmentAllowed:
		return HttpResponseBadRequest("Enrollment set is not accepting new enrollments")
	
	try:
		computer = Computer.objects.get(pk=serialNumber)
	except Computer.DoesNotExist:
		computer = None
		
	if computer:
		return HttpResponseForbidden("Serial number already exists in database")
		
	computer = Computer(pk=serialNumber)
	computer.enabled = enrollmentSet.setEnabled
	computer.enrollmentSet = enrollmentSet
	computer.description = description or ""
	computer.save()
	
	return HttpResponse("OK", content_type="text/plain")