Exemplo n.º 1
0
class Range(IIIFModel):
    # PROPERTIES FOR INTERNAL USE
    identifier = fields.StringField(
        required=True,
        unique_with='name',
        regex=valid_name,
        help_text=("The identifier this Range belongs to."))
    name = fields.StringField(required=True,
                              unique_with='identifier',
                              regex=valid_name,
                              help_text=("The name of this IIIF Range."))

    # TECHNICAL PROPERTIES
    ATtype = fields.StringField(
        required=True,
        default='sc:Range',
        regex=valid_type,
        help_text=("The type of this IIIF resource. Must be: sc:Range."))
    viewingDirection = fields.StringField(
        null=True,
        help_text=
        ("The direction that a range of canvases should be displayed to the user. A manifest may have exactly one viewing direction, and if so, it applies to all of its ranges unless the range specifies its own viewing direction."
         ))

    # LINKING PROPERTIES
    startCanvas = fields.URLField(
        null=True,
        help_text=
        ("A link from a range or range to a canvas that is contained within the range."
         ))
    contentLayer = fields.URLField(
        null=True,
        help_text=
        ("Ranges may also link to a layer, that has the content of the range using the contentLayer linking property. This allows, for example, the range representing a newspaper article that is split across multiple pages to be linked with the text of the article."
         ))
Exemplo n.º 2
0
class Place(gj.Document):
    title = fields.StringField(required=True,
                               max_length=70,
                               unique_with='address')
    main_category = fields.StringField(max_length=30, choices=src.categories)
    categories = fields.ListField(fields.StringField(max_length=30,
                                                     choices=src.categories),
                                  default=[])
    main_cuisine = fields.StringField(max_length=30, choices=src.cuisines)
    cuisines = fields.ListField(fields.StringField(max_length=30,
                                                   choices=src.cuisines),
                                default=[])
    additional_services = fields.ListField(fields.StringField(
        max_length=30, choices=src.additional_services),
                                           default=[])
    description = fields.StringField(max_length=3000)
    phone = fields.StringField(required=True, max_length=20, unique=True)
    instagram = fields.URLField()
    website = fields.URLField()
    timezone = fields.StringField(required=True)
    opening_hours = fields.ListField(field=fields.ListField(
        field=fields.DateTimeField(default=datetime.utcnow), max_length=2),
                                     max_length=7,
                                     default=[[None, None]] * 7)
    address = fields.EmbeddedDocumentField(Address, required=True)
    main_photo = fields.ReferenceField(Image, reverse_delete_rule=NULLIFY)
    photos = fields.ListField(fields.ReferenceField(Image,
                                                    reverse_delete_rule=PULL),
                              default=[])
    general_review = fields.ReferenceField(GeneralReview,
                                           reverse_delete_rule=NULLIFY,
                                           unique=True)
    configuration = fields.EmbeddedDocumentField(Configuration)
    is_active = fields.BooleanField(default=False)
Exemplo n.º 3
0
class Media(Document):
    tag = fields.StringField()
    date = fields.DateTimeField(required=True)
    url = fields.URLField(required=True)
    type = fields.StringField(required=True, choices=('photo', 'video'))
    thumbnail_url = fields.URLField()
    instagram = fields.EmbeddedDocumentField(Instagram)

    meta = {'ordering': ['-date']}
Exemplo n.º 4
0
class Piloto(Document):
    #id=fields.ObjectId
    nombre = fields.StringField(required=False)
    pais = fields.StringField(required=False)
    wiki_piloto = fields.URLField(required=False)  #Wikipedia
    foto_piloto = fields.URLField(required=False)  #Wikipedia
    num_campeonatos_ganados = fields.StringField(required=False)
    datos_anuales = fields.ListField(
        required=False
    )  #Año, V Media, Moto Usada, Posicion Campeonato, Carreras Ganadas
Exemplo n.º 5
0
class Recipe(Document):
    """
    Ingredients and instructions to prepare one dish
    """
    name = fields.StringField()
    url = fields.StringField(unique=True)
    importedFrom = fields.URLField()
    author = fields.StringField(default="Cory Dodt")
    image = fields.URLField()
    prepTime = fields.StringField()
    cookTime = fields.StringField()
    recipeYield = fields.StringField()
    tags = fields.ListField(fields.StringField())
    calories = fields.IntField()
    ingredients = fields.ListField(fields.StringField())
    instructions = fields.ListField(fields.StringField())

    @classmethod
    def fromLoadedData(cls, jsonData):
        """
        Load data from the simple datastructure extracted by recipeschema
        """
        props = jsonData['properties']
        name = props['name'][0]
        url = urlifyName(name)
        self, created = cls.objects.get_or_create(url=url)
        self.name = name
        self.url = urlifyName(self.name)
        self.image = props.get('image', [None])[0]
        self.author = props.get('author', [None])[0]
        self.recipeYield = props.get('recipeYield', [None])[0]
        keys = props.keys()
        if 'ingredients' in keys and 'recipeInstructions' in keys and 'importedFromURL' in keys:
            self.ingredients = []
            for i in props['ingredients']:
                ings = filter(None,
                              [x.strip() for x in i.split(ITEM_SEPARATOR)])
                self.ingredients.extend(ings)

            self.instructions = []
            for ii in props['recipeInstructions']:
                inses = filter(None,
                               [x.strip() for x in ii.split(ITEM_SEPARATOR)])
                self.instructions.extend(inses)

            self.importedFrom = props['importedFromURL']
            return self
        else:
            return None
Exemplo n.º 6
0
class Usuario(Document):
    usuario = fields.StringField(required=True, max_length=30)
    email = fields.EmailField(required=True, max_length=150)
    nombre = fields.StringField(max_length=50)
    password = fields.StringField(required=True, min_length=8)
    imagen = fields.URLField(required=False)
    descripcion = fields.StringField(max_length=500)
    listaSeguidores = fields.ListField(fields.ReferenceField('Usuario'))
    listaSeguidos = fields.ListField(fields.ReferenceField('Usuario'))
    listaPublicaciones = fields.ListField(fields.ReferenceField('Publicacion'))
    listaComentariosPublicaciones = fields.ListField(
        fields.ReferenceField('Publicacion'))
    listaGraffitisPublicaciones = fields.ListField(
        fields.ReferenceField('Publicacion'))

    def delete(self, *args, **kwargs):
        for publicacion in self.listaComentariosPublicaciones:
            comentarios = publicacion.listaComentarios
            for comentario in comentarios:
                if comentario.autor == self:
                    publicacion.__class__.objects.update(
                        pull__listaComentarios=comentario)

        for publicacion in self.listaGraffitisPublicaciones:
            graffitis = publicacion.listaGraffitis
            for graffiti in graffitis:
                if graffiti.autor == self:
                    publicacion.__class__.objects.update(
                        pull__listaGraffitis=graffiti)

        super().delete()
Exemplo n.º 7
0
class RegularModel(Document):
    """
    A model class for testing regular flat fields.
    """
    str_field = fields.StringField()
    str_regex_field = fields.StringField(regex="^valid_regex")
    url_field = fields.URLField()
    email_field = fields.EmailField()
    int_field = fields.IntField()
    long_field = fields.LongField()
    float_field = fields.FloatField()
    boolean_field = fields.BooleanField()
    nullboolean_field = fields.BooleanField(null=True)
    date_field = fields.DateTimeField()
    complexdate_field = fields.ComplexDateTimeField()
    uuid_field = fields.UUIDField()
    id_field = fields.ObjectIdField()
    decimal_field = fields.DecimalField()

    custom_field = CustomField()

    # TODO
    # dynamic_field = fields.DynamicField()
    # bin_field = fields.BinaryField()
    # file_field = fields.FileField()
    # image_field = fields.ImageField()

    def method(self):
        return 'method'
Exemplo n.º 8
0
class ChargeStation(Document):
    meta = {
        "indexes": [
            'network',
            'locationId',
        ]
    }
    id = fields.IntField(required=True, primary_key=True)
    network = fields.ReferenceField(Network)
    locationId = fields.IntField(required=True)
    name = fields.StringField(required=True, max_length=200)

    #0 = Unknown
    #1 = Free
    #2 = Fee
    cost = fields.IntField()
    cost_description = fields.StringField(max_length=1000)
    address = fields.StringField(max_length=300)
    available = fields.IntField(required=True)
    hours = fields.StringField(max_length=400)
    geoLocation = fields.PointField(auto_index=True)
    score = fields.FloatField(min_value=0, max_value=10.0, required=True)
    images = fields.ListField(fields.URLField())
    chargePoints = fields.ListField(fields.ReferenceField(ChargePoint))
    created_at = fields.DateTimeField()
    modified_at = fields.DateTimeField(default=datetime.datetime.utcnow())
Exemplo n.º 9
0
class Category(Document):
    name = fields.MapField(fields.StringField())
    description = fields.MapField(fields.StringField())
    icon_url = fields.URLField(max_length=200,
                               required=True,
                               default=HOME_ICON)
    has_questions = fields.BooleanField(required=True, default=False)
Exemplo n.º 10
0
class Sequence(IIIFModel):
    # PROPERTIES FOR INTERNAL USE
    identifier = fields.StringField(
        required=True,
        unique_with='name',
        regex=valid_name,
        help_text=("The identifier this Sequence belongs to."))
    name = fields.StringField(required=True,
                              unique_with='identifier',
                              regex=valid_name,
                              help_text=("The name of this IIIF Sequence."))

    # TECHNICAL PROPERTIES
    ATtype = fields.StringField(
        required=True,
        default='sc:Sequence',
        regex=valid_type,
        help_text=("The type of this IIIF resource. Must be: sc:Sequence."))
    viewingDirection = fields.StringField(
        null=True,
        help_text=
        ("The direction that a sequence of canvases should be displayed to the user. A manifest may have exactly one viewing direction, and if so, it applies to all of its sequences unless the sequence specifies its own viewing direction."
         ))

    # LINKING PROPERTIES
    startCanvas = fields.URLField(
        null=True,
        help_text=
        ("A link from a sequence or range to a canvas that is contained within the sequence."
         ))
Exemplo n.º 11
0
class Graffiti(EmbeddedDocument):
    _id = fields.ObjectIdField(required=True,
                               default=lambda: fields.ObjectId())
    imagen = fields.URLField(required=True)
    estado = fields.StringField(required=True)  #poner enumerado
    fechaCaptura = fields.DateField(required=True)
    autor = fields.ReferenceField(Usuario, required=True)
Exemplo n.º 12
0
class Receta(Document):
    contenido = fields.StringField()
    imagen = fields.URLField()
    me_gusta = fields.ListField(fields.DynamicField())
    nombre = fields.StringField()
    autor = fields.ReferenceField(Autor, reverse_delete_rule=2)
    ingredientes = fields.EmbeddedDocumentListField(Ingrediente)
Exemplo n.º 13
0
class Recipe(Document):
    title = f.StringField(required=True, unique=True)
    image = f.FileField(required=False)
    content = f.StringField(required=False)
    redirect = f.URLField(required=False)
    favorite = f.BooleanField(default=False)
    type_recipe = f.StringField(required=True,
                                choices=['starter', 'main', 'dessert'])
Exemplo n.º 14
0
class User(Document):
    email = fields.EmailField(unique=True)
    password = fields.StringField()
    name = fields.StringField()
    profile = fields.URLField()
    acquisition_date = fields.DateTimeField()
    last_login = fields.DateTimeField()
    boards = fields.ListField(fields.LazyReferenceField('Board'))
Exemplo n.º 15
0
class PLO(Document):
    numero = fields.StringField(required=True, null=False)
    autor = fields.StringField(required=False, null=True)
    ementa = fields.StringField(required=True, null=False)
    em_tramitacao = fields.BooleanField(required=True, null=False)
    eh_polemico = fields.BooleanField(required=True, null=False)
    apelido = fields.StringField(required=False, null=True)
    tramites = fields.StringField(required=False, null=True)
    texto_integral = fields.URLField(required=False, null=True)
Exemplo n.º 16
0
class Shop(Document):
    name = fields.StringField()
    picture = fields.URLField()
    email = fields.EmailField()
    city = fields.StringField()
    location = fields.PointField()
    
    def __str__(self):
        return self.name
Exemplo n.º 17
0
class JobOffer(JobPosition):
    title = fields.StringField()
    company = fields.StringField(max_length=100)
    languages = fields.ListField(fields.StringField())
    offer_link = fields.URLField()
    source_page = fields.StringField(max_length=100)
    active = fields.BooleanField(default=True)
    offer_hash = fields.StringField(max_length=62)

    def __str__(self):
        return f'Title: {self.title}' + f'\nCompany: {self.company}' + f'\nCompany Size: {self.company_size}' + f'\nAddress: {self.location.address}' + f'\nExperience Level: {self.experience_level}' + f'\nCompany Size: {self.company_size}' + f'\nTechnologies: {self.technologies}' + f'\nLanguages: {self.languages}' + f'\nContracts: {self.finances.contracts}' + f'\nSalary b2b: {self.finances.salary.b2b}' + f'\nSalary uop: {self.finances.salary.uop}' + f'\nDate: {self.date}' + f'\nSource Page: {self.source_page}' + f'\nIs Active: {self.active}' + f'\nOffer hash: {self.offer_hash}'
Exemplo n.º 18
0
class Shops(Document):
    meta = {'db_alias': 'shops', 'collection': 'shops'}

    name = fields.StringField()
    picture = fields.URLField()
    email = fields.EmailField()
    city = fields.StringField()
    location = fields.PointField()

    def __str__(self):
        return self.name
Exemplo n.º 19
0
class SimpleDoc(Document):
    f_str = fields.StringField()
    f_url = fields.URLField()
    f_eml = fields.EmailField()
    f_int = fields.IntField()
    f_lng = fields.LongField()
    f_flt = fields.FloatField()
    f_dec = fields.DecimalField()
    f_bool = fields.BooleanField()
    f_dt = fields.DateTimeField()
    f_oid = fields.ObjectIdField()
    f_uuid = fields.UUIDField()
Exemplo n.º 20
0
class URL(Document):
    meta = {'strict': False, 'collection': 'urls'}
    url = fields.URLField(required=True, unique=True)
    title = fields.StringField()
    lang = fields.StringField()
    imageUrls = fields.ListField(fields.StringField())
    words = fields.ListField(fields.StringField())
    words_len = fields.IntField()
    lastmod = fields.StringField()
    requestId = fields.StringField()
    passage = fields.StringField()
    user_meta = fields.DictField()
Exemplo n.º 21
0
        class TestDocument(Document):
            string_field = fields.StringField(
                verbose_name='A string',
                regex=r'[\w]+',
                max_length=100,
                min_length=10,
                help_text='Fill in a string',
            )

            url_field = fields.URLField(
                verbose_name='An URL',
                help_text='Fill in an URL',
            )

            email_field = fields.EmailField(
                verbose_name='An e-mail address',
                regex=r'.*',
                max_length=101,
                min_length=11,
                help_text='Fill in an e-mail address',
            )

            int_field = fields.IntField(
                verbose_name='An int',
                min_value=1,
                max_value=102,
                help_text='Fill in an int',
            )

            float_field = fields.FloatField(
                verbose_name='A float',
                min_value=2,
                max_value=103,
                help_text='Fill in a float',
            )

            decimal_field = fields.DecimalField(
                verbose_name='A decimal',
                min_value=3,
                max_value=104,
                help_text='Fill in a decimal',
            )

            datetime_field = fields.DateTimeField(
                verbose_name='A datetime',
                help_text='Fill in a datetime',
            )

            boolean_field = fields.BooleanField(
                verbose_name='A bool',
                help_text='Yes or no?',
            )
Exemplo n.º 22
0
class User(Document):
    name = fields.StringField(required=True)
    profession = fields.StringField()
    email = fields.EmailField()
    phone = fields.StringField()
    website = fields.URLField()
    github = fields.StringField()
    summary = fields.StringField()
    skills = fields.ListField(fields.StringField())
    career = fields.ListField(fields.EmbeddedDocumentField(Job))
    education = fields.ListField(fields.EmbeddedDocumentField(Degree))

    def __str__(self):
        return self.name
Exemplo n.º 23
0
class Article(DynamicDocument):
    title = fields.StringField(verbose_name="title")
    cover = fields.StringField(blank=True)
    content = fields.StringField()
    origin_link = fields.URLField(verbose_name="origin_link")
    published_at = fields.DateTimeField()
    tags = fields.ListField(blank=True)
    type = fields.StringField(verbose_name="type")
    scrapy_mongodb = fields.DictField(db_field="scrapy-mongodb")

    meta = {
        "collection": "bitcoin",
        "ordering": ["-published_at"],
        "indexes": ["$title", {
            "fields": ["published_at"]
        }],
        "index_background": True,
    }
Exemplo n.º 24
0
class User(AbstractUser):
    """
    VERSION ISSUES:

    In Mongoengine <= 0.9 there is a mongoengine.django subpackage, which
    implements mongoengine User document and its integration with django
    authentication system.

    In Mongoengine >= 0.10 mongoengine.django was extracted from Mongoengine
    codebase and moved into a separate repository - django-mongoengine. That
    repository contains an AbstractBaseUser class, so that you can just
    inherit your User model from it, instead of copy-pasting the following
    200 lines of boilerplate code from mongoengine.django.auth.User.
    """

    about = fields.StringField(max_length=1000, blank=True)
    website = fields.URLField(blank=True)
    # For email validation
    email_is_valid = fields.BooleanField(default=False)
Exemplo n.º 25
0
class NewsItem(Document):
    """
    News Items from Crawler
    """
    id = fields.ObjectIdField(required=False, db_field='_id')
    url = fields.URLField(required=True)
    headline = fields.StringField(required=False, null=True)
    body = fields.DynamicField(required=False, null=True)

    meta = {
        'indexes': [{
            'fields': ['$headline', "$body"],
            'default_language': 'english',
            'weights': {
                'headline': 10,
                'body': 2
            }
        }]
    }
Exemplo n.º 26
0
class Location(Document):
    meta = {"indexes": []}

    id = fields.IntField(required=True, primary_key=True)
    address = fields.StringField(required=True, max_length=300)
    name = fields.StringField(required=True, max_length=200)
    description = fields.StringField(max_length=8192)
    phone = fields.StringField(max_length=20)
    poi_name = fields.StringField(max_length=30)
    parking_type_name = fields.StringField(max_length=20)
    cost_description = fields.StringField(max_length=1024)
    open247 = fields.BooleanField()
    amenities = fields.ListField(fields.StringField())
    stations = fields.ListField(fields.ReferenceField(ChargeStation))
    hours = fields.StringField(max_length=2048)
    score = fields.FloatField(min_value=0.0, max_value=10.0)
    photos = fields.ListField(fields.URLField())
    geoLocation = fields.PointField(auto_index=True)
    created_at = fields.DateTimeField()
    modified_at = fields.DateTimeField(default=datetime.datetime.utcnow())
Exemplo n.º 27
0
class User(Document):
    name = fields.StringField(max_length=30, default="")
    otp = fields.StringField(max_length=4, default="1111")
    expiry = fields.DateTimeField()
    email = fields.StringField(default="", required=False)
    mobile = fields.StringField(max_length=10, required=True)
    address = fields.StringField(max_length=300, default="")
    user_language = fields.StringField(choices=LANGS,
                                       required=True,
                                       default='english')
    profile_image = fields.URLField(default=HOME_ICON)
    base_location = fields.StringField(max_length=500, required=False)
    user_type = fields.StringField(choices=USER_TYPE,
                                   default="consumer",
                                   required=False)
    work_radius = fields.IntField(min_value=3, max_value=10, required=False)
    work_category = fields.StringField(min_value=1,
                                       max_length=100,
                                       required=False)

    meta = {"db_alias": "default"}
Exemplo n.º 28
0
class Person(Document):
    _id = fields.StringField()
    index = fields.IntField(unique=True)
    guid = fields.UUIDField(unique=True)
    has_died = fields.BooleanField()
    balance = fields.FloatField()
    picture = fields.URLField()
    age = fields.IntField()
    eyeColor = fields.StringField()
    name = fields.StringField()
    gender = fields.StringField()
    company_id = fields.IntField()
    email = fields.EmailField(unique=True)
    phone = fields.StringField()
    address = fields.MultiLineStringField()
    about = fields.MultiLineStringField()
    registered = fields.DateTimeField()
    tags = fields.ListField(fields.StringField())
    friends = fields.ListField(fields.DictField())
    greeting = fields.MultiLineStringField()
    favouriteFood = fields.ListField(fields.StringField()) # this field will require splitting into fruit and vegetables
    favouriteFruits = fields.ListField(fields.StringField())
    favouriteVegetables = fields.ListField(fields.StringField())

    KNOWN_FRUITS = ['apple', 'orange', 'banana', 'strawberry', 'cucumber']
    KNOWN_VEGGIES = ['beetroot', 'carrot', 'celery']

    @staticmethod
    def split_foods_into_fruits_and_vegetables(foods):
        """
        Take a list of foods and split into a list of fruits and a list of veggies.
        :param foods: list of foods
        :return: tuple containing list of ruits first, then veggies
        """
        fruits = [f for f in foods if f in Person.KNOWN_FRUITS]
        veggies = [f for f in foods if f in Person.KNOWN_VEGGIES]

        return (fruits, veggies)
class Chatbox(Document):
    title = fields.StringField(required=True)
    live_status = fields.BooleanField(default=False)
    owner_id = fields.IntField(required=False)
    created_on = fields.DateTimeField(default=datetime.datetime.now)
    updated_on = fields.DateTimeField(default=datetime.datetime.now)
    WIDGET_PUBLISH = {
        'UCS': 'Chatbox Under Constructions',
        'PUB': 'Chatbox Published',
    }
    publish_status = fields.StringField(max_length=3,
                                        choices=WIDGET_PUBLISH.keys(),
                                        default='UCS')
    preview_url = fields.URLField(required=False)
    components = fields.ListField(
        fields.EmbeddedDocumentField(ChatboxComponent), required=False)

    @property
    def chatbox_publish_status(self):
        return self.codes(self.publish_status)

    @classmethod
    def pre_save(cls, sender, document, **kwargs):
        document.updated_on = datetime.datetime.now()
Exemplo n.º 30
0
class JobItem(DynamicDocument):
    spider = fields.StringField(max_length=200, required=True)
    job = fields.StringField(max_length=200, required=True)
    url = fields.URLField()
    time = fields.DateTimeField()