Esempio n. 1
0
def upload( request, username, name = None, id = None, parent = settings.STORAGE_BUCKET_ID, _ts = None, csrfmiddlewaretoken = None, **kwargs ):
	kwargs[ 'page' ] = 'storage/file'
	data = { 'view' : True }
	
	if( id and not utils.is_numeric( id ) ) or ( not name and not request.FILES ): 
		return utils.fail( kwargs, data = data, errors = 'Invalid Request' )
	
	if( float( parent ) == settings.STORAGE_BUCKET_ID ):
		return utils.fail( kwargs, data = data, errors = 'Objects are not allowed here.' )
	
	user = request.user.get_profile().id if request.user.is_authenticated() else -1
	
	try :
		s = Directory.objects.get( id = parent )
		p = request.user.get_profile() if request.user.is_authenticated() else None
		name = name if name else request.FILES[ 'file' ].name
		
		if not id:
			if s.authorize( request, action = 'add' ):
				f = File( name = name, type = settings.STORAGE_FILE_TYPE, owner = p, parent = s )
				f.add( base = settings.INTERLINK_COLOR_ALL )
				f.link( parent = s, base = p )
				data[ 'file' ] = f
			else: 
				return utils.fail( kwargs, data = data, errors = 'Not Authorized' )
		else:
			f = File.objects.get( id = id )
			data[ 'file' ] = f
		
		if request.FILES:
			if f.authorize( request, action = 'edit' ):
				f.write( request )
			else: 
				return utils.fail( kwargs, data = data, errors = 'Not Authorized' )

		data[ 'storage' ] = s
		data[ 'admin' ] = p.authorize( request, action = 'add' )
	except Directory.DoesNotExist:
		return utils.fail( kwargs, data = data, errors = 'Invalid Storage' )
	
	return utils.success( kwargs, data = data )