コード例 #1
0
 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)
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
 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)