Esempio n. 1
0
class MenloCourse(me.Document):
    '''MenloCourse objects are sourced from another website

    As such, they only have professor reviews. The course review
    EmbeddedDocument will always be the default CourseReview
    '''

    meta = {
        'indexes': [
            'course_id',
            'professor_id',
        ],
    }

    # id = me.ObjectIdField(primary_key=True)

    course_id = me.StringField(required=True)
    professor_id = me.StringField()

    course_review = me.EmbeddedDocumentField(review.CourseReview)
    professor_review = me.EmbeddedDocumentField(review.ProfessorReview)

    @classmethod
    def get_publicly_visible(cls, min_num_ucs=0, num_days=None):
        """Filter out stale MenloCourses that we don't want to display."""
        return util.publicly_visible_ratings_and_reviews_filter(
            cls.objects, get_user_course_modified_date, min_num_ucs, num_days)
Esempio n. 2
0
        class ComplexExclusionModel(CheckObj, Dictable, gj.Document):
            emb_docs_ex_to_json = db.ListField(
                db.EmbeddedDocumentField(EmbDoc), exclude_to_json=True)
            emb_docs_ex_from_json = db.ListField(
                db.EmbeddedDocumentField(EmbDoc), exclude_from_json=True)
            emb_docs_ex_json = db.ListField(db.EmbeddedDocumentField(EmbDoc),
                                            exclude_json=True)
            emb_doc = db.EmbeddedDocumentField(EmbDoc)

            @classmethod
            def generate_test_data(cls, prefix="", suffix=""):
                return cls(
                    emb_docs_ex_to_json=[
                        EmbDoc.generate_test_data(prefix=(
                            "{} (emb_docs_ex_to_json) ").format(prefix),
                                                  suffix=("{} {}").format(
                                                      suffix, counter))
                        for counter in range(3)
                    ],
                    emb_docs_ex_from_json=[
                        EmbDoc.generate_test_data(prefix=(
                            "{} (emb_docs_ex_from_json) ").format(prefix),
                                                  suffix=("{} {}").format(
                                                      suffix, counter))
                        for counter in range(3)
                    ],
                    emb_docs_ex_json=[
                        EmbDoc.generate_test_data(
                            prefix=("{} (emb_docs_ex_json) ").format(prefix),
                            suffix=("{} {}").format(suffix, counter))
                        for counter in range(3)
                    ],
                    emb_doc=EmbDoc.generate_test_data(
                        prefix=("{} (emb_dos) ").format(prefix),
                        suffix=("{}").format(suffix)))
Esempio n. 3
0
class Object(me.Document):
    '''In-world objects.'''
    name = me.StringField(default="")
    resource = me.StringField(default="")

    loc = me.EmbeddedDocumentField(
        IntVector)  # FIXME: Make this a floatvector.
    rot = me.EmbeddedDocumentField(FloatVector)
    scale = me.EmbeddedDocumentField(FloatVector)
    vel = me.EmbeddedDocumentField(FloatVector)

    states = me.ListField(me.StringField())
    physical = me.BooleanField(default=True)
    last_modified = me.DateTimeField(default=datetime.datetime.now)

    meta = {
        'indexes':
        ['last_modified', 'loc.x', 'loc.y', 'loc.z', 'states', 'physical'],
        'allow_inheritance':
        True,
    }

    def set_modified(self, date_time=None):
        if date_time is None:
            date_time = datetime.datetime.now()
        self.last_modified = date_time
        self.save()
Esempio n. 4
0
class EmbeddedInteraccion(mongoengine.EmbeddedDocument):
    idInteraccion = mongoengine.IntField(null=False)
    user = mongoengine.EmbeddedDocumentField(EmbeddedUser,
                                             default=EmbeddedUser())
    producto = mongoengine.EmbeddedDocumentField(EmbeddedProducto,
                                                 default=EmbeddedProducto())
    fecha = mongoengine.DateTimeField(default=timezone.now)
Esempio n. 5
0
class Role(mongoengine.Document):
    """角色的信息
    """
    openid = mongoengine.StringField(verbose_name="openID")
    nickname = mongoengine.StringField(verbose_name="用户昵称",default="")
    sex = mongoengine.IntField(verbose_name="性别,1m2f0u",default=1)
    profession = mongoengine.IntField(verbose_name="职业",default=0)
    level = mongoengine.IntField(verbose_name="等级",default=1)
    coin = mongoengine.IntField(verbose_name="铜钱",default=0)
    energy = mongoengine.IntField(verbose_name="体力",default=0)
    gold = mongoengine.IntField(verbose_name="元宝",default=0)
    exp = mongoengine.IntField(verbose_name="经验",default=0)
    energy_add_time = mongoengine.DateTimeField(verbose_name="上一次增加体力时间")
    energy_buytime = mongoengine.IntField(verbose_name="体力购买次数",default=1)
    plot = mongoengine.StringField(verbose_name="当前剧情",default="")
    scene = mongoengine.StringField(verbose_name="当前场景",default="")
    fam = mongoengine.StringField(verbose_name="当前副本",default="")
    famnode = mongoengine.StringField(verbose_name="当前节点",default="")
    clearance = mongoengine.ListField(mongoengine.EmbeddedDocumentField(Fam),verbose_name="副本记录")
    message = mongoengine.ListField(mongoengine.StringField(),verbose_name="消息记录")
    partners = mongoengine.ListField(mongoengine.IntField(),verbose_name="角色伙伴")
    formation = mongoengine.EmbeddedDocumentField(Formation,verbose_name="角色阵法")
    sign = mongoengine.EmbeddedDocumentField(Sign,verbose_name="签到")
    friendships = mongoengine.ListField(mongoengine.EmbeddedDocumentField(Friendship),verbose_name="伙伴友情")
    materials = mongoengine.ListField(mongoengine.EmbeddedDocumentField(Material),verbose_name="材料")
    subscribe_time = mongoengine.DateTimeField(verbose_name="入世时间")
    next_command = mongoengine.StringField(verbose_name="必要请求")
    prev_command = mongoengine.StringField(verbose_name="前一个状态")
    prev_objectid = mongoengine.IntField(verbose_name="操作对象的序号")
    prev_objectid2 = mongoengine.IntField(verbose_name="操作对象的序号")
Esempio n. 6
0
class Topic(me.Document):
    meta = {'collection': 'topics'}

    title = me.StringField(required=True)
    description = me.StringField(required=True)
    created_date = me.DateTimeField(required=True,
                                    default=datetime.datetime.now)
    updated_date = me.DateTimeField(required=True,
                                    default=datetime.datetime.now)
    published_date = me.DateTimeField()

    status = me.StringField(required=True, default='draft')
    """ status: draft, publish, delete """

    ip_address = me.StringField(max_length=100,
                                required=True,
                                default='0.0.0.0')

    author = me.ReferenceField("User", dbref=True, required=True)

    comments = me.ListField(me.EmbeddedDocumentField(Comment))
    tags = me.ListField(me.StringField(required=True), required=True)

    page = me.BooleanField(default=False, required=True)
    comments_disabled = me.BooleanField(default=False, required=True)

    histories = me.ListField(me.EmbeddedDocumentField(TopicHistory))
Esempio n. 7
0
class Contrato(mongoengine.Document):
    fechaCreacion = mongoengine.DateTimeField(default=datetime.now)

    activo = mongoengine.BooleanField(default=True)

    tipo = mongoengine.StringField()

    clienteId = mongoengine.StringField()
    productoId = mongoengine.StringField()

    correoVendedor = mongoengine.StringField()
    diasValidez = mongoengine.IntField()

    observaciones = mongoengine.StringField()

    pagosProgramados = mongoengine.ListField(mongoengine.EmbeddedDocumentField(PagoProgramado))
    pagosReales = mongoengine.ListField(mongoengine.EmbeddedDocumentField(PagoReal))

    def to_dict(self):
        return mongo_utils.mongo_to_dict_1(self)

    @mongoengine.queryset_manager
    def objects(doc_cls, queryset):
        return queryset.order_by('-fechaCreacion')

    meta = {
        'db_alias': 'core',
        'collection': 'contrato'
    }
Esempio n. 8
0
class Estabelecimento(db.Document):

    nome = db.StringField(max_length=50, required=True)
    telefone = db.StringField(max_length=20, required=True, unique=True)
    perfil_origem = StringEnumField(PerfilOrigemEnum)
    perfil_movimento = StringEnumField(PerfilMovimentacaoEnum)
    perfil_tipo = StringEnumField(PerfilTipoEnum)
    latitude = db.IntField(max_length=50, required=True, unique=True)
    longitude = db.IntField(max_length=50, required=True, unique=True)
    endereco = db.StringField(max_length=50, required=True)
    cnpj = db.StringField(max_length=50, required=True, unique=True)
    consumidores_visitados = db.IntField()
    google_rating = db.IntField()
    google_rating_total = db.IntField()
    regra_fumante = StringEnumField(RegraFumanteEnum)
    level_preco = db.IntField()
    qrcode_token = db.StringField(max_length=30, unique=True)
    vendas = db.IntField()
    create_at = db.DateTimeField()
    modified_at = db.DateTimeField(default=datetime.now)
    lista_consumidores = db.ListField(db.ReferenceField("Consumidor"))
    itens_vendidos = db.ListField(db.ReferenceField("Pagamento"))
    cupom = db.ListField(db.EmbeddedDocumentField("Cupom"))
    estoque = db.ListField(db.EmbeddedDocumentField("Estoque"))

    meta = {'ordering': ['create_at'], 'collection': 'estabelecimento'}
Esempio n. 9
0
class ReconConfModel(mongo.EmbeddedDocument):
    # {
    #     "do":true,
    #     "method":["subdomain", "dns", "path", "port", "crawl_target"],
    #     "subdomain":{
    #         "method":["search", "bruteforce"],
    #         "search":{
    #             "method":["name", "url"],
    #             "engine":["bing", "google"]
    #         },
    #     },
    #     "path":{
    #         "method":["bruteforce"],
    #     },
    #     "port":{
    #         "method":["syn"],
    #         "scanport":["80-82", 8000, "100-103"]
    #     },
    #     "crawl_target":{
    #         "medthod":["path", "subdomain", "image", "script_src", "script_inline"]
    #     }
    # }

    do = mongo.BooleanField(default=True, required=True)
    method = mongo.ListField(mongo.StringField(), default=["subdomain", "dns"])

    subdomain = mongo.EmbeddedDocumentField(ReconConf_SubdomainModel,
                                            default=ReconConf_SubdomainModel())
    path = mongo.EmbeddedDocumentField(ReconConf_PathModel,
                                       default=ReconConf_PathModel())
    port = mongo.EmbeddedDocumentField(ReconConf_PortModel,
                                       default=ReconConf_PortModel())
    crawl_target = mongo.EmbeddedDocumentField(
        ReconConf_CrawlTargetModel, default=ReconConf_CrawlTargetModel())
Esempio n. 10
0
class Event(me.Document):
    meta = {'collection': 'events'}

    topic = me.ReferenceField(Topic, required=True, dbref=True)
    status = me.StringField(required=True, default='draft')
    """ status: draft, publish, delete """

    started_date = me.DateTimeField(required=True,
                                    default=datetime.datetime.now)
    ended_date = me.DateTimeField(required=True, default=datetime.datetime.now)
    venue = me.StringField()

    all_day = me.BooleanField(required=True, default=False)
    repeat = me.EmbeddedDocumentField(RepeatableEvent)

    ip_address = me.StringField(max_length=100,
                                required=True,
                                default='0.0.0.0')

    author = me.ReferenceField("User", dbref=True, required=True)

    tags = me.ListField(me.StringField(required=True), required=True)
    event_type = me.StringField(required=True,
                                default='department',
                                choices=EVENT_TYPES)

    conference = me.EmbeddedDocumentField(ConferenceEvent)

    def is_repeatable(self):
        repeat = False
        if self.repeat is not None:
            repeat = True

        return repeat
Esempio n. 11
0
class Reporter(mongoengine.Document):

    meta = {'collection': 'test_reporter'}
    id = mongoengine.StringField(primary_key=True)
    first_name = mongoengine.StringField(required=True)
    last_name = mongoengine.StringField(required=True)
    email = mongoengine.EmailField()
    awards = mongoengine.ListField(mongoengine.StringField())
    articles = mongoengine.ListField(mongoengine.ReferenceField(Article))
    embedded_articles = mongoengine.ListField(
        mongoengine.EmbeddedDocumentField(EmbeddedArticle))
    embedded_list_articles = mongoengine.EmbeddedDocumentListField(
        EmbeddedArticle)
    id = mongoengine.StringField(primary_key=True)
    first_name = mongoengine.StringField(required=True)
    last_name = mongoengine.StringField(required=True)
    email = mongoengine.EmailField()
    awards = mongoengine.ListField(mongoengine.StringField())
    articles = mongoengine.ListField(mongoengine.ReferenceField(Article))
    embedded_articles = mongoengine.ListField(
        mongoengine.EmbeddedDocumentField(EmbeddedArticle))
    embedded_list_articles = mongoengine.EmbeddedDocumentListField(
        EmbeddedArticle)
    generic_reference = mongoengine.GenericReferenceField(choices=[
        Article,
        Editor,
    ])
Esempio n. 12
0
class Equipment(mongoengine.Document):
    """装备信息
    """
    openid = mongoengine.StringField(verbose_name="openID")
    weapon = mongoengine.EmbeddedDocumentField(EquipAttr, verbose_name="武器")
    jacket = mongoengine.EmbeddedDocumentField(EquipAttr, verbose_name="上衣")
    belt = mongoengine.EmbeddedDocumentField(EquipAttr, verbose_name="腰带")
Esempio n. 13
0
class RideOffer(mdb.Document):
    '''
    RideOffer models an offer for a ride from a Driver, looking for Passengers.

    '''
    driver = mdb.ReferenceField(UserProfile)
    passengers = mdb.ListField(mdb.ReferenceField('UserProfile'))
    start = mdb.EmbeddedDocumentField(Location)
    end = mdb.EmbeddedDocumentField(Location)
    message = mdb.StringField()
    date = mdb.DateTimeField()
    fuzziness = mdb.StringField( default="1-hours" )
    # N.B.: This is unused. Could be a feature in the future
    repeat = mdb.StringField()

    # Holds those who are asking for rides (but have not yet been accepted/declined)
    askers = mdb.ListField( mdb.ReferenceField('RideRequest') )
    # Whether or not this trip has taken place already
    completed = mdb.BooleanField(default=False)
    # Stores the polygon over the driver's route from start --> end
    polygon = mdb.ListField(mdb.GeoPointField())

    meta = { "indexes" : ["*start.position", "*end.position"] }

    def time( self ):
        return self.date.strftime("%m/%d/%Y at %I:%M %p")

    def __unicode__( self ):
        return "from {} to {} on {}".format( self.start, self.end, self.time() )
Esempio n. 14
0
class RideRequest(mdb.Document):
    '''
    RideRequest models a request for a ride from a Passenger, looking for a Driver.
    '''
    passenger = mdb.ReferenceField('UserProfile')
    start = mdb.EmbeddedDocumentField( Location )
    end = mdb.EmbeddedDocumentField( Location )
    message = mdb.StringField()
    date = mdb.DateTimeField()
    # Holds those who are proposing rides (but have not yet been accepted/declined)
    askers = mdb.ListField( mdb.ReferenceField('RideOffer') )
    # Possible values for fuzziness:
    # 1. +/- an hour (default)  "1-hours"
    # 2. +/- 2 hours            "2-hours"
    # 3. +/- 3 hours            "3-hours"
    # 4. +/- 4 hours            ...
    # 5. +/- 5 hours
    # 6. +/- a day              "day"
    # 7. +/- a week             "week"
    # 8. anytime                "anytime"
    fuzziness = mdb.StringField( default="1-hours" )
    # N.B.: This is unused. Could be a feature in the future
    repeat = mdb.StringField()
    ride_offer = mdb.ReferenceField('RideOffer')

    meta = { "indexes" : ["*start.position", "*end.position"] }

    def time( self ):
        return self.date.strftime("%m/%d/%Y at %I:%M %p")

    def __unicode__( self ):
        return "from {} to {} on {}".format( self.start, self.end, self.time() )
Esempio n. 15
0
class ServicePlansDoc(me.Document):
    name = me.StringField()
    description = me.StringField()
    codeMangagement = me.EmbeddedDocumentField(CodeManagement)
    collabration = me.EmbeddedDocumentField(Collabration)
    priceTag = me.EmbeddedDocumentField(PriceTag)
    paymentPlan = me.EmbeddedDocumentField(PaymentPlan)
    reachoutPlan = me.EmbeddedDocumentField(ReachoutPlan)
Esempio n. 16
0
class Source(mongoengine.Document):
    source_name = mongoengine.StringField()
    source_uri = mongoengine.EmbeddedDocumentField(SourceUri)
    country_available = mongoengine.ListField()
    conditions = mongoengine.EmbeddedDocumentField(Conditions)
    update_at = mongoengine.DateTimeField(default=datetime.datetime.now)

    meta = {'db_alias': 'core', 'collection': 'sources'}
Esempio n. 17
0
class PhotoAlbum(me.Document):
    meta = {'collection': 'photo_albums'}

    name = me.StringField(required=True)
    description = me.StringField(default='')
    event_date = me.DateTimeField()
    shared = me.BooleanField(required=True, default=False)

    photos = me.ListField(me.EmbeddedDocumentField(Photo))
    status = me.StringField(required=True, default='draft')
    """ status: draft, publish, delete """

    created_date = me.DateTimeField(required=True,
                                    default=datetime.datetime.now)
    published_date = me.DateTimeField(required=True,
                                      default=datetime.datetime.now)
    updated_date = me.DateTimeField(required=True,
                                    default=datetime.datetime.now)

    comments = me.ListField(me.EmbeddedDocumentField(forums.Comment))

    user = me.ReferenceField("User", dbref=True, required=True)

    def get_photo(self, photo_id):
        for photo in self.photos:
            image = photo.image if photo.image.get(
            ) is not None else photo.vimage

            if image.filename == photo_id:
                return photo

            if str(photo.id) == photo_id:
                return photo

    def get_photo_index(self, photo_id):
        this_photo = None
        for i in range(0, len(self.photos)):
            photo = self.photos[i]
            image = photo.image if photo.image.get(
            ) is not None else photo.vimage
            try:
                if image.filename == photo_id:
                    this_photo = photo
            except:
                pass
            if str(photo.id) == photo_id:
                this_photo = photo

            if this_photo is not None:
                previous_ = None
                next_ = None

                if i - 1 >= 0:
                    previous_ = self.photos[i - 1]
                if i + 1 < len(self.photos):
                    next_ = self.photos[i + 1]

                return this_photo, previous_, next_
Esempio n. 18
0
class ComputeNode(me.Document):
    meta = {'collection': 'compute_nodes'}

    name = me.StringField(max_length=100, required=True)
    ip = me.StringField(max_length=100, required=True, index=True)
    mac = me.StringField(max_length=100, required=True, index=True)

    machine_specification = me.EmbeddedDocumentField(MachineSpecification)

    resource_records = me.ListField(me.EmbeddedDocumentField(ResourceUsage))

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

    updated_resource_date = me.DateTimeField(required=True,
                                             default=datetime.datetime.now)

    extra = me.DictField()

    def is_online(self):
        delta = datetime.timedelta(minutes=1)
        now = datetime.datetime.now()

        if self.updated_resource_date > now - delta:
            resource = self.get_current_resources()
            if resource is None:
                return False

            if resource.cpu.used > 0 or resource.memory.used > 0:
                return True

        return False

    def get_current_resources(self):
        if len(self.resource_records) == 0:
            return None

        return self.resource_records[-1]

    def push_resource(self, resource_usage):
        while len(self.resource_records) > MAX_RECORD:
            self.resource_records.pop(0)

        self.resource_records.append(resource_usage)

    def push_responsed_date(self, added_date=None):
        if 'responsed_date' not in self.extra:
            self.extra['responsed_date'] = list()

        while (len(self.extra['responsed_date']) > MAX_RECORD):
            self.extra['responsed_date'].pop(0)

        if added_date is None:
            added_date = datetime.datetime.now()

        self.extra['responsed_date'].append(added_date)
Esempio n. 19
0
class ProjectDoc(me.Document):
    createdDate = me.DateField()
    updatedDate = me.DateField()
    status = me.IntField()
    headline = me.StringField()
    payStatus = me.EmbeddedDocumentField(PayStatus)
    trackStatus = me.EmbeddedDocumentField(TrackStatus)
    contract = me.EmbeddedDocumentField(Contract)
    workSite = me.EmbeddedDocumentField(WorkSite)
Esempio n. 20
0
class RequestPostDoc(me.Document):
    posterId = me.StringField()
    status = me.IntField()  # 0 -- draft 1 -- published
    createdDate = me.DateTimeField()
    updatedDate = me.DateTimeField()
    statueUpdatedDate = me.DateTimeField()
    description = me.EmbeddedDocumentField(RequestDescription)
    notes = me.EmbeddedDocumentField(RequestNotes)
    quotes = me.ListField(StringField())
Esempio n. 21
0
class Project(mongo.Document):
    """
    A class used to represent an EDA project 
    """
    name = mongo.StringField(required=True, primary_key=True)
    description = mongo.StringField(max_length=100)
    technology = mongo.EmbeddedDocumentField(Technology)
    design = mongo.EmbeddedDocumentField(Design)
    flows = mongo.ListField(mongo.EmbeddedDocumentField(Flow))
Esempio n. 22
0
class TraceDB(stormbase.StormFoundationDB):
    """
    Trace is a collection of all TriggerInstances, Rules and ActionExecutions
    that represent an activity which begins with the introduction of a
    TriggerInstance or request of an ActionExecution and ends with the
    completion of an ActionExecution. Given the closed feedback look sort of
    nature of StackStorm this implies a Trace can comprise of multiple
    TriggerInstances, Rules and ActionExecutions.

    :param trace_tag: A user specified reference to the trace.

    :param trigger_instances: TriggerInstances associated with this trace.

    :param rules: Rules associated with this trace.

    :param action_executions: ActionExecutions associated with this trace.
    """
    trace_tag = me.StringField(
        required=True, help_text='A user specified reference to the trace.')
    trigger_instances = me.ListField(
        field=me.EmbeddedDocumentField(TraceComponentDB),
        required=False,
        help_text='Associated TriggerInstances.')
    rules = me.ListField(field=me.EmbeddedDocumentField(TraceComponentDB),
                         required=False,
                         help_text='Associated Rules.')
    action_executions = me.ListField(
        field=me.EmbeddedDocumentField(TraceComponentDB),
        required=False,
        help_text='Associated ActionExecutions.')
    start_timestamp = ComplexDateTimeField(
        default=date_utils.get_datetime_utc_now,
        help_text='The timestamp when the Trace was created.')

    meta = {
        'indexes': [
            {
                'fields': ['trace_tag']
            },
            {
                'fields': ['start_timestamp']
            },
            {
                'fields': ['action_executions.object_id']
            },
            {
                'fields': ['trigger_instances.object_id']
            },
            {
                'fields': ['rules.object_id']
            },
            {
                'fields': ['-start_timestamp', 'trace_tag']
            },
        ]
    }
Esempio n. 23
0
class Pokemon(me.Document):
    base_experience = me.IntField(required=True)
    height = me.IntField(required=True)
    id = me.IntField(me_field='id', primary_key=True)
    name = me.StringField(unique=True, required=True)
    sprites = me.EmbeddedDocumentField(Sprite)
    weight = me.IntField(required=True)
    encounters = me.ListField(me.EmbeddedDocumentField(Encounter))

    meta = {"db_alias": "pokemon_api", 'collection': 'pokemon'}
Esempio n. 24
0
class Streamer(mongodb.Document):
    name = mongodb.StringField(required=True)
    channel_id = mongodb.StringField(required=True, unique=True)
    first_bonus = mongodb.IntField(default=1)
    points = mongodb.IntField(default=1)
    commands = mongodb.ListField(mongodb.EmbeddedDocumentField(Command))
    participants = mongodb.ListField(mongodb.EmbeddedDocumentField(Participant))
    whitelist = mongodb.ListField(mongodb.EmbeddedDocumentField(WhitelistUser))
    blacklist = mongodb.ListField(mongodb.EmbeddedDocumentField(BlacklistUser))
    sessions = mongodb.ListField(mongodb.EmbeddedDocumentField(Session))
Esempio n. 25
0
class User(BaseDocument):
    role = mongoengine.StringField(choices=USER_ROLE, default='user')
    username = mongoengine.StringField(unique=True)
    password = mongoengine.StringField(min_length=8,
                                       validation=validate_password)
    data = mongoengine.EmbeddedDocumentField(UserData)
    settings = mongoengine.EmbeddedDocumentField(UserSettings)
    parameters = mongoengine.EmbeddedDocumentField(UserParameters)

    def save(self, new_password_check: bool = False, *args, **kwargs):
        errors = validate_new_password(self, new_password_check)
        super().save(errors=errors)

    @staticmethod
    def get_unique_fields():
        return ['username', 'data__phone', 'data__email']

    # Generate hash from password by encryption using sha256
    @staticmethod
    def generate_hash(password):
        return sha256.hash(password)

    # Verify hash and password
    @staticmethod
    def verify_hash(password, hash_):
        return sha256.verify(password, hash_)

    @classmethod
    def generate_random_user(cls):
        random_name = requests.get(
            "https://randomuser.me/api/?nat=gb&inc=name")
        login = f'user{random.randint(100000, 999999)}'

        user_data = UserData(
            phone=f'{random.randint(100000000, 999999999)}',
            fname=json.loads(random_name.text)['results'][0]['name']['first'],
            lname=json.loads(random_name.text)['results'][0]['name']['last'],
            email=f'{login}@email.com',
            age=f'{random.randint(20, 70)}',
        )
        user_settings = UserSettings(newsletter=False)
        user_parameters = UserParameters(
            email_verified=True,
            email_verification_string='emailverificationstring',
        )
        user = cls(
            role='user',
            username=login,
            password='******',
            data=user_data,
            settings=user_settings,
            parameters=user_parameters,
        )

        return user
Esempio n. 26
0
File: rule.py Progetto: tzmvp/st2
class RuleDB(stormbase.StormFoundationDB, stormbase.TagsMixin,
             stormbase.ContentPackResourceMixin, stormbase.UIDFieldMixin):
    """Specifies the action to invoke on the occurrence of a Trigger. It
    also includes the transformation to perform to match the impedance
    between the payload of a TriggerInstance and input of a action.
    Attribute:
        trigger: Trigger that trips this rule.
        criteria:
        action: Action to execute when the rule is tripped.
        status: enabled or disabled. If disabled occurrence of the trigger
        does not lead to execution of a action and vice-versa.
    """
    RESOURCE_TYPE = ResourceType.RULE
    UID_FIELDS = ['pack', 'name']

    name = me.StringField(required=True)
    ref = me.StringField(required=True)
    description = me.StringField()
    pack = me.StringField(required=False,
                          help_text='Name of the content pack.',
                          unique_with='name')
    type = me.EmbeddedDocumentField(RuleTypeSpecDB, default=RuleTypeSpecDB())
    trigger = me.StringField()
    criteria = stormbase.EscapedDictField()
    action = me.EmbeddedDocumentField(ActionExecutionSpecDB)
    context = me.DictField(default={}, help_text='Contextual info on the rule')
    enabled = me.BooleanField(
        required=True,
        default=True,
        help_text=u'Flag indicating whether the rule is enabled.')

    meta = {
        'indexes': [
            {
                'fields': ['enabled']
            },
            {
                'fields': ['action.ref']
            },
            {
                'fields': ['trigger']
            },
            {
                'fields': ['context.user']
            },
        ] + (stormbase.ContentPackResourceMixin.get_indexes() +
             stormbase.TagsMixin.get_indexes() +
             stormbase.UIDFieldMixin.get_indexes())
    }

    def __init__(self, *args, **values):
        super(RuleDB, self).__init__(*args, **values)
        self.ref = self.get_reference().ref
        self.uid = self.get_uid()
class PortfolioItem(me.EmbeddedDocument):
    _id = me.ObjectIdField(required=True, default=ObjectId)
    item_type = me.StringField(choices=const.item_types)
    title = me.StringField()
    description = me.StringField()
    file = me.EmbeddedDocumentField(File)

    # The given portfolio item types should only have 1 present, and the type will be loaded based on the item_type
    repo = me.EmbeddedDocumentField(Repo)
    image = me.EmbeddedDocumentField(File)
    youtube = me.URLField()
Esempio n. 28
0
class User(gj.Document):
    meta = {'queryset_class': fm.BaseQuerySet}

    uid = db.StringField()
    nick_name = db.StringField()
    sex = db.StringField()
    birthed_at = db.LongField()
    height = db.IntField()
    body_id = db.IntField()
    occupation = db.StringField()
    education = db.StringField()
    religion_id = db.IntField()
    drink_id = db.IntField()
    smoking_id = db.IntField()
    blood_id = db.IntField()
    r_token = db.StringField()
    location = db.PointField()
    introduction = db.StringField()
    joined_at = db.LongField()
    last_login_at = db.LongField()
    job = db.StringField()
    area = db.StringField()
    phone = db.StringField()
    user_images = db.SortedListField(db.EmbeddedDocumentField(UserImage),
                                     ordering="index")
    user_images_temp = db.SortedListField(db.EmbeddedDocumentField(UserImage),
                                          ordering="index")
    charm_ids = db.ListField(db.IntField())
    ideal_type_ids = db.ListField(db.IntField())
    interest_ids = db.ListField(db.IntField())

    available = db.BooleanField(default=False)
    status = db.IntField(default=0)  # -10, 0, 10

    @property
    def posts(self):
        posts = Post.objects(author=self).order_by("-created_at").all()
        for post in posts:
            post.favorite_users = []
            post.comments.sort(key=lambda x: x.created_at, reverse=True)
        return posts

    def list_requests_like_me(self, response=None):
        return Request.objects(user_to=self, response=response).all()

    def list_requests_i_like(self, response=None):
        return Request.objects(user_from=self, response=response).all()

    def list_chat_rooms(self):
        return ChatRoom.objects(members=self).all()

    def list_users_rated_me_high(self):
        star_ratings = StarRating.objects(user_to=self, score__gte=4).all()
        return [star_rating.user_from for star_rating in star_ratings]
Esempio n. 29
0
class UserBusinessModel(me.Document):
    # Owner
    user = me.ReferenceField(Users)

    business_type_choices = ['laundries', 'self_machines']
    business_type = me.StringField(choices=business_type_choices)

    # laundries: Branches information.
    branches = me.ListField(me.EmbeddedDocumentField(LaundryBranchesEmbedded))
    # self_machines: Washing machine information
    self_machines = me.ListField(
        me.EmbeddedDocumentField(SelfMachinesEmbedded))
Esempio n. 30
0
File: db.py Progetto: FilArt/taxibot
class Driver(me.Document):
    name = me.StringField(required=True, max_length=20)
    surname = me.StringField(required=True)
    patronymic = me.StringField(required=False, max_length=20)
    phone = me.StringField(required=True, max_length=20, unique=True)
    status = me.EmbeddedDocumentField(DriverStatus)
    tg = me.EmbeddedDocumentField(DriverTG)
    lunch_count = me.IntField(default=0, min_value=0, max_value=5)
    last_lunch_request_time = me.DateTimeField()

    def __str__(self):
        return f'{self.name} {self.surname}'

    def add_tg_info(self, tg_name: str, tg_id: int):
        self.tg = DriverTG(name=tg_name, id=tg_id)
        self.save()

    @property
    def tg_id(self):
        return self.tg.id if self.tg else None

    @property
    def tg_name(self):
        return self.tg.name if self.tg else None

    @property
    def busy(self):
        return self.status.value.lower() in ("занят", "busy")

    @classmethod
    def from_driver_info(cls, driver_info: dict) -> "Driver":
        result = cls.objects.filter(
            **{k: v
               for k, v in driver_info.items() if k != "status"})
        if result:
            result = result[0]
            status = driver_info["status"]
            result.status = DriverStatus(
                **status) if status else DriverStatus()
            return result
        result = cls(**driver_info)
        return result

    def to_dict(self):
        return {
            "name": self.name,
            "surname": self.surname,
            "phone": self.phone,
            "patronymic": self.patronymic,
            "tg_id": self.tg.id if self.tg else None,
            "tg_name": self.tg.name if self.tg else None,
        }