Esempio n. 1
0
 def send_auth_captcha(identity):
     """Send authentication captcha to an identity, the identity can be a cellphone or an email.
     """
     if not identity:
         raise Exception('Identity is not provided.')
     if CELLPHONE_PATTERN.match(identity):
         user = User.objects.get(cellphone=identity, cellphoneBindingCaptcha__exists=False, status=1)
         now = datetime.now()
         user.cellphoneAuthCaptcha = Captcha(captcha=str(random())[2:8],
                                             expireTime=datetime.fromtimestamp(now.timestamp() + 30 * 60))
         user.updateTime = now
         user = user.save()
         template = Loader('templates/account/').load('cellphone_auth_captcha.txt')
         content = template.generate(captcha=user.cellphoneAuthCaptcha.captcha)
         send_sms(user.cellphone, content.decode('utf-8'))
         return user
     elif EMAIL_PATTERN.match(identity):
         user = User.objects.get(email=identity, emailBindingCaptcha__exists=False, status=1)
         now = datetime.now()
         user.emailAuthCaptcha = Captcha(captcha=md5((str(random())[2:]).encode('utf-8')).hexdigest(),
                                         expireTime=datetime.fromtimestamp(now.timestamp() + 24 * 60 * 60))
         user.updateTime = now
         user = user.save()
         template = Loader('templates/account/').load('email_auth_captcha.html')
         content = template.generate(captcha=user.emailAuthCaptcha.captcha)
         send_mail([user.email], '身份验证', content.decode('utf-8'))
         return user
     else:
         raise Exception('Invalid identity.')
    def gen_db_model(self, schema_name, table_name):
        sql = """ SELECT column_name, column_default, data_type, column_key, is_nullable,
                         character_maximum_length, column_comment
                  FROM information_schema.columns
                  WHERE TABLE_SCHEMA = :schema_name AND
                        TABLE_NAME = :table_name
                  ORDER BY ORDINAL_POSITION"""

        with self.create_session(self._default_db) as session:
            entities = session.execute(sql, dict(schema_name=schema_name, table_name=table_name))
            metas = [GenMeta(entity) for entity in entities if entity[0] != 'pkid']
            model_meta = DbModelMeta()
            model_meta.table_metas = metas
            for meta in metas:
                if model_meta.has_id is False:
                    model_meta.has_id = meta.column_name == 'id'
                    model_meta.is_string_id = meta.column_name == 'id' and \
                                              u'varchar' == meta.data_type
                if model_meta.has_created_at is False:
                    model_meta.has_created_at = meta.column_name == 'created_at'
                if model_meta.has_updated_at is False:
                    model_meta.has_updated_at = meta.column_name == 'updated_at'
                if model_meta.has_is_deleted is False:
                    model_meta.has_is_deleted = meta.column_name == 'is_deleted'
            model_meta.class_name = inflection.singularize(inflection.camelize(table_name))

            template_path = os.path.join(os.path.dirname(__file__))
            t = Loader(template_path, **{}).load('model.tpl')
            print t.generate(**model_meta.__dict__)
Esempio n. 3
0
 def _send_binding_captcha(self, cellphone=False, email=False):
     """Send binding captcha.
     """
     # Prepare captcha.
     now = datetime.now()
     if cellphone and self.cellphoneBindingCaptcha:
         self.cellphoneBindingCaptcha = Captcha(captcha=str(random())[2:8],
                                                expireTime=datetime.fromtimestamp(now.timestamp() + 30 * 60))
     if email and self.emailBindingCaptcha:
         self.emailBindingCaptcha = Captcha(captcha=md5((str(random())[2:]).encode('utf-8')).hexdigest(),
                                            expireTime=datetime.fromtimestamp(now.timestamp() + 24 * 60 * 60))
     # Save captcha.
     self.updateTime = now
     new_self = self.save()
     # Send captcha.
     if cellphone:
         template = Loader('templates/account/').load('cellphone_binding_captcha.txt')
         content = template.generate(captcha=new_self.cellphoneBindingCaptcha.captcha)
         send_sms(new_self.cellphone, content.decode('utf-8'))
     if email:
         template = Loader('templates/account/').load('email_binding_captcha.html')
         content = template.generate(captcha=new_self.emailBindingCaptcha.captcha)
         send_mail([new_self.email], '确认注册邮箱', content.decode('utf-8'))
     return new_self