Exemplo n.º 1
0
class UserModel(db.Document):

    first_name = db.StringField(required=True)
    last_name = db.StringField(required=True)
    email_address = db.EmailField(required=True, unique=True)
    password = db.StringField(required=True)
    organizations_following = db.ListField(default=[])
    users_following = db.ListField(default=[])
    services = db.ListField(default=[])

    meta = {'collection': 'users'}

    def json(self):
        return json.loads(self.to_json())

    def save_to_db(self):
        self.save()

    def delete_from_db(self):
        self.delete()

    def add_service(self, service_object):
        self.services.append(service_object)

    def follow_organization(self, organization_object):
        self.organizations_following.append(organization_object)

    def follow_user(self, user_object):
        self.users_following.append(user_object)

    @classmethod
    def find_by_email(cls, email_address):
        return UserModel.objects(email_address=email_address).first()
Exemplo n.º 2
0
Arquivo: user.py Projeto: Y1Liu/PFP
 def __init__(self, email, password, nom, prenom, rue, cp, ville, tags):
     self.email = db.EmailField(max_length=30)
     self.password = db.StringField(max_length=100)
     self.nom = db.StringField(max_length=30)
     self.prenom = db.StringField(max_length=30)
     self.rue = db.StringField(max_length=30)
     self.cp = db.StringField(max_length=30)
     self.ville = db.StringField(max_length=30)
     self.tags = db.ListField(max_length=30)
Exemplo n.º 3
0
class User(db.Document):
    name = db.StringField(required=True)
    email = db.EmailField(required=True, unique=True, min_length=6)
    password = db.StringField(required=True, min_length=6)
    profile_pic = db.StringField(default="")
    list_of_products = db.ListField(db.ReferenceField('List', reverse_delete_rule=db.PULL))
    friends = db.ListField()

    def hash_password(self):
        self.password = generate_password_hash(self.password).decode('utf8')

    def check_password(self, password):
        return check_password_hash(self.password, password)    
Exemplo n.º 4
0
class SuperAdmin(db.Document, UserMixin):
    email = db.EmailField()
    password = db.StringField()
    active = db.BooleanField(default=True)
    confirmed_at = db.DateTimeField()
    created = db.DateTimeField(default=datetime.now)
    updated = db.DateTimeField(default=datetime.now)

    meta = {'strict': False}

    def encrypt_password(self, password_to_encrypt):
        self.password = hash_password(password_to_encrypt)

    def check_password(self, password_to_check):
        return verify_password(self.password, str(password_to_check).strip())
Exemplo n.º 5
0
class User(db.Document):
    meta = {"collection": "users", "queryset_class": MyQuerySet}

    email = db.EmailField(required=True, unique=True)
    password = db.StringField(required=True)
    role = db.StringField(required=True, choices=("user", "admin"))

    def to_json(self):
        data = self.to_mongo()
        del data["password"]
        return json_util.dumps(data)

    def hashPassword(self):
        self.password = generate_password_hash(self.password).decode("utf8")

    def checkPassword(self, password):
        return check_password_hash(self.password, password)
Exemplo n.º 6
0
class User(db.Document, BaseMixin):
    name = db.StringField(min_length=2, max_length=25)
    email = db.EmailField(unique=True)
    password = db.StringField(min_length=5, max_length=1024)

    def __repr__(self):
        return f"<User (name={self.name}, email={self.email})>"

    def __str__(self):
        return f"{self.name} - {self.email}"

    def generate_jwt_token(self):
        identity = dumps({
            "id": str(self.id),
            "name": self.name,
            "email": self.email,
        })
        return {
            "access_token": create_access_token(identity, fresh=True),
            "refresh_token": create_refresh_token(identity)
        }
Exemplo n.º 7
0
class Alumno(gj.Document, UserMixin):
    nombres = db.StringField()
    apellido_paterno = db.StringField(max_length=20)
    apellido_materno = db.StringField(max_length=20)
    email = db.EmailField()
    telefono = db.StringField(max_length=20)
    nombre_usuario = db.StringField(max_length=20)
    password = db.StringField(max_length=255)
    matricula = db.StringField(max_length=20)
    institucion = db.ReferenceField(Institucion)
    grado = db.ReferenceField(Grado)
    imagen = db.StringField()
    activo = db.BooleanField(default=True)
    primera_vez = db.BooleanField(default=True)
    meta = {'strict': False}

    def __str__(self):
        return self.nombres

    def to_dict(self):
        if self.grado == None:
            return {
                "id": str(self.id),
                "nombres": self.nombres,
                "apellido_paterno": self.apellido_paterno,
                "apellido_materno": self.apellido_materno,
                "email": self.email,
                "telefono": self.telefono,
                "nombre_usuario": self.nombre_usuario,
                "matricula": self.matricula,
                #"grado": self.grado.to_dict(),
                "imagen": self.imagen,
                "activo": self.activo,
                "primera_vez": self.primera_vez
            }
        else:
            return {
                "id": str(self.id),
                "nombres": self.nombres,
                "apellido_paterno": self.apellido_paterno,
                "apellido_materno": self.apellido_materno,
                "email": self.email,
                "telefono": self.telefono,
                "nombre_usuario": self.nombre_usuario,
                "matricula": self.matricula,
                "grado": self.grado.to_dict(),
                "imagen": self.imagen,
                "activo": self.activo,
                "primera_vez": self.primera_vez
            }

    def encrypt_password(self, password_to_encrypt):
        self.password = generate_password_hash(password_to_encrypt)

    def check_password(self, password_to_check):
        return check_password_hash(self.password,
                                   str(password_to_check).strip())

    @classmethod
    def get_by_email_or_username(cls, email_or_usernmane):
        text_id = email_or_usernmane.lower()
        if '@' in text_id:
            return cls.objects.filter(email=text_id).first()
        return cls.objects.filter(username=text_id).first()

    @classmethod
    def get_by_id(cls, user_id):
        return cls.objects(id=user_id).first()

    # token alive 10 hours
    def get_token(self, seconds_live=36000):
        token = Serializer(current_app.config.get("TOKEN_SALT"),
                           expires_in=seconds_live)
        return str(token.dumps({'id': str(self.id)}))

    @classmethod
    def load_from_token(cls, token):
        s = Serializer(current_app.config.get("TOKEN_SALT"))
        if token[0:2] == "b'" and token[-1:] == "'":
            token = token[2:-1]
        try:
            data = s.loads(token)
            return cls.get_by_id(data['id'])
        except SignatureExpired:
            # the token has ben expired
            return None
        except BadSignature:
            # the token ist'n valid
            return None
Exemplo n.º 8
0
class Email(db.Document):
    # metadata
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    # account data
    address = db.EmailField(required=True, unique=True)
    email_list = db.StringField(max_length=255, required=True)
Exemplo n.º 9
0
class Profesor(gj.Document):
    nombres = db.StringField(max_length=20)
    apellido_paterno = db.StringField(max_length=20)
    apellido_materno = db.StringField(max_length=20)
    email = db.EmailField()
    telefono = db.StringField(max_length=12)
    password = db.StringField()
    password_provisoria = db.StringField(default="no disponible")
    direccion = db.EmbeddedDocumentField(Direccion)
    rut = db.StringField(max_length=10)
    asignatura = db.ReferenceField(Asignatura)
    imagen = db.StringField()
    activo = db.BooleanField(default=True)
    meta = {'strict': False}

    def to_dict(self):
        return {
            "id": str(self.id),
            "nombres": self.nombres,
            "apellido_paterno": self.apellido_paterno,
            "apellido_materno": self.apellido_materno,
            "email": self.email,
            "telefono": self.telefono,
            "password": self.password,
            "direccion": self.direccion.to_dict(),
            "rut": self.rut,
            "asignatura": self.asignatura.to_dict(),
            "imagen": self.imagen
        }

    def encrypt_password(self, password_to_encrypt):
        self.password = generate_password_hash(password_to_encrypt)

    def check_password(self, password_to_check):
        print(check_password_hash(self.password, str(password_to_check)))
        return check_password_hash(self.password, str(password_to_check))

    @classmethod
    def get_by_email_or_username(cls, email_or_usernmane):
        text_id = email_or_usernmane.lower()
        if '@' in text_id:
            return cls.objects.filter(email=text_id).first()
        return cls.objects.filter(username=text_id).first()

    @classmethod
    def get_by_id(cls, user_id):
        return cls.objects(id=user_id).first()

    # token alive 10 hours
    def get_token(self, seconds_live=36000):
        token = Serializer(current_app.config.get("TOKEN_KEY"),
                           expires_in=seconds_live)
        return str(token.dumps({'id': str(self.id)}))

    @classmethod
    def load_from_token(cls, token):
        s = Serializer(current_app.config.get("TOKEN_KEY"))
        if token[0:2] == "b'" and token[-1:] == "'":
            token = token[2:-1]
        try:
            data = s.loads(token)
            return cls.get_by_id(data['id'])
        except SignatureExpired:
            # the token has ben expired
            return None
        except BadSignature:
            # the token ist'n valid
            return None
        return None

    @classmethod
    def create_provisional_pass(cls, user_mail, provisional_pass):
        admin = cls.get_by_email_or_username(user_mail)
        admin.password_provisoria = provisional_pass
        admin.save()
        return 'hecho'
Exemplo n.º 10
0
class Apoderado(gj.Document):
    nombres = db.StringField()
    apellido_paterno = db.StringField(max_length=20)
    apellido_materno = db.StringField(max_length=20)
    email = db.EmailField()
    telefono = db.StringField(max_length=12)
    password = db.StringField()
    password_provisoria = db.StringField(default="no disponible")
    direccion = db.EmbeddedDocumentField(Direccion)
    rut = db.StringField(max_length=10)
    alumno = db.ReferenceField(Alumno)
    imagen = db.StringField()
    activo = db.BooleanField(default=True)
    meta = {'strict': False}

    def __str__(self):
        return self.nombres

    def to_dict(self):
        return {
            "id": str(self.id),
            "nombres": self.nombres,
            "apellido_paterno": self.apellido_paterno,
            "apellido_materno": self.apellido_materno,
            "email": self.email,
            "telefono": self.telefono,
            "direccion": self.direccion.to_dict(),
            "rut": self.rut,
            "alumno": self.alumno.to_dict(),
            "imagen": self.imagen
        }

    def encrypt_password(self, password_to_encrypt):
        self.password = generate_password_hash(password_to_encrypt)

    def check_password(self, password_to_check):
        print(check_password_hash(self.password, str(password_to_check)))
        return check_password_hash(self.password, str(password_to_check))

    @classmethod
    def get_by_email_or_username(cls, email_or_usernmane):
        text_id = email_or_usernmane.lower()
        if '@' in text_id:
            return cls.objects.filter(email=text_id).first()
        return cls.objects.filter(username=text_id).first()

    @classmethod
    def get_by_id(cls, user_id):
        return cls.objects(id=user_id).first()
    # token alive 10 hours

    def get_token(self, seconds_live=36000):
        token = Serializer(current_app.config.get("TOKEN_KEY"),
                           expires_in=seconds_live)
        return str(token.dumps({'id': str(self.id)}))

    @classmethod
    def load_from_token(cls, token):
        s = Serializer(current_app.config.get("TOKEN_KEY"))
        if token[0:2] == "b'" and token[-1:] == "'":
            token = token[2:-1]
        try:
            data = s.loads(token)
            return cls.get_by_id(data['id'])
        except SignatureExpired:
            # the token has ben expired
            return None
        except BadSignature:
            # the token ist'n valid
            return None
        return None

    @classmethod
    def create_layout_excel(cls):
        headers = ["RUT", "Nombres", "Apellido Paterno", "Apellido Materno", "Email",
                   "Telefono", "Calle", "Numero", "Comuna", "Villa/Depto", "RUN Alumno"]
        result_list = [Alumno.export_to_excel()]
        return create_excel(result_list, headers, "Formato_apoderados")

    # TODO: validar que el rut del alumno sea valido, el rut apoderado y correo con formato correo
    @classmethod
    def create_from_excel(cls, list_rows):
        error_list = [["RUT", "Nombres", "Apellido Paterno", "Apellido Materno", "Email",
                       "Telefono", "Calle", "Numero", "Comuna", "Villa/Depto", "RUN Alumno", "Error"]]
        for apoderado in list_rows:
            apoderado = list(apoderado)
            print(apoderado)
            rut = str(apoderado[0])
            if(rut != "None" and validar_rut(rut)):

                rut_alumno = str(apoderado[10])
                if(rut_alumno != "None" and validar_rut(rut_alumno)):
                    alumno = Alumno.objects(rut=str(rut_alumno)).first()
                    if(alumno == None):
                        apoderado.append("Alumno no existe")
                        error_list.append(apoderado)
                        continue
                else:
                    apoderado.append("RUT del alumno no es valido")
                    error_list.append(apoderado)
                    continue

                if(apoderado[4] == "None" or not(es_correo_valido(apoderado[4]))):
                    apoderado.append("Correo ingresado no es valido")
                    error_list.append(apoderado)
                    continue

                direccion = Direccion(calle=apoderado[6], numero=str(
                    apoderado[7]), comuna=apoderado[8], cas_dep_of=apoderado[9])
                apoderadoNuevo = Apoderado(rut=str(apoderado[0]),
                                           nombres=apoderado[1],
                                           apellido_paterno=apoderado[2],
                                           apellido_materno=apoderado[3],
                                           email=apoderado[4],
                                           telefono=str(apoderado[5]),
                                           direccion=direccion, alumno=alumno, imagen="default")
                apoderadoNuevo.encrypt_password(str(apoderado[0]))
                apoderadoNuevo.save()
            else:
                apoderado.append("RUT invalido")
                error_list.append(apoderado)
        if(len(error_list) > 1):
            return write_error(error_list, "errores")
        return "hecho"

    @classmethod
    def create_provisional_pass(cls, user_mail, provisional_pass):
        admin = cls.get_by_email_or_username(user_mail)
        admin.password_provisoria = provisional_pass
        admin.save()
        return 'hecho'
Exemplo n.º 11
0
class Alumno(gj.Document):
    nombres = db.StringField()
    apellido_paterno = db.StringField(max_length=20)
    apellido_materno = db.StringField(max_length=20)
    email = db.EmailField()
    telefono = db.StringField()
    password = db.StringField()
    password_provisoria = db.StringField(default="no disponible")
    direccion = db.EmbeddedDocumentField(Direccion)
    colegio = db.ReferenceField(Colegio)
    rut = db.StringField()
    sexo = db.StringField(choices=TIPOS_SEXOS)
    puntaje_ingreso = db.IntField()
    curso = db.ReferenceField(Curso)
    imagen = db.StringField()
    activo = db.BooleanField(default=True)
    meta = {'strict': False}

    def __str__(self):
        return self.nombres

    def to_dict(self):
        return {
            "id": str(self.id),
            "nombres": self.nombres,
            "apellido_paterno": self.apellido_paterno,
            "apellido_materno": self.apellido_materno,
            "email": self.email,
            "telefono": self.telefono,
            "colegio": self.colegio.to_dict(),
            "direccion": self.direccion.to_dict(),
            "sexo": self.sexo,
            "puntaje_ingreso": self.puntaje_ingreso,
            "curso": self.curso.to_dict(),
            "rut": self.rut,
            "imagen": self.imagen
        }

    def to_excel(self):
        return [
            self.rut, self.nombres, self.apellido_paterno,
            self.apellido_materno
        ]

    def encrypt_password(self, password_to_encrypt):
        self.password = generate_password_hash(password_to_encrypt)

    def check_password(self, password_to_check):
        print(check_password_hash(self.password, str(password_to_check)))
        return check_password_hash(self.password, str(password_to_check))

    @classmethod
    def get_by_email_or_username(cls, email_or_usernmane):
        text_id = email_or_usernmane.lower()
        if '@' in text_id:
            return cls.objects.filter(email=text_id).first()
        return cls.objects.filter(username=text_id).first()

    @classmethod
    def get_by_id(cls, user_id):
        return cls.objects(id=user_id).first()

    # token alive 10 hours

    def get_token(self, seconds_live=36000):
        token = Serializer(current_app.config.get("TOKEN_KEY"),
                           expires_in=seconds_live)
        return str(token.dumps({'id': str(self.id)}))

    @classmethod
    def load_from_token(cls, token):
        s = Serializer(current_app.config.get("TOKEN_KEY"))
        if token[0:2] == "b'" and token[-1:] == "'":
            token = token[2:-1]
        try:
            data = s.loads(token)
            return cls.get_by_id(data['id'])
        except SignatureExpired:
            # the token has ben expired
            return None
        except BadSignature:
            # the token ist'n valid
            return None
        return None

    @classmethod
    # TODO: validar que vengan los id foraneos, el rut y correo con formato correo
    def create_from_excel(cls, list_rows):
        error_list = [[
            "RUN", "Nombres", "Apellido Paterno", "Apellido Materno",
            "Puntaje Ingreso", "Sexo", "Email", "Telefono", "Calle", "Numero",
            "Comuna", "Villa/Depto", "Id. Curso", "Id. Colegio", "Error"
        ]]
        for alumno in list_rows:
            alumno = list(alumno)
            rut = str(alumno[0])
            if (rut != "None" and validar_rut(rut)):
                try:
                    curso = Curso.objects(id=alumno[12]).first()
                    if (curso == None):
                        alumno.append("Curso no existe")
                        error_list.append(alumno)
                        continue
                except:
                    alumno.append("Id de curso no es valido")
                    error_list.append(alumno)
                    continue

                try:
                    colegio = Colegio.objects(id=alumno[13]).first()
                    if (colegio == None):
                        alumno.append("Colegio no existe")
                        error_list.append(alumno)
                        continue
                except:
                    alumno.append("Id de colegio no es valido")
                    error_list.append(alumno)
                    continue

                if (alumno[5] == "None"
                        or not (alumno[5] in TIPOS_SEXOS_ARRAY)):
                    alumno.append("Sexo ingresado no es valido")
                    error_list.append(alumno)
                    continue
                if (alumno[6] == "None" or not (es_correo_valido(alumno[6]))):
                    alumno.append("Correo ingresado no es valido")
                    error_list.append(alumno)
                    continue

                direccion = Direccion(calle=alumno[8],
                                      numero=str(alumno[9]),
                                      comuna=alumno[10],
                                      cas_dep_of=alumno[11])
                alumnoNuevo = Alumno(rut=str(alumno[0]),
                                     nombres=alumno[1],
                                     apellido_paterno=alumno[2],
                                     apellido_materno=alumno[3],
                                     sexo=alumno[5],
                                     email=alumno[6],
                                     telefono=str(alumno[7]),
                                     direccion=direccion,
                                     colegio=colegio,
                                     curso=curso,
                                     imagen="default")
                alumnoNuevo.encrypt_password(str(alumno[0]))
                if (alumno[4] != None and alumno[4] != ""):
                    alumnoNuevo.puntaje_ingreso = alumno[4]
                else:
                    alumnoNuevo.puntaje_ingreso = 0
                alumnoNuevo.save()
            else:
                alumno.append("RUT invalido")
                error_list.append(alumno)
        if (len(error_list) > 1):
            return write_error(error_list, "errores")
        return "hecho"

    @classmethod
    def create_layout_excel(cls):
        headers = [
            "RUN", "Nombres", "Apellido Paterno", "Apellido Materno",
            "Puntaje Ingreso", "Sexo (MASCULINO/FEMENINO/NO DEFINIDO)",
            "Email", "Telefono", "Calle", "Numero", "Comuna", "Villa/Depto",
            "Id. Curso", "Id. Colegio"
        ]
        result_list = [Colegio.export_to_excel(), Curso.export_to_excel()]
        return create_excel(result_list, headers, "Formato_alumnos")

    @classmethod
    def export_to_excel(cls):
        alumnos = Alumno.objects().all()
        result_list_alumnos = [[
            "RUN", "Nombres", "Apellido Paterno", "Apellido Materno"
        ]]
        for alumno in alumnos:
            result_list_alumnos.append(alumno.to_excel())
        return result_list_alumnos

    @classmethod
    def create_provisional_pass(cls, user_mail, provisional_pass):
        admin = cls.get_by_email_or_username(user_mail)
        admin.password_provisoria = provisional_pass
        admin.save()
        return 'hecho'