def files(self, **kwargs): user, role, defaultExpiration, uploadRequests, userFiles, userShareableAttributes, attributeFilesDict, sharedFiles = ( cherrypy.session.get("user"), cherrypy.session.get("current_role"), None, [], [], [], {}, []) config = cherrypy.request.app.config['filelocker'] orgConfig = get_config_dict_from_objects( session.query(ConfigParameter).filter( ConfigParameter.name.like('org_%')).all()) maxDays = int( session.query(ConfigParameter).filter( ConfigParameter.name == 'max_file_life_days').one().value) geoTagging = get_config_dict_from_objects([ session.query(ConfigParameter).filter( ConfigParameter.name == 'geotagging').one() ])['geotagging'] adminEmail = session.query(ConfigParameter).filter( ConfigParameter.name == 'admin_email').one().value defaultExpiration = datetime.date.today() + (datetime.timedelta( days=maxDays)) userFiles = self.file.get_user_file_list(format="list") if role is None: uploadRequests = session.query(UploadRequest).filter( UploadRequest.owner_id == user.id).all() userShareableAttributes = AccountService.get_shareable_attributes_by_user( user) attributeFilesDict = ShareService.get_files_shared_with_user_by_attribute( user) sharedFiles = ShareService.get_files_shared_with_user(user) else: userShareableAttributes = AccountService.get_shareable_attributes_by_role( role) tpl = Template(file=get_template_file('files.tmpl'), searchList=[locals(), globals()]) return str(tpl)
def files(self, **kwargs): user, role, defaultExpiration, uploadRequests, userFiles, userShareableAttributes,attributeFilesDict,sharedFiles = (cherrypy.session.get("user"), cherrypy.session.get("current_role"), None, [], [], [], {}, []) config = cherrypy.request.app.config['filelocker'] orgConfig = get_config_dict_from_objects(session.query(ConfigParameter).filter(ConfigParameter.name.like('org_%')).all()) maxDays = int(session.query(ConfigParameter).filter(ConfigParameter.name=='max_file_life_days').one().value) geoTagging = get_config_dict_from_objects([session.query(ConfigParameter).filter(ConfigParameter.name=='geotagging').one()])['geotagging'] adminEmail = session.query(ConfigParameter).filter(ConfigParameter.name=='admin_email').one().value defaultExpiration = datetime.date.today() + (datetime.timedelta(days=maxDays)) userFiles = self.file.get_user_file_list(format="list") if role is None: uploadRequests = session.query(UploadRequest).filter(UploadRequest.owner_id==user.id).all() userShareableAttributes = AccountService.get_shareable_attributes_by_user(user) attributeFilesDict = ShareService.get_files_shared_with_user_by_attribute(user) sharedFiles = ShareService.get_files_shared_with_user(user) else: userShareableAttributes = AccountService.get_shareable_attributes_by_role(role) tpl = Template(file=get_template_file('files.tmpl'), searchList=[locals(),globals()]) return str(tpl)
def get_user_file_list(self, fileIdList=None, format="json", **kwargs): """Get File List""" config = cherrypy.request.app.config['filelocker'] orgConfig = get_config_dict_from_objects( session.query(ConfigParameter).filter( ConfigParameter.name.like('org_%')).all()) user, role, sMessages, fMessages = ( cherrypy.session.get("user"), cherrypy.session.get("current_role"), [], []) myFilesList = [] hiddenShares = session.query(HiddenShare).filter( HiddenShare.owner_id == user.id).all() hiddenShareIds = [] for hiddenShare in hiddenShares: hiddenShareIds.append(hiddenShare.file_id) if fileIdList is None: allFilesList = session.query(File).filter( File.owner_id == user.id).all() if role is None else session.query(File).filter( File.role_owner_id == role.id).all() for flFile in allFilesList: if flFile.id not in hiddenShareIds: myFilesList.append(flFile) else: fileIdList = split_list_sanitized(fileIdList) for fileId in fileIdList: flFile = session.query(File).filter(File.id == fileId).one() if (role is not None and flFile.role_owner_id == role.id) or ( flFile.owner_id == user.id or flFile.shared_with(user) ) and flFile.id not in hiddenShareIds: myFilesList.append(flFile) for flFile in myFilesList: #attachments to the file objects for this function, purely cosmetic if (len(flFile.public_shares) > 0) and (len( flFile.user_shares) > 0 or len(flFile.group_shares) > 0): flFile.documentType = "document_both" elif len(flFile.public_shares) > 0: flFile.documentType = "document_globe" elif len(flFile.public_shares) == 0 and (len( flFile.user_shares) > 0 or len(flFile.group_shares) > 0): flFile.documentType = "document_person" else: flFile.documentType = "document" #TODO: Account for attribute shares here 'document_attribute' if format == "json" or format == "searchbox_html" or format == "cli": myFilesJSON = [] userShareableAttributes = AccountService.get_shareable_attributes_by_user( user ) if role is None else AccountService.get_shareable_attributes_by_role( role) for flFile in myFilesList: flFile.fileUserShares, flFile.fileGroupShares, flFile.availableGroups, sharedGroupsList, flFile.fileAttributeShares = ( [], [], [], [], []) for share in flFile.user_shares: flFile.fileUserShares.append({ 'id': share.user.id, 'name': share.user.display_name }) sharedGroupIds = [] for share in flFile.group_shares: sharedGroupIds.append(share.group.id) flFile.fileGroupShares.append({ 'id': share.group.id, 'name': share.group.name }) for share in flFile.attribute_shares: flFile.fileAttributeShares.append({ 'id': share.attribute.id, 'name': share.attribute.name }) for group in session.query(Group).filter( Group.owner_id == user.id): if group.id not in sharedGroupIds: flFile.availableGroups.append({ 'id': group.id, 'name': group.name }) myFilesJSON.append({ 'fileName': flFile.name, 'fileId': flFile.id, 'fileOwnerId': flFile.owner_id, 'fileSizeBytes': flFile.size, 'fileUploadedDatetime': flFile.date_uploaded.strftime("%m/%d/%Y"), 'fileExpirationDatetime': flFile.date_expires.strftime("%m/%d/%Y") if flFile.date_expires is not None else "Never", 'filePassedAvScan': flFile.passed_avscan, 'documentType': flFile.documentType, 'fileUserShares': flFile.fileUserShares, 'fileGroupShares': flFile.fileGroupShares, 'availableGroups': flFile.availableGroups, 'fileAttributeShares': flFile.fileAttributeShares }) if format == "json": return fl_response(sMessages, fMessages, format, data=myFilesJSON) elif format == "searchbox_html": selectedFileIds = ",".join(fileIdList) context = "private_sharing" groups = session.query(Group).filter( Group.owner_id == user.id).all() directoryType = session.query(ConfigParameter).filter( ConfigParameter.name == "directory_type").one().value searchWidget = str( Template(file=get_template_file('search_widget.tmpl'), searchList=[locals(), globals()])) tpl = Template(file=get_template_file('share_files.tmpl'), searchList=[locals(), globals()]) return str(tpl) elif format == "cli": myFilesJSON = sorted(myFilesJSON, key=lambda k: k['fileId']) myFilesXML = "" for myFile in myFilesJSON: myFilesXML += "<file id='%s' name='%s' size='%s' passedAvScan='%s'></file>" % ( myFile['fileId'], myFile['fileName'], myFile['fileSizeBytes'], myFile['filePassedAvScan']) return fl_response(sMessages, fMessages, format, data=myFilesXML) elif format == "list": return myFilesList else: return str(myFilesList)
def get_user_file_list(self, fileIdList=None, format="json", **kwargs): """Get File List""" config = cherrypy.request.app.config['filelocker'] orgConfig = get_config_dict_from_objects(session.query(ConfigParameter).filter(ConfigParameter.name.like('org_%')).all()) user, role, sMessages, fMessages = (cherrypy.session.get("user"), cherrypy.session.get("current_role"), [], []) myFilesList = [] hiddenShares = session.query(HiddenShare).filter(HiddenShare.owner_id==user.id).all() hiddenShareIds = [] for hiddenShare in hiddenShares: hiddenShareIds.append(hiddenShare.file_id) if fileIdList is None: allFilesList = session.query(File).filter(File.owner_id == user.id).all() if role is None else session.query(File).filter(File.role_owner_id==role.id).all() for flFile in allFilesList: if flFile.id not in hiddenShareIds: myFilesList.append(flFile) else: fileIdList = split_list_sanitized(fileIdList) for fileId in fileIdList: flFile = session.query(File).filter(File.id==fileId).one() if (role is not None and flFile.role_owner_id == role.id) or (flFile.owner_id == user.id or flFile.shared_with(user)) and flFile.id not in hiddenShareIds: myFilesList.append(flFile) for flFile in myFilesList: #attachments to the file objects for this function, purely cosmetic if (len(flFile.public_shares) > 0) and (len(flFile.user_shares) > 0 or len(flFile.group_shares) > 0 ): flFile.documentType = "document_both" elif len(flFile.public_shares) > 0: flFile.documentType = "document_globe" elif len(flFile.public_shares) == 0 and (len(flFile.user_shares) > 0 or len(flFile.group_shares) > 0): flFile.documentType = "document_person" else: flFile.documentType = "document" #TODO: Account for attribute shares here 'document_attribute' if format=="json" or format=="searchbox_html" or format=="cli": myFilesJSON = [] userShareableAttributes = AccountService.get_shareable_attributes_by_user(user) if role is None else AccountService.get_shareable_attributes_by_role(role) for flFile in myFilesList: flFile.fileUserShares, flFile.fileGroupShares, flFile.availableGroups, sharedGroupsList, flFile.fileAttributeShares = ([],[],[],[],[]) for share in flFile.user_shares: flFile.fileUserShares.append({'id': share.user.id, 'name': share.user.display_name}) sharedGroupIds = [] for share in flFile.group_shares: sharedGroupIds.append(share.group.id) flFile.fileGroupShares.append({'id': share.group.id, 'name': share.group.name}) for share in flFile.attribute_shares: flFile.fileAttributeShares.append({'id': share.attribute.id, 'name': share.attribute.name}) for group in session.query(Group).filter(Group.owner_id==user.id): if group.id not in sharedGroupIds: flFile.availableGroups.append({'id': group.id, 'name': group.name}) myFilesJSON.append({'fileName': flFile.name, 'fileId': flFile.id, 'fileOwnerId': flFile.owner_id, 'fileSizeBytes': flFile.size, 'fileUploadedDatetime': flFile.date_uploaded.strftime("%m/%d/%Y"), 'fileExpirationDatetime': flFile.date_expires.strftime("%m/%d/%Y") if flFile.date_expires is not None else "Never", 'filePassedAvScan':flFile.passed_avscan, 'documentType': flFile.documentType, 'fileUserShares': flFile.fileUserShares, 'fileGroupShares': flFile.fileGroupShares, 'availableGroups': flFile.availableGroups, 'fileAttributeShares': flFile.fileAttributeShares}) if format=="json": return fl_response(sMessages, fMessages, format, data=myFilesJSON) elif format=="searchbox_html": selectedFileIds = ",".join(fileIdList) context = "private_sharing" groups = session.query(Group).filter(Group.owner_id == user.id).all() directoryType = session.query(ConfigParameter).filter(ConfigParameter.name=="directory_type").one().value searchWidget = str(Template(file=get_template_file('search_widget.tmpl'), searchList=[locals(),globals()])) tpl = Template(file=get_template_file('share_files.tmpl'), searchList=[locals(),globals()]) return str(tpl) elif format=="cli": myFilesJSON = sorted(myFilesJSON, key=lambda k: k['fileId']) myFilesXML = "" for myFile in myFilesJSON: myFilesXML += "<file id='%s' name='%s' size='%s' passedAvScan='%s'></file>" % (myFile['fileId'], myFile['fileName'], myFile['fileSizeBytes'], myFile['filePassedAvScan']) return fl_response(sMessages, fMessages, format, data=myFilesXML) elif format=="list": return myFilesList else: return str(myFilesList)