예제 #1
0
파일: story.py 프로젝트: keho98/argos
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
예제 #2
0
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,
예제 #3
0
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):
예제 #4
0
파일: user.py 프로젝트: publicscience/argos
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
예제 #5
0
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)