def inventory_submit(request): if request.method != 'POST': return HttpResponseNotFound('No POST data sent') # list of bundleids to ignore bundleid_ignorelist = ['com.apple.print.PrinterProxy'] submission = request.POST serial = submission.get('serial') machine = None if serial: try: machine = Machine.objects.get(serial=serial) except Machine.DoesNotExist: return HttpResponseNotFound('Serial Number not found') compressed_inventory = submission.get('base64bz2inventory') if compressed_inventory: compressed_inventory = compressed_inventory.replace(" ", "+") inventory_str = utils.decode_to_string(compressed_inventory) try: inventory_list = plistlib.readPlistFromString(inventory_str) except Exception: inventory_list = None if inventory_list: try: inventory_meta = Inventory.objects.get(machine=machine) except Inventory.DoesNotExist: inventory_meta = Inventory(machine=machine) inventory_meta.sha256hash = \ hashlib.sha256(inventory_str).hexdigest() # clear existing inventoryitems machine.inventoryitem_set.all().delete() # insert current inventory items inventory_items_to_be_created = [] for item in inventory_list: app, _ = Application.objects.get_or_create( bundleid=item.get("bundleid", ""), name=item.get("name", ""), bundlename=item.get("CFBundleName", "")) # skip items in bundleid_ignorelist. if not item.get('bundleid') in bundleid_ignorelist: i_item = InventoryItem(application=app, version=item.get("version", ""), path=item.get('path', ''), machine=machine) if is_postgres(): inventory_items_to_be_created.append(i_item) else: i_item.save() machine.last_inventory_update = timezone.now() inventory_meta.save() if is_postgres(): InventoryItem.objects.bulk_create( inventory_items_to_be_created) machine.save() return HttpResponse("Inventory submmitted for %s.\n" % submission.get('serial')) return HttpResponse("No inventory submitted.\n")
def inventory_new(request): """ Inventory Edit Page """ type = request.path.split("/")[-2] template = "" if type == "book": template = "capstone/book_edit.html" elif type == "dvd": template = "capstone/dvd_edit.html" else: template = "" if request.method == 'POST': if type == "book": form = BookEditForm(request.POST) elif type == "dvd": form = DVDEditForm(request.POST) else: form = {} if form.is_valid(): new_item = form.save(commit=False) inventory_type = InventoryType.objects.filter( type_name__contains=type).first() inventory_item = InventoryItem(available=True, active=True, price=form.cleaned_data['price'], inventory_type=inventory_type) inventory_item.save() new_item.save() new_item.inventory = inventory_item new_item.save() return redirect('inventory_details', pk=inventory_item.inventory_id) else: if type == "book": form = BookEditForm() elif type == "dvd": form = DVDEditForm() else: form = {} responseData = { "form": form, } return render(request, template, responseData)
def create_model(self, form): # only if its set do we care if its unique if form.identifier.data and InventoryItem.objects( identifier=form.identifier.data).count(): flash('Identifier (%s) is already in use' % form.identifier.data) return False # overriden to update the date values of the model now = datetime.now() item = InventoryItem( name=form.name.data, identifier=form.identifier.data, comment=form.comment.data, status=form.status.data, # get the model for the target group group=InventoryGroup.objects.get(id=form.group.data), date_added=now, date_updated=now) try: item.save() except Exception, e: flash('Unable to add the item', category='error') if settings.DEBUG: flash('DEBUG: %s' % e, category='error') return False
def create_model(self, form): # only if its set do we care if its unique if form.identifier.data and InventoryItem.objects(identifier=form.identifier.data).count(): flash('Identifier (%s) is already in use' % form.identifier.data) return False # overriden to update the date values of the model now = datetime.now() item = InventoryItem( name=form.name.data, identifier=form.identifier.data, comment=form.comment.data, status=form.status.data, # get the model for the target group group=InventoryGroup.objects.get(id=form.group.data), date_added=now, date_updated=now ) try: item.save() except Exception, e: flash('Unable to add the item', category='error') if settings.DEBUG: flash('DEBUG: %s' % e, category='error') return False