from argos.datastore import db from argos.core.models import Entity from argos.core.models.cluster import Cluster from argos.core.brain.cluster import cluster from argos.core.brain.summarize import multisummarize from argos.util.logger import logger stories_events = db.Table('stories_events', db.Column('story_id', db.Integer, db.ForeignKey('story.id'), primary_key=True), db.Column('event_id', db.Integer, db.ForeignKey('event.id'), primary_key=True) ) stories_entities = db.Table('stories_entities', db.Column('entity_slug', db.String, db.ForeignKey('entity.slug')), db.Column('story_id', db.Integer, db.ForeignKey('story.id')) ) class Story(Cluster): __tablename__ = 'story' __members__ = {'class_name': 'Event', 'secondary': stories_events, 'backref_name': 'stories'} __entities__ = {'secondary': stories_entities, 'backref_name': 'stories'} @property def events(self): """ Convenience :) """ return self.members @events.setter
from argos.datastore import db from argos.core.models.cluster import Cluster from argos.core.brain.cluster import cluster from argos.core.brain.summarize import summarize, multisummarize from argos.util.logger import logger from datetime import datetime events_articles = db.Table( 'events_articles', db.Column('event_id', db.Integer, db.ForeignKey('event.id'), primary_key=True), db.Column('article_id', db.Integer, db.ForeignKey('article.id'), primary_key=True)) events_entities = db.Table( 'events_entities', db.Column('entity_slug', db.String, db.ForeignKey('entity.slug')), db.Column('event_id', db.Integer, db.ForeignKey('event.id'))) class Event(Cluster): __tablename__ = 'event' __members__ = { 'class_name': 'Article', 'secondary': events_articles,
from argos.core import knowledge from argos.util import storage import galaxy as gx from slugify import slugify from datetime import datetime from os.path import splitext from sqlalchemy import event from sqlalchemy.ext.declarative import declared_attr from collections import Counter concepts_mentions = db.Table( 'concepts_mentions', db.Column( 'alias_id', db.Integer, db.ForeignKey('alias.id', ondelete='CASCADE', onupdate='CASCADE')), db.Column( 'concept_slug', db.String, db.ForeignKey('concept.slug', ondelete='CASCADE', onupdate='CASCADE'))) class BaseConceptAssociation(Model): """ Models which will be related to concepts must subclass this model and specify a backref name through a class property called `__backref__` and a foreign key property for the related model. Example:: class ArticleConceptAssociation(BaseConceptAssociation):
from datetime import datetime from Crypto.Cipher import AES from argos.datastore import db, Model from flask import current_app from flask.ext.security import Security, UserMixin, RoleMixin # Table connecting users and roles roles_users = db.Table('roles_users', db.Column('user_id', db.Integer(), db.ForeignKey('user.id')), db.Column('role_id', db.Integer(), db.ForeignKey('role.id'))) # Table for users watching stories. users_stories = db.Table('users_stories', db.Column('user_id', db.Integer(), db.ForeignKey('user.id')), db.Column('story_id', db.Integer(), db.ForeignKey('story.id'))) # Table for users bookmarking events. users_events = db.Table('users_events', db.Column('user_id', db.Integer(), db.ForeignKey('user.id')), db.Column('event_id', db.Integer(), db.ForeignKey('event.id'))) # Table for users class AuthExistsForUserException(Exception): pass class Role(Model, RoleMixin): """ A user's Role
from argos.core.models.cluster import Clusterable from argos.core.brain import vectorize, entities from scipy.spatial.distance import jaccard from math import isnan from slugify import slugify # Ignore the invalid numpy warning, # which comes up when jaccard uses # empty vectors. import numpy numpy.seterr(invalid='ignore') articles_authors = db.Table( 'authors', db.Column('author_id', db.Integer, db.ForeignKey('author.id')), db.Column('article_id', db.Integer, db.ForeignKey('article.id'))) articles_entities = db.Table( 'articles_entities', db.Column('entity_slug', db.String, db.ForeignKey('entity.slug')), db.Column('article_id', db.Integer, db.ForeignKey('article.id'))) class Article(Clusterable): """ An article. """ __tablename__ = 'article' __entities__ = {'secondary': articles_entities, 'backref_name': 'articles'} vectors = db.Column(db.PickleType)