コード例 #1
0
class Tunnel(models.Model):
    """
    SSH隧道配置
    """
    tunnel_name = models.CharField('隧道名称', max_length=50, unique=True)
    host = models.CharField('隧道连接', max_length=200)
    port = models.IntegerField('端口', default=0)
    user = fields.EncryptedCharField(verbose_name='用户名', max_length=200, default='', blank=True, null=True)
    password = fields.EncryptedCharField(verbose_name='密码', max_length=300, default='', blank=True, null=True)
    pkey = fields.EncryptedTextField(verbose_name="密钥", blank=True, null=True)
    pkey_path = models.FileField(verbose_name="密钥地址", blank=True, null=True, upload_to='keys/')
    pkey_password = fields.EncryptedCharField(verbose_name='密钥密码', max_length=300, default='', blank=True, null=True)
    create_time = models.DateTimeField('创建时间', auto_now_add=True)
    update_time = models.DateTimeField('更新时间', auto_now=True)

    def __str__(self):
        return self.tunnel_name

    def short_pkey(self):
        if len(str(self.pkey)) > 20:
            return '{}...'.format(str(self.pkey)[0:19])
        else:
            return str(self.pkey)

    class Meta:
        managed = True
        db_table = 'ssh_tunnel'
        verbose_name = u'隧道配置'
        verbose_name_plural = u'隧道配置'
コード例 #2
0
class TestModel(models.Model):
    char = fields.EncryptedCharField(blank=True, null=True)
    text = fields.EncryptedTextField(blank=True, null=True)
    textraw = models.TextField(blank=True, null=True)
    integer = fields.EncryptedIntegerField(blank=True, null=True)
    email = fields.EncryptedEmailField(blank=True, null=True)
    url = fields.EncryptedURLField(blank=True, null=True)
コード例 #3
0
class MessageModel(models.Model):
    user = models.ForeignKey(User,
                             on_delete=models.CASCADE,
                             verbose_name='user',
                             related_name='from_user',
                             db_index=True)
    recipient = models.ForeignKey(User,
                                  on_delete=models.CASCADE,
                                  verbose_name='recipient',
                                  related_name='to_user',
                                  db_index=True)
    timestamp = models.DateTimeField('timestamp',
                                     auto_now_add=True,
                                     editable=False,
                                     db_index=True)
    body = fields.EncryptedTextField()

    def __str__(self):
        return str(self.user.username_user)

    def notify_ws_clients(self):

        notification = {
            'type': 'recieve_group_message',
            'message': '{}'.format(self.id)
        }

        channel_layer = get_channel_layer()
        print("user.id {}".format(self.user.id))
        print("user.id {}".format(self.recipient.id))

        async_to_sync(channel_layer.group_send)("{}".format(self.user.id),
                                                notification)
        async_to_sync(channel_layer.group_send)("{}".format(self.recipient.id),
                                                notification)

    def save(self, *args, **kwargs):

        new = self.id
        self.body = self.body.strip()  # Trimming whitespaces from the body
        super(MessageModel, self).save(*args, **kwargs)
        if new is None:
            self.notify_ws_clients()

    # Meta
    class Meta:
        verbose_name = 'message'
        verbose_name_plural = 'messages'
        ordering = ('-timestamp', )