def delete(cls, user, record): """Delete permission check. :param user: Logged user. :param recor: Record to check. :returns: True is action can be done. """ # At least for admin logged users. if not current_user_record or not current_user_record.is_admin: return False # Superuser is allowed if current_user_record.is_superuser: return True # Cannot delete himself if current_user_record['pid'] == record['pid']: return False if not record.get('organisation'): return False # For admin read is only for logged user organisation if record['organisation'].get('$ref'): return current_organisation[ 'pid'] == OrganisationRecord.get_pid_by_ref_link( record['organisation']['$ref']) return current_organisation['pid'] == record['organisation']['pid']
def get_organisations(record): """Get list of organisations with full data. :param record: Record object. """ organisations = [] for organisation in record.get('organisation', []): organisation_pid = OrganisationRecord.get_pid_by_ref_link( organisation['$ref']) if organisation.get( '$ref') else organisation['pid'] organisations.append( OrganisationRecord.get_record_by_pid(organisation_pid)) return organisations
def populate_files_properties(record): """Add restriction, link and thumbnail to file. :param record: Record object :param file: File dict """ # Load organisation for the record organisation_pid = OrganisationRecord.get_pid_by_ref_link( record['organisation']['$ref']) if record['organisation'].get( '$ref') else record['organisation']['pid'] organisation = OrganisationRecord.get_record_by_pid(organisation_pid) for file in record['_files']: if file.get('type') == 'file': file['restriction'] = get_file_restriction(file, organisation) file['thumbnail'] = get_thumbnail(file, record) file['links'] = get_file_links(file, record)
def marc21_to_specific_collection(self, key, value): """Extract collection for record.""" if not value.get('a'): return None # No organisation found, the collection is not imported. if not self.get('organisation'): return None organisation_pid = OrganisationRecord.get_pid_by_ref_link( self['organisation'][0]['$ref']) hash_key = hashlib.md5( (value.get('a') + organisation_pid).encode()).hexdigest() collection_pid = CollectionRecord.get_pid_by_hash_key(hash_key) # No collection found if not collection_pid: collection = CollectionRecord.create({ 'name': [{ 'language': 'eng', 'value': value.get('a') }], 'organisation': { '$ref': self['organisation'][0]['$ref'] }, 'hashKey': hash_key }) collection.commit() collection.reindex() db.session.commit() collection_pid = collection['pid'] return { '$ref': CollectionRecord.get_ref_link('collections', collection_pid) }