Ejemplo n.º 1
0
	def render(self, context):
		iterable = self.iterable.resolve(context)
		lookup = self.lookup.resolve(context)
		kwargs = dict((k, v.resolve(context)) for k, v in self.kwargs.iteritems())

		helper = BulkAdjustmentHelper(iterable, lookup, **kwargs)
		context[self.asvar] = helper.info_dicts()
		return ''
    def test_info_dicts__semiprepped(self):
        images = [
            self.create_image("100x100.png"),
            self.create_image("100x100.png"),
            self.create_image("100x50_crop.png"),
            self.create_image("50x100_crop.png"),
        ]
        iterable = [BulkTestObject(image) for image in images]

        kwargs = {"width": 50, "height": 50, "adjustment": "crop"}

        helper = BulkAdjustmentHelper(iterable, "storage_path", **kwargs)
        with self.assertNumQueries(1):
            helper.info_dicts()
Ejemplo n.º 3
0
	def test_info_dicts__semiprepped(self):
		images = [
			self.create_image('100x100.png'),
			self.create_image('100x100.png'),
			self.create_image('100x50_crop.png'),
			self.create_image('50x100_crop.png'),
		]
		iterable = [BulkTestObject(image) for image in images]

		kwargs = {
			'width': 50,
			'height': 50,
			'adjustment': 'crop',
		}

		helper = BulkAdjustmentHelper(iterable, 'storage_path', **kwargs)
		with self.assertNumQueries(1):
			helper.info_dicts()
Ejemplo n.º 4
0
	def handle_noargs(self, **options):
		if not hasattr(settings, 'DAGUERRE_PREADJUSTMENTS'):
			raise CommandError(NO_ADJUSTMENTS)
		adjustments = settings.DAGUERRE_PREADJUSTMENTS
		args = []
		for (model_or_queryset, lookup), kwargs_list in adjustments.iteritems():
			if isinstance(model_or_queryset, basestring):
				app_label, model_name = model_or_queryset.split('.')
				model_or_queryset = get_model(app_label, model_name)
			if issubclass(model_or_queryset, Model):
				queryset = model_or_queryset.objects.all()
			elif isinstance(model_or_queryset, QuerySet):
				queryset = model_or_queryset._clone()
			else:
				raise CommandError("Invalid model or queryset: {0}".format(model_or_queryset))

			for kwargs in kwargs_list:
				args.append((queryset, lookup, kwargs))

		skipped_count = 0
		remaining = []
		remaining_count = 0
		for queryset, lookup, kwargs in args:
			bulk_helper = BulkAdjustmentHelper(queryset, lookup, **kwargs)
			query_kwargs = bulk_helper.get_query_kwargs()
			adjusted_images = AdjustedImage.objects.filter(**query_kwargs)
			for adjusted_image in adjusted_images:
				try:
					del bulk_helper.remaining[adjusted_image.storage_path]
				except KeyError:
					pass
				else:
					skipped_count += 1
			remaining_count += len(bulk_helper.remaining)
			remaining.append((bulk_helper.remaining.keys(), kwargs))

		self.stdout.write("Skipped {0} path{1} which have already been adjusted.\n".format(skipped_count, pluralize(skipped_count)))
		if remaining_count == 0:
			self.stdout.write("No paths remaining to adjust.\n")
		else:
			self.stdout.write("Adjusting {0} path{1}... ".format(remaining_count, pluralize(remaining_count)))
			self.stdout.flush()

			failed_count = 0
			for storage_paths, kwargs in remaining:
				for storage_path in storage_paths:
					helper = AdjustmentHelper(storage_path, **kwargs)
					try:
						helper.adjust()
					except IOError:
						failed_count += 1
			self.stdout.write("Done.\n")
			if failed_count:
				self.stdout.write("{0} path{1} failed due to I/O errors.".format(failed_count, pluralize(failed_count)))

		if options['remove']:
			queryset = AdjustedImage.objects.all()
			for qs, lookup, kwargs in args:
				bulk_helper = BulkAdjustmentHelper(qs, lookup, **kwargs)
				query_kwargs = bulk_helper.get_query_kwargs()
				queryset = queryset.exclude(**query_kwargs)

			count = queryset.count()
			if count == 0:
				self.stdout.write("No adjusted images found to remove.\n")
			else:
				self.stdout.write("Removing {0} adjusted image{1}... ".format(count, pluralize(count)))
				self.stdout.flush()
				queryset.delete()
				self.stdout.write("Done.\n")

		# For pre-1.5: add an extra newline.
		self.stdout.write("\n")