Example #1
0
class Tweet(neomodel.StructuredNode):
    id_str = neomodel.StringProperty(unique_index=True, required=True)
    created_at = neomodel.DateTimeProperty(required=False)
    modified = neomodel.DateTimeProperty(required=False)
    retweeted = neomodel.BooleanProperty(required=False)
    retweet_id_str = neomodel.StringProperty(required=False, default='')
    reply_id_str = neomodel.StringProperty(required=False, default='')
    quote_id_str = neomodel.StringProperty(required=False, default='')
    mention_ids_str = neomodel.ArrayProperty(required=False, default=[])
    text = neomodel.StringProperty(required=False)
    coordinates = neomodel.ArrayProperty(required=False, default=[])
    lang = neomodel.StringProperty(required=False)
    features = neomodel.JSONProperty(required=False, default={})
    sentiment_polarity = neomodel.FloatProperty(required=False)
    sentiment_subjectivity = neomodel.FloatProperty(required=False)

    retweets = neomodel.RelationshipTo('Tweet', 'RETWEETS')
    mentions = neomodel.RelationshipTo('User', 'MENTIONS')
    replies = neomodel.RelationshipTo('Tweet', 'REPLIES')
    tags = neomodel.RelationshipTo('Hashtag', 'TAGS')
    contains = neomodel.RelationshipTo('Link', 'CONTAINS')
    quotes = neomodel.Relationship('Tweet', 'QUOTES')
    tweet_about = neomodel.RelationshipTo('Company', 'TWEETS')

    def save(self):
        self.modified = datetime.datetime.now()
        super(Tweet, self).save()
        return self
Example #2
0
class Post(nm.StructuredNode):
    uid = nm.StringProperty(unique_index=True, default=uuid4)
    create_datetime = nm.DateTimeProperty(default_now=True)
    content = nm.StringProperty(required=True)

    comments = nm.Relationship('Comment', 'COMMENTED')
    written_by = nm.Relationship('User', 'WRITTEN_BY')
Example #3
0
class PersonalRelationship(neomodel.StructuredRel):
    """
    A very simple relationship between two basePersons that simply records 
    the date at which an acquaintance was established.
    This relationship should be carried over to anything that inherits from 
    basePerson without any further effort.
    """
    on_date = neomodel.DateTimeProperty(default_now=True)
Example #4
0
class Company(neomodel.StructuredNode):
    id_str = neomodel.StringProperty(unique_index=True, required=True)
    name = neomodel.StringProperty(required=False)
    created_at = neomodel.DateTimeProperty(required=False)
    modified = neomodel.DateTimeProperty(required=False)
    description = neomodel.StringProperty(required=False)
    brand_score = neomodel.FloatProperty(required=False)
    tweet_score = neomodel.FloatProperty(required=False)
    news_score = neomodel.FloatProperty(required=False)
    stock_price = neomodel.FloatProperty(required=False)
    stock_change = neomodel.FloatProperty(required=False)
    mkt_cap = neomodel.FloatProperty(required=False)

    def save(self):
        self.modified = datetime.datetime.now()
        super(Company, self).save()
        return self
Example #5
0
class User(nm.StructuredNode):
    uid = nm.StringProperty(index=True, default=uuid4)
    create_datetime = nm.DateTimeProperty(default_now=True)
    email = nm.StringProperty(unique_index=True, required=True)
    password = nm.StringProperty(required=True)
    name = nm.StringProperty(required=True)

    liked_posts = nm.RelationshipTo('Post', 'LIKED', model=Like)
    followings = nm.RelationshipTo('User', 'FOLLOW')
Example #6
0
class specificModelClass1(baseModelClass1):
    '''Models a class that is a specialisation of baseModelClass1
    
    NOTE:
        This class inherits the someLink relationship.
        Notice here that we are not re-specifying someLink
        to be pointing to specificModelClass2
    '''
    someOtherAttribute = neomodel.DateTimeProperty()
Example #7
0
class News(neomodel.StructuredNode):
    headline = neomodel.StringProperty(unique_index=True, required=True)
    url = neomodel.StringProperty(required=False)
    publisher = neomodel.StringProperty(required=False)
    created_at = neomodel.DateTimeProperty(required=False)
    keywords = neomodel.ArrayProperty(neomodel.StringProperty(),
                                      required=False)
    score = neomodel.FloatProperty(required=False)

    cites = neomodel.RelationshipTo('Company', 'CITES')
Example #8
0
class order(nm.StructuredNode):
    price = nm.FloatProperty()
    shares = nm.FloatProperty()
    date = nm.DateTimeProperty(default_now=True)

    if shares.__gt__ == 0:
        side = 'buy'
    else:
        side = 'sell'

    company = nm.RelationshipTo('Company', side.upper())
Example #9
0
class User(neomodel.StructuredNode):
    id_str = neomodel.StringProperty(unique_index=True, required=True)
    name = neomodel.StringProperty(required=False)
    screen_name = neomodel.StringProperty(required=False)
    followers_count = neomodel.IntegerProperty(required=False)
    friends_count = neomodel.IntegerProperty(required=False)
    modified = neomodel.DateTimeProperty(required=False)
    created_at = neomodel.DateTimeProperty(required=False)
    description = neomodel.StringProperty(required=False)
    location = neomodel.StringProperty(required=False)
    coordinates = neomodel.ArrayProperty(required=False, default=[])
    time_zone = neomodel.StringProperty(required=False)
    url = neomodel.StringProperty(required=False)
    lang = neomodel.StringProperty(required=False)

    follows = neomodel.RelationshipTo('User', 'FOLLOWS')
    posts = neomodel.RelationshipTo('Tweet', 'POSTS')

    def save(self):
        self.modified = datetime.datetime.now()
        super(User, self).save()
Example #10
0
class Event(neomodel.StructuredNode):
    name = neomodel.StringProperty(unique_index=True, required=True)
    weighting = neomodel.FloatProperty(required=False)
    modified = neomodel.DateTimeProperty(required=False)

    related_to = neomodel.RelationshipTo('Company', 'ABOUT')
    tweet_from = neomodel.RelationshipFrom('Tweet', 'TWEET_FROM')
    cited_from = neomodel.RelationshipFrom('News', 'CITE_FROM')

    def save(self):
        self.modified = datetime.datetime.now()
        super(Event, self).save()
        return self
Example #11
0
class Company(nm.StructuredNode):
    name = nm.StringProperty(unique_index=True, require=True)
    symbol = nm.StringProperty()
    market = nm.StringProperty()
    list_date = nm.IntegerProperty()
    updated = nm.DateTimeProperty(default_now=True)

    concept = nm.RelationshipTo('Concept',
                                'COMPONENT_OF',
                                cardinality=nm.ZeroOrMore,
                                model=ComponentRel)
    industry = nm.RelationshipTo('Industry',
                                 'COMPONENT_OF',
                                 cardinality=nm.ZeroOrMore,
                                 model=ComponentRel)
    index = nm.RelationshipTo('Industry',
                              'COMPONENT_OF',
                              cardinality=nm.ZeroOrMore,
                              model=ComponentRel)
    customer = nm.RelationshipTo('Company',
                                 'SUPPLIES_TO',
                                 cardinality=nm.ZeroOrMore)
    product = nm.RelationshipTo('Product', 'PRODUCES', model=ProductRel)
Example #12
0
class Contribution(neo.StructuredRel):
    time = neo.DateTimeProperty()
    contribtype = neo.StringProperty()
    comment = neo.StringProperty()
Example #13
0
class Comment(nm.StructuredNode):
    create_datetime = nm.DateTimeProperty(default_now=True)
    content = nm.StringProperty(required=True)

    written_by = nm.Relationship('User', 'WRITTEN_BY')
Example #14
0
class ProductRel(nm.StructuredRel):
    updated = nm.DateTimeProperty(default_now=True)
    rating = nm.IntegerProperty()
    contribution = nm.IntegerProperty()
Example #15
0
class Like(nm.StructuredRel):
    create_datetime = nm.DateTimeProperty(default_now=True)
Example #16
0
class StakeRel(nm.StructuredRel):
    updated = nm.DateTimeProperty(default_now=True)
    shareholding_ratio = nm.FloatProperty()
Example #17
0
class ComponentRel(nm.StructuredRel):
    updated = nm.DateTimeProperty(default_now=True)
    rating = nm.IntegerProperty()
    relevancy = nm.IntegerProperty()
    weight = nm.FloatProperty()
Example #18
0
class Index(nm.StructuredNode):
    name = nm.StringProperty(unique_index=True, require=True)
    symbol = nm.StringProperty()
    market = nm.StringProperty()
    list_date = nm.IntegerProperty()
    updated = nm.DateTimeProperty(default_now=True)
Example #19
0
from flask_login import LoginManager, UserMixin, login_user, logout_user, current_user, login_required

from flask.views import MethodView
from builder import settings
from builder.oauth import OAuthSignIn, GitHubSignin
import optparse

from neomodel import config
import neomodel
config.DATABASE_URL = settings.NEO4J_URL

from crm import models

fields = {
    'value': lambda: neomodel.StringProperty(index=True, unique=True),
    'created': lambda: neomodel.DateTimeProperty(default_now=True),
    'created_by': lambda: neomodel.StringProperty(index=True),
}
rel_fields = {
    'value': neomodel.StringProperty,
    'evidence': neomodel.StringProperty,
    'confidence': neomodel.FloatProperty,
    'created': lambda: neomodel.DateTimeProperty(default_now=True),
    'created_by': neomodel.StringProperty,
    'updated': neomodel.DateTimeProperty,
}
models.build_models(settings.CRM_URL, fields=fields, rel_fields=rel_fields)

app = Flask(__name__, static_url_path=settings.STATIC_URL)
app.config['SECRET_KEY'] = settings.SECRET_KEY
app.config['SQLALCHEMY_DATABASE_URI'] = settings.SQLALCHEMY_DATABASE_URI