def upload_to(instance, filename): filename, ext = os.path.splitext(filename) filename = '.'.join((slugify(chunk) for chunk in filename.split('.'))) if not filename: filename = md5(str(instance.pk) + str(time())).hexdigest() ext = ext.lower() if ext not in ('.jpg', '.jpeg', '.gif', '.png'): ext = '.unknown' slug = os.path.join(instance.article.category.slug, instance.article.slug) count = 1 while os.path.exists(os.path.join('images', slug, filename + ext)): filename, _, current = filename.rpartition('_') try: count = int(current) + 1 except ValueError: pass filename += filename + '_' + count count += 1 return os.path.join('images', slug, filename + ext)
def upload_image(request): upload_directory = os.path.join(settings.MEDIA_ROOT, 'images', 'upload') allowed_extensions = ('.jpg', '.jpeg', '.png', '.gif') size_limit = 375767 uploaded = request.read file_size = int(uploaded.im_self.META['CONTENT_LENGTH']) file_name = uploaded.im_self.META['HTTP_X_FILE_NAME'] file_name = urlunquote_plus(file_name) file_content = uploaded(file_size) file_name, extension = os.path.splitext(file_name) extension = extension.lower() if extension in allowed_extensions: file_name = slugify(file_name) + extension if file_size <= size_limit: file_path = os.path.join(upload_directory, file_name) if not os.path.exists(file_path): with open(file_path, 'wb+') as f: f.write(file_content) content = {'success': True} else: content = {'error': 'File is too large.'} else: content = {'error': 'File has an invalid extension.'} return HttpResponse(json.dumps(content), content_type='application/json')
def get_slug(self): return slugify(self.name)
def get_slug(self): return slugify(self.get_first_name())