Ejemplo n.º 1
0
class OrganizationDTO(mongo.Document):
    """A DTO wrapper for Organization documents."""

    name = mongo.StringField(db_field='n')
    address = mongo.StringField(db_field='a')
    latlng = mongo.ListField(db_field='l')
    types = mongo.ListField(mongo.IntField(), db_field='ts')
    phone_numbers = mongo.ListField(db_field='ns')
    email_key = mongo.EmailField(db_field='ek')
    emails = mongo.ListField(db_field='es')
    contacts = mongo.ListField(mongo.ReferenceField(ContactDTO), db_field='cs')
    user_contacts = mongo.ListField(mongo.ReferenceField('UserDTO'),
                                    db_field='us')
    organization_url = mongo.StringField(db_field='u')
    partners = mongo.ListField(mongo.ReferenceField('self'), db_field='ps')
    facebook = mongo.URLField(db_field='f')
    twitter = mongo.URLField(db_field='t')
    keywords = mongo.StringField(db_field='ks')
    valid = mongo.BooleanField(db_field='v', default=True)
    last_updated = mongo.DateTimeField(db_field='lu')
    updated_by = mongo.ObjectIdField(db_field='ub')
    page_rank_info = mongo.EmbeddedDocumentField(document_type=PageRankInfoDTO,
                                                 db_field='r')
    page_rank = mongo.LongField(min_value=0, db_field='pr')
    page_rank_weight = mongo.FloatField(min_value=0.0,
                                        max_value=1.0,
                                        db_field='w')
    content_weight = mongo.FloatField(min_value=0.0, db_field='c')
    combined_weight = mongo.FloatField(min_value=0.0, db_field='cw')
Ejemplo n.º 2
0
class QueueObject(me.Document):

    commitSHA = me.StringField(sparse=False,
                               unique=True,
                               unique_with=['job'],
                               required=True)
    running = me.BooleanField()  # If currently worked on
    installID = me.IntField()
    status = me.StringField()  # To save errors etc.

    # Urls to communicate with API
    runUrl = me.URLField()
    compareUrl = me.URLField()

    # Possible SHAs to compare with
    compareOptions = me.DictField()  # 0_BaseSHA, 1_ForkPoint, 2_LastCommon

    # TODO: Add optional Yaml overwrite here and check in test routine
    # TODO: Add optional checkpoint overwrite here and check in test routine
    # Custom Job Settings
    # Job name
    job = me.StringField(default='default-job', required=True)
    customYaml = me.ReferenceField(Setup, required=False)
    customCheckpoint = me.ReferenceField(Checkpoint, required=False)
    jobuser = me.StringField(default='auto-generated', required=True)

    def __str__(self):
        output = f"Name: {self.job} | {self.commitSHA} Running: {self.running}"
        return output

    meta = {'indexes': ['commitSHA']}
Ejemplo n.º 3
0
class OrganizationProfile(me.Document):
    display_name = me.StringField(max_length=64, default=None)
    organization = me.ReferenceField('Organization',
                                     required=True,
                                     unique=True,
                                     reverse_delete_rule=True)
    url = me.URLField()
    location = me.StringField()
    logo = me.URLField()
    contact_number = me.StringField()

    created_at = me.DateTimeField(default=datetime.utcnow)
    updated_at = me.DateTimeField(default=datetime.utcnow)
    created_by = me.ReferenceField('User', required=False)
    updated_by = me.ReferenceField('User', required=False)
    is_active = me.BooleanField(default=True)

    meta = {'indexes': ['organization']}

    def __str__(self):
        return str(self.organization)

    def save(self, *args, **kwargs):
        super(OrganizationProfile, self).save(*args, **kwargs)
        self.reload()

    def update(self, *args, **kwargs):
        super(OrganizationProfile, self).update(*args, **kwargs)
        self.reload()

    def to_json(self, fields=None, exclude=None):
        return json_dumper(self, fields, exclude)
Ejemplo n.º 4
0
class UniqueBook(mongoengine.Document):
    """docstring for UniqueBook"""
    book = mongoengine.ReferenceField(Book)
    isbn = mongoengine.StringField(max_length=100, required=True, unique=False)
    image = mongoengine.URLField()
    medium_image = mongoengine.URLField()
    last_update = mongoengine.DateTimeField(default=datetime.datetime.now)
    buy_url = mongoengine.URLField()
    editeur = mongoengine.StringField(max_length=100)
Ejemplo n.º 5
0
class Post(mongoengine.EmbeddedDocument):
    id = mongoengine.StringField(name='post_id')
    picture = mongoengine.URLField()
    full_picture = mongoengine.URLField()
    name = mongoengine.StringField()
    description = mongoengine.StringField()
    caption = mongoengine.StringField()
    created_time = mongoengine.StringField()
    updated_time = mongoengine.StringField()
    likes = mongoengine.DictField()
Ejemplo n.º 6
0
class Tweet(mongo.Document):
    created_at = mongo.DateTimeField()
    id_str = mongo.StringField(unique=True)
    favorite_count = mongo.IntField()
    text = mongo.StringField()
    retweeted = mongo.BooleanField()
    retweet_count = mongo.IntField()
    link_url = mongo.URLField()
    fake_news_url = mongo.URLField()
    user = mongo.EmbeddedDocumentField(TwitterUser)
    fact_checked = mongo.BooleanField(default=False)
Ejemplo n.º 7
0
class Config(me.DynamicDocument):

    name = me.StringField()
    date = me.DateTimeField()
    commitSHA = me.StringField()
    commitDate = me.DateTimeField()
    commitMessage = me.StringField()
    # Assumes Tests were run on same system as the files reside
    system = me.StringField()

    # Unique combination of Name + SHA + System + Date to prevent reupload
    # sparse allows for empty unique key
    unique = me.StringField(unique=True, sparse=True)

    # Test setup
    setup = me.ReferenceField(Setup)

    # Image Link
    perfImgurLink = me.URLField()
    compImgurLink = me.URLField()
    # Delete Hash
    perfDeleteHash = me.StringField()
    compDeleteHash = me.StringField()

    # Merged Commit
    mergedBaseSHA = me.StringField()

    # Failure field
    failure = me.StringField()

    def __str__(self):
        output = f"Name: {self.commitMessage}\n" \
                 f"SHA: {self.commitSHA}\n" \
                 f"Date: {self.date}\n" \
                 f"Systen: {self.system}\n" \
                 f"Setup: {self.setup}"
        return output

    # Setup indexing for faster querying
    meta = {'indexes': ['commitSHA']}

    @staticmethod
    def checkExisting(sha: str) -> bool:
        """
        Check if there already exists a config for a given sha
        Args:
            sha: SHA to check for

        Returns:
            bool: True if already existing Config
        """
        c = Config.objects(
            commitSHA=sha).order_by('-date').first()  # Get freshest config
        return c is not None
Ejemplo n.º 8
0
class FakeNews(mongo.Document):
    fake_news_url = mongo.URLField(unique=True)
    title = mongo.StringField()
    thumbnail = mongo.URLField()
    facebook_shares = mongo.IntField()
    source = mongo.StringField()
    message_1 = mongo.StringField()
    message_2 = mongo.StringField()
    tweets = mongo.IntField()
    clicks = mongo.IntField()
    replies = mongo.ListField()
    correct_url = mongo.URLField()
    shortened_url = mongo.URLField()
Ejemplo n.º 9
0
class ProductPrice(mongo.DynamicDocument):
    """
    Definition of product price schema.
    """
    product_id = mongo.ObjectIdField(primary_key=False)
    search_term = mongo.StringField(required=True)
    price = mongo.FloatField(required=True)
    date = mongo.DateTimeField(default=datetime.datetime.utcnow)
    shop = mongo.StringField(required=True, max_length=50)
    shop_link = mongo.URLField(required=False)
    image_link = mongo.URLField(required=False)
    unit_price = mongo.FloatField(required=False)
    unit_measure = mongo.StringField(required=False, max_length=50)
Ejemplo n.º 10
0
class Repo(me.DynamicEmbeddedDocument):
    """Defines a repository object from github."""

    name = me.StringField(required=True)
    full_name = me.StringField(required=True)
    html_url = me.URLField(required=True)
    description = me.StringField()
    language = me.StringField()
    forks_count = me.IntField()
    open_issues = me.IntField()
    contributors_url = me.URLField(required=True)

    # Needs to be loaded from the contributors url
    contributions = me.IntField(required=True)

    def __init__(self, url=None, user_id=None, **kwargs):
        """Creates a new repo from the given url.

        Args:
            url (str): The api url to the repo to create.
            user_id (int): The user id to check for in order to load the number of contributions the user has made.

        Raises:
            ContributorError: Raised when the user does not contribute to the given repo.
        """

        # Get the repo information
        if user_id is not None and url is not None:
            # Get the repo information
            repo_result = request('GET', url)
            repo_json = repo_result.json()

            # Get the contributors list so that the number of contributions the user has made can be retrieved.
            contributors_result = request('GET', repo_json['contributors_url'])
            contributors_json = contributors_result.json()

            if not any(contributor['id'] == user_id
                       for contributor in contributors_json):
                raise ContributorError(user_id, url)
            else:
                kwargs['contributions'] = next(
                    contributor['contributions']
                    for contributor in contributors_json)

            kwargs.update(repo_json)

        # Create the document using the super function
        super().__init__(**kwargs)
Ejemplo n.º 11
0
class Movie(me.Document):
    title = me.StringField()
    year = me.IntField()
    has_sequel = me.BooleanField()
    imdb_url = me.URLField()
    cast = me.EmbeddedDocumentListField(Star)
    score = me.DecimalField()
Ejemplo n.º 12
0
class Project(mongoengine.Document):
    user_id = mongoengine.ObjectIdField(required=False)
    description = mongoengine.StringField(max_length=100)
    name = mongoengine.StringField(max_length=100)
    svn_url = mongoengine.URLField()
    branches = mongoengine.ListField()
    project_id = mongoengine.StringField(max_length=100)
    init_db()
    meta = {'db_alias': 'AdaGitHub', 'collection': 'Project'}

    def create_project(self, user, description, name, web_url, branches,
                       project_id):
        self.user_id = user.id
        self.description = description
        self.name = name
        self.web_url = web_url
        self.branches = branches
        self.project_id = project_id
        self.save()
        return self

    def save_repository_infos(self, user, name):

        self.user_id = user.id
        self.name = name
        self.save()
        return self

    def update_repository_infos(self, name):
        self.update(name=name)
        return self
Ejemplo n.º 13
0
class Event(document.Document):
    meta = {'allow_inheritance': True}
    name = orm.StringField(required=True)
    city = orm.StringField(required=True)
    slug = orm.StringField(required=True, unique=True)
    location = orm.StringField(required=True)
    address = orm.StringField(required=True)
    image = orm.URLField()

    start_date = orm.DateTimeField(required=True)
    end_date = orm.DateTimeField(required=True)
    registration_end = orm.DateTimeField(required=True)

    price = orm.IntField(default=0)

    schedule = orm.SortedListField(orm.EmbeddedDocumentField(ScheduleItem),
                                   ordering='time')

    @classmethod
    def find_event(cls, id):
        try:
            oid = ObjectId(id)
        except:
            return Event.objects(slug=id).first()

        return Event.objects(id=oid).first()
Ejemplo n.º 14
0
class User(mongoengine.Document):
    init_db()
    username = mongoengine.StringField(max_length=100)
    project = mongoengine.ReferenceField(Project)
    access_token = mongoengine.StringField(max_length=100)
    gitlab_user = mongoengine.StringField(max_length=100)
    chat_id = mongoengine.StringField(max_length=100)
    gitlab_user_id = mongoengine.StringField(max_length=100)
    api_token = mongoengine.StringField(max_length=100)
    domain = mongoengine.URLField()
    meta = {'db_alias': 'AdaBot', 'collection': 'User'}

    def create_user(self, username):
        self.username = username
        self.save()
        return self

    def save_gitlab_user_data(self, gitlab_user, chat_id, gitlab_user_id):
        self.gitlab_user = gitlab_user
        self.chat_id = chat_id
        self.gitlab_user_id = gitlab_user_id
        self.save()
        return self

    def save_gitlab_repo_data(self, project):
        self.project = project
        self.save()
        return self

    def get_user_project(self):
        project = self.project
        project = Project.objects(id=project.id).first()
        return project
Ejemplo n.º 15
0
class User(document.Document):
    meta = {'allow_inheritance': True}
    _hidden = ['password', 'completion_token']
    type = orm.StringField()

    name = orm.StringField(required=True)
    image = orm.URLField()
    email = orm.EmailField(required=True, unique=True)
    password = orm.StringField()

    gender = orm.StringField()
    phone = orm.StringField()

    complete = orm.BooleanField(default=True)
    completion_token = orm.StringField()

    # Different based on context of user - whether events attended, mentored, or organized
    checkins = orm.ListField(orm.ReferenceField(events.Event))
    events = orm.ListField(orm.ReferenceField(events.Event))

    shirt_type = orm.StringField()
    shirt_size = orm.StringField()

    dietary = orm.StringField()
    notes = orm.MapField(orm.StringField())

    stripe_id = orm.StringField()
Ejemplo n.º 16
0
class TweetFactCheck(mongo.Document):
    fake_news_url = mongo.URLField()
    clicks = mongo.IntField(default=0)
    created_at = mongo.DateTimeField(default=now())
    id_str = mongo.StringField(unique=True)
    replied = mongo.BooleanField(default=False)
    text = mongo.StringField()
Ejemplo n.º 17
0
class DataImport(mongo.Document):
    id = mongo.UUIDField(required=False)
    upload_type = mongo.StringField(required=True)
    upload_format = mongo.StringField(required=True)
    duplicate_content = mongo.StringField(required=True)
    description = mongo.StringField(required=False)
    content_status = mongo.StringField(required=False)
    content_author = mongo.StringField(required=False)

    upload_file = mongo.StringField(required=False)
    upload_url = mongo.URLField(required=False)
    upload_freq = mongo.IntField(required=False)

    last_updated = mongo.DateTimeField(required=True)
    fields = mongo.ListField(required=False)
    name = mongo.StringField(required=True)

    meta = {'allow_inheritance': True}

    @property
    def datatype(self):
        dt = {
            "0": "csv",
            "1": "json",
            "2": "shapefile",
            "3": "geojson",
        }
        return dt.get(self.upload_format, "unknown")

    @property
    def group(self):
        if self.upload_type == "0":
            return "Imported from File"
        else:
            return "Imported from Live Feed"
Ejemplo n.º 18
0
class APIRecord(me.EmbeddedDocument):
    title = me.StringField()
    explanation = me.StringField()
    url = me.URLField()
    media_type = me.StringField()
    concepts = me.ListField(me.StringField())
    requested_date = me.DateTimeField(default=datetime.datetime.now)
Ejemplo n.º 19
0
class RecipeDocument(mongoengine.Document):
    # Standard Schema
    # id = mongoengine.UUIDField(primary_key=True)
    name = mongoengine.StringField(required=True)
    description = mongoengine.StringField(required=True)
    image = mongoengine.StringField(required=False)
    recipeYield = mongoengine.StringField(required=True, default="")
    recipeIngredient = mongoengine.ListField(required=True, default=[])
    recipeInstructions = mongoengine.ListField(requiredd=True, default=[])
    totalTime = mongoengine.StringField(required=False)

    # Mealie Specific
    slug = mongoengine.StringField(required=True, unique=True)
    categories = mongoengine.ListField(default=[])
    tags = mongoengine.ListField(default=[])
    dateAdded = mongoengine.DateTimeField(binary=True, default=datetime.date.today())
    notes = mongoengine.ListField(default=[])
    rating = mongoengine.IntField(required=True, default=0)
    orgURL = mongoengine.URLField(required=False)
    extras = mongoengine.DictField(required=False)

    meta = {
        "db_alias": "core",
        "collection": "recipes",
    }
Ejemplo n.º 20
0
class Comment(me.Document):
    """
		Schema for Comment created using 'mongoengine'

		Fields:
			time_index (long): This is an integer which determines time sorted index.
			comment_id (str): ID of the comment provided by Youtube.
			channel_id (str): Author ID of the comment referenced to Channel.
			channel_title (str): Author name of the comment referenced to Channel.
			channel_thumbnail (url): Url for pic of channel.
			video_id (str): Video of the comment.
			text (str): Content of the comment.
			likes (long): Number of likes for the comment.
			time (str): Passed time after commented as string representation.
			edited (bool): If comment is edited, value is True.
			timestamp (long): Timestamp of comment.
			has_replies (bool): If the comment is replied its value is True.

	"""

    time_index = me.LongField(required=True, default=0)
    comment_id = me.StringField(primary_key=True)
    channel_id = me.ReferenceField('Channel', required=True)
    channel_title = me.StringField(required=True)
    channel_thumbnail = me.URLField(required=True)
    video_id = me.ReferenceField('Video', required=True)
    text = me.MultiLineStringField(required=True)
    likes = me.LongField(required=True, default=0)
    time = me.StringField(required=True)
    edited = me.BooleanField(required=True, default=False)
    timestamp = me.LongField(required=True)
    has_replies = me.BooleanField(required=True, default=False)
    sentiment_category = me.StringField(choices=SENTIMENT_CATEGORIES)
class Info(mongoengine.DynamicDocument):
    meta = {'collection': 'info'}
    pub_date = mongoengine.StringField(max_length=20)
    area = mongoengine.ListField(mongoengine.StringField(max_length=5))
    title = mongoengine.StringField(max_length=50)
    url = mongoengine.URLField(max_length=100)
    price = mongoengine.StringField(max_length=10)
Ejemplo n.º 22
0
class Item(me.Document):
    name = me.StringField(required=True)
    description = me.StringField()
    tags = me.ListField(me.StringField())
    upc = me.StringField(uniqued=True)
    color = me.StringField()
    size = me.StringField()
    weight = me.StringField()
    dimension = me.StringField()
    image = me.URLField()
    category = me.StringField(required=True,
                              choices=CATEGORIES,
                              default='food')

    brand = me.ReferenceField(Brand, dbref=True)
    manufactory = me.ReferenceField(Manufactory, dbref=True)

    sources = me.EmbeddedDocumentListField(DataSource)

    status = me.StringField(required=True, default='deactivate')

    created_date = me.DateTimeField(required=True,
                                    default=datetime.datetime.utcnow)
    updated_date = me.DateTimeField(required=True,
                                    default=datetime.datetime.utcnow,
                                    auto_now=True)

    meta = {'collection': 'items'}
class Work(me.EmbeddedDocument):
    name = me.StringField(required=True, max_length=40)
    url = me.URLField()
    position = me.StringField()
    description = me.StringField()
    start_date = me.DateField(required=True)
    end_date = me.DateField()
Ejemplo n.º 24
0
class File(me.EmbeddedDocument):
    """Defines a file hosted on cloudinary as a mongoengine document."""

    url = me.URLField(required=True)
    key = me.StringField(required=True)

    def __init__(self, file=None, public_key=None, **kwargs):
        """Creates a new file, uploading it to cloudinary.

        Args:
            file: The file to be uploaded to cloudinary.
            public_key: The key to have the file referenced by.
        """

        if file is not None and public_key is not None:
            # Upload the file
            upload(file, public_id=public_key)
            # Get the new location
            url = cloudinary_url(public_key)[0]
            super(File, self).__init__(key=public_key, url=url, **kwargs)
        else:
            super(File, self).__init__(**kwargs)

    def delete(self):
        """Deletes the file from cloudinary."""
        # Delete the object from cloudinary
        destroy(self.key)
class School(me.EmbeddedDocument):
    """Defines a school object for user education list."""
    name = me.StringField(required=True)
    degree = me.StringField(required=True)
    url = me.URLField()
    start_date = me.DateField(required=True)
    end_date = me.DateField()
Ejemplo n.º 26
0
class Token(me.Document):
    """
    Represents a token issued by SNI.
    """
    class TokenType(str, Enum):
        """
        Enumeration containing the various token types.
        """

        dyn = "dyn"  # Dynamic app token
        per = "per"  # Permanent app token
        use = "use"  # User token

    callback = me.URLField(default=None, null=True)
    """Callback URL of the application. When a new user token is issued, the
    corresponding application is notified at this URL."""

    comments = me.StringField(default=str)
    """Comments"""

    created_on = me.DateTimeField(default=utils.now, required=True)
    """Timestamp of the creation of this document"""

    expires_on = me.DateTimeField(default=None, null=True)
    """Self explanatory"""

    owner = me.ReferenceField(User,
                              required=True,
                              reverse_delete_rule=me.CASCADE)
    """Reference to the owner of this token"""

    parent = me.ReferenceField("self",
                               default=None,
                               null=True,
                               reverse_delete_rule=me.CASCADE)
    """Optional reference to the token that has been used to create this one"""

    token_type = me.StringField(choices=TokenType, required=True)
    """Token type, see :class:`sni.uac.models.Token.TokenType`"""

    uuid = me.UUIDField(binary=False, unique=True)
    """
    UUID of this token

    Todo:
        Use the document's ``_id`` field instead.
    """

    meta = {
        "indexes": [
            {
                "fields": ["expires_on"],
                "expireAfterSeconds": 0,
            },
        ],
    }

    def __repr__(self) -> str:
        return f"<Token: {repr(self.owner)} {self.token_type}>"
Ejemplo n.º 27
0
class LinkAttachment(Attachment):
    """
    This class defines document type for link attachments
    """

    link_url = mongoengine.URLField(required=True)
    link_caption = mongoengine.StringField(default='', required=True)
    link_description = mongoengine.StringField(default='', required=True)
Ejemplo n.º 28
0
class Widget(mongoengine.EmbeddedDocument):
    id = mongoengine.IntField(default=3)  #format (YYYYMMMDDXXX)
    name = mongoengine.StringField()
    typeOfGraph = mongoengine.StringField(required=True)
    dateCreated = mongoengine.DateTimeField(default=datetime.datetime.now())
    url = mongoengine.URLField(required=True)
    priority = mongoengine.IntField(default=3)
    options = mongoengine.ListField(mongoengine.EmbeddedDocumentField(Query))
    meta = {'ordering': ['-priority']}
Ejemplo n.º 29
0
class Item(mongoengine.Document):
    name = mongoengine.StringField(required=True)
    manufacturer = mongoengine.StringField()
    price = mongoengine.IntField()
    stock = mongoengine.BooleanField(required=True)
    url = mongoengine.URLField(required=True)
    lastStocked = mongoengine.DateTimeField()
    date_added = mongoengine.DateTimeField()
    img_url = mongoengine.URLField(required=True)
    meta = {'collection': 'items'}

    def __str__(self) -> str:
        if self.stock:
            stock_msg = "# **In stock**"
        else:
            stock_msg = '> Out of stock'
        return "{}\n[${}]({})\n{}\n < Last in stock: {} >\n".format(
            self.name, self.price, self.url, stock_msg, self.lastStocked)
Ejemplo n.º 30
0
class Script(Engine.Document):
    title = Engine.StringField(required=True, max_length=25, min_length=5)
    author = Engine.StringField(required=True)
    description = Engine.StringField()
    link = Engine.URLField(unique=True, required=True)
    stars = Engine.IntField(default=0)
    comments = Engine.EmbeddedDocumentListField(Comment)
    upvoted_by = Engine.ListField(Engine.ObjectIdField())
    date_time = Engine.DateTimeField(required=True)
    meta = {'collection': 'scripts'}