本文整理汇总了Python中aleph.model.Collection类的典型用法代码示例。如果您正苦于以下问题:Python Collection类的具体用法?Python Collection怎么用?Python Collection使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Collection类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_update_collections
def test_update_collections(self):
url = '/api/1/documents/1000/collections'
ores = self.client.get(url)
user = self.login()
can_write = Collection.create({'label': "Write"}, user)
no_write = Collection.create({'label': "No-write"})
db.session.commit()
data = list(ores.json)
data.append(can_write.id)
res = self.client.post(url, data=json.dumps(data),
content_type='application/json')
assert res.status_code == 200, res
assert can_write.id in res.json, res.json
data = list(ores.json)
data = [no_write.id]
res = self.client.post(url, data=json.dumps(data),
content_type='application/json')
assert res.status_code == 200, res
assert no_write.id not in res.json, res.json
assert 1000 in res.json, res.json
data = list(ores.json)
data = ['foo']
res = self.client.post(url, data=json.dumps(data),
content_type='application/json')
assert res.status_code == 400, res
示例2: test_update_collections_via_doc_update
def test_update_collections_via_doc_update(self):
url = '/api/1/documents/1000'
ores = self.client.get(url)
user = self.login()
Permission.grant_collection(1000, user, True, True)
can_write = Collection.create({'label': "Write"}, user)
no_write = Collection.create({'label': "No-write"})
db.session.commit()
data = ores.json.copy()
data['collection_id'].append(can_write.id)
res = self.client.post(url, data=json.dumps(data),
content_type='application/json')
assert res.status_code == 200, res
assert can_write.id in res.json['collection_id'], res.json
data = ores.json.copy()
data['collection_id'] = [no_write.id]
res = self.client.post(url, data=json.dumps(data),
content_type='application/json')
assert res.status_code == 200, res
assert no_write.id not in res.json['collection_id'], res.json
assert 1000 in res.json['collection_id'], res.json
data = ores.json.copy()
data['collection_id'] = ['foo']
res = self.client.post(url, data=json.dumps(data),
content_type='application/json')
assert res.status_code == 400, res
示例3: load_collection
def load_collection(self, data):
foreign_id = data.get('foreign_id')
collection = Collection.by_foreign_id(foreign_id)
if collection is None:
collection = Collection.create(data)
db.session.commit()
update_collection(collection)
return collection
示例4: cleanup_deleted
def cleanup_deleted():
from aleph.model import Alert, Entity, Collection
from aleph.model import Permission, Role
Alert.cleanup_deleted()
Permission.cleanup_deleted()
Entity.cleanup_deleted()
Collection.cleanup_deleted()
Role.cleanup_deleted()
db.session.commit()
示例5: analyze
def analyze(foreign_id=None):
"""Re-analyze documents in the given collection (or throughout)."""
if foreign_id:
collection = Collection.by_foreign_id(foreign_id)
if collection is None:
raise ValueError("No such collection: %r" % foreign_id)
analyze_collection.delay(collection.id)
else:
for collection in Collection.all():
analyze_collection.delay(collection.id)
示例6: ingest_upload
def ingest_upload(collection_id):
collection = obj_or_404(Collection.by_id(collection_id))
authz.require(authz.collection_write(collection.id))
log_event(request)
try:
meta = json.loads(request.form.get('meta', '{}'))
except Exception as ex:
raise BadRequest(unicode(ex))
metas = []
for storage in request.files.values():
file_meta = meta.copy()
file_meta['mime_type'] = storage.mimetype
file_meta['file_name'] = storage.filename
validate(file_meta, 'metadata.json#')
file_meta = Metadata.from_data(file_meta)
file_meta.crawler_id = 'user_upload:%s' % request.auth_role.id
file_meta.crawler_run = make_textid()
sec_fn = os.path.join(get_upload_folder(),
secure_filename(storage.filename))
storage.save(sec_fn)
ingest_file(collection.id, file_meta, sec_fn, move=True,
queue=USER_QUEUE, routing_key=USER_ROUTING_KEY)
metas.append(file_meta)
return jsonify({'status': 'ok', 'metadata': metas})
示例7: get_collections
def get_collections(data):
collections = []
for coll_id in data.get('collections'):
if isinstance(coll_id, dict):
coll_id = coll_id.get('id')
collections.append(coll_id)
return Collection.all_by_ids(collections).all()
示例8: delete
def delete(id):
collection = obj_or_404(Collection.by_id(id))
authz.require(authz.collection_write(id))
delete_collection.apply_async([collection.id], queue=USER_QUEUE,
routing_key=USER_ROUTING_KEY)
log_event(request)
return jsonify({'status': 'ok'})
示例9: peek_query
def peek_query(args):
if not isinstance(args, MultiDict):
args = MultiDict(args)
text = args.get('q', '').strip()
q = text_query(text)
filters = parse_filters(args)
for entity in args.getlist('entity'):
filters.append(('entities.id', entity))
q = filter_query(q, filters, [])
q = add_filter(q, {
'not': {
'terms': {
'collection_id': authz.collections(authz.READ)
}
}
})
q = {
'query': q,
'size': 0,
'aggregations': {
'collections': {
'terms': {'field': 'collection_id', 'size': 30}
}
},
'_source': False
}
# import json
# print json.dumps(q, indent=2)
result = get_es().search(index=get_es_index(), body=q,
doc_type=TYPE_DOCUMENT)
aggs = result.get('aggregations', {}).get('collections', {})
buckets = aggs.get('buckets', [])
q = Collection.all_by_ids([b['key'] for b in buckets])
q = q.filter(Collection.creator_id != None) # noqa
objs = {o.id: o for o in q.all()}
roles = {}
for bucket in buckets:
collection = objs.get(bucket.get('key'))
if collection is None or collection.private:
continue
if collection.creator_id in roles:
roles[collection.creator_id]['total'] += bucket.get('doc_count')
else:
roles[collection.creator_id] = {
'name': collection.creator.name,
'email': collection.creator.email,
'total': bucket.get('doc_count')
}
roles = sorted(roles.values(), key=lambda r: r['total'], reverse=True)
roles = [format_total(r) for r in roles]
total = result.get('hits', {}).get('total')
return format_total({
'roles': roles,
'active': total > 0,
'total': total
})
示例10: crawl
def crawl(self):
url = urljoin(self.host, '/ticket/all_closed/?format=json')
collection = Collection.by_foreign_id(url, {
'label': 'Investigative Dashboard Requests'
})
Permission.grant_foreign(collection, 'idashboard:occrp_staff',
True, False)
existing_entities = []
terms = set()
db.session.flush()
for endpoint in ['all_closed', 'all_open']:
url = urljoin(self.host, '/ticket/%s/?format=json' % endpoint)
data = self.session.get(url).json()
for req in data.get('paginator', {}).get('object_list'):
category = REQUEST_TYPES.get(req.get('ticket_type'))
if category is None:
continue
ent = Entity.by_foreign_id(str(req.get('id')), collection, {
'name': req.get('name'),
'category': category,
'data': req,
'selectors': [req.get('name')]
})
terms.update(ent.terms)
existing_entities.append(ent.id)
log.info(" # %s (%s)", ent.name, ent.category)
for entity in collection.entities:
if entity.id not in existing_entities:
entity.delete()
self.emit_collection(collection, terms)
示例11: collections
def collections(self, action):
if action in self._collections:
return self._collections.get(action)
prefix_key = cache.key(self.PREFIX)
key = cache.key(self.PREFIX, action, self.id)
collections = cache.get_list(key)
if len(collections):
collections = [int(c) for c in collections]
self._collections[action] = collections
log.debug("[C] Authz: %s (%s): %s", self, action, collections)
return collections
if self.is_admin:
q = Collection.all_ids()
else:
q = db.session.query(Permission.collection_id)
q = q.filter(Permission.deleted_at == None) # noqa
q = q.filter(Permission.role_id.in_(self.roles))
if action == self.READ:
q = q.filter(Permission.read == True) # noqa
if action == self.WRITE:
q = q.filter(Permission.write == True) # noqa
q = q.distinct()
# log.info("Query: %s", q)
collections = [c for (c,) in q.all()]
log.debug("Authz: %s (%s): %s", self, action, collections)
cache.kv.sadd(prefix_key, key)
cache.set_list(key, collections)
self._collections[action] = collections
return collections
示例12: get_collection
def get_collection(collection_id):
"""Fetch a collection from the index."""
if collection_id is None:
return
key = cache.object_key(Collection, collection_id)
data = cache.get_complex(key)
if data is not None:
return data
collection = Collection.by_id(collection_id)
if collection is None:
return
data = collection.to_dict()
stats = get_collection_stats(collection.id)
data['count'] = stats['count']
data['schemata'] = stats['schemata']
# if no countries or langs are given, take the most common from the data.
countries = ensure_list(collection.countries)
countries = countries or stats['countries'].keys()
data['countries'] = registry.country.normalize_set(countries)
languages = ensure_list(collection.languages)
languages = languages or stats['languages'].keys()
data['languages'] = registry.language.normalize_set(languages)
cache.set_complex(key, data, expire=cache.EXPIRE)
return data
示例13: create
def create():
authz.require(authz.logged_in())
collection = Collection.create(request_data(), request.auth_role)
db.session.commit()
update_collection(collection)
log_event(request)
return view(collection.id)
示例14: crawl
def crawl(self, directory=None, collection=None, meta={}):
collection = collection or directory
collection = Collection.create({
'foreign_id': 'directory:%s' % slugify(collection),
'label': collection
})
db.session.commit()
collection_id = collection.id
if os.path.isfile(directory):
self.crawl_file(collection_id, directory, meta)
directory = directory or os.getcwd()
directory = directory.encode('utf-8')
for (dirname, dirs, files) in os.walk(directory):
dirparts = [d for d in dirname.split(os.path.sep)
if d in SKIP_DIRECTORIES]
if len(dirparts):
continue
log.info("Descending: %r", dirname)
for file_name in files:
dirname = string_value(dirname)
file_name = string_value(file_name)
if file_name in SKIP_FILES:
continue
file_path = os.path.join(dirname, file_name)
self.crawl_file(collection_id, file_path, meta)
示例15: crawl_collection
def crawl_collection(self, collection):
if not len(collection.get('subjects', [])):
return
url = urljoin(self.URL, '/api/collections/%s' % collection.get('id'))
collection = Collection.by_foreign_id(url, {
'label': collection.get('title')
})
res = requests.get('%s/permissions' % url, headers=self.HEADERS)
for perm in res.json().get('results', []):
Permission.grant_foreign(collection, perm.get('role'),
perm.get('read'), perm.get('write'))
log.info(" > Spindle collection: %s", collection.label)
res = requests.get('%s/entities' % url, headers=self.HEADERS)
terms = set()
existing_entities = []
for entity in res.json().get('results', []):
if entity.get('name') is None:
continue
aliases = [on.get('alias') for on in entity.get('other_names', [])]
ent = Entity.by_foreign_id(entity.get('id'), collection, {
'name': entity.get('name'),
'category': SCHEMATA.get(entity.get('$schema'), OTHER),
'data': entity,
'selectors': aliases
})
terms.update(ent.terms)
existing_entities.append(ent.id)
log.info(" # %s (%s)", ent.name, ent.category)
for entity in collection.entities:
if entity.id not in existing_entities:
entity.delete()
self.emit_collection(collection, terms)