12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- from django.db import models
- import os, errno
- from datetime import datetime
- from random import randint
- from api.utils import *
- graphForAlgo = [
- ('optimize', 'optimize'),
- ('group', 'group'),
- ('predict', 'predict'),
- ]
- class GraphManager(models.Manager):
- def checkDuplicate(self, token):
- try:
- self.get(tokne=token)
- return True
- except GraphToken.DoesNotExist:
- return False
- return True
- class GraphToken(models.Model):
- # 用于访问图的验证码
- create_time = models.DateTimeField(auto_now_add=True)
- graph = models.ForeignKey(to="api.Graph", on_delete=models.CASCADE, related_name="own_tokens")
- token = models.CharField(max_length=8)
- objects = GraphManager()
- def checkExpire(self):
- now = datetime.now()
- diff = now - self.create_time
- if diff.days != 0 or diff.hours != 0 or diff.mins > 5:
- # 5分钟凭证过期
- return False
- else:
- return True
- class GraphManager(models.Manager):
- def statistic(self, user):
- graphs = user.own_graphs.all()
- return {
- 'amount': len(graphs),
- }
- class Graph(models.Model):
- create_time = models.DateTimeField(auto_now_add=True)
- update_time = models.DateTimeField(auto_now=True)
- type = models.CharField(choices=graphForAlgo, default='optimize', max_length=16)
- # 根据算法不同,生成的图数据结构不同
- nodesMap = models.JSONField()
- edgeMap = models.JSONField()
- result = models.ForeignKey(to="api.Results", on_delete=models.CASCADE, related_name="own_graphs")
- user = models.ForeignKey(to="api.User", on_delete=models.CASCADE, related_name="own_graphs")
- objects = GraphManager()
- def generateToken(self):
- # 生成验证码
- token = GraphToken()
- token.graph = self
- token.token = ''.join([str(randint(0,9)) for n in range(6)])
- while(GraphToken.objects.checkDuplicate(token.token)){
- token.token = ''.join([str(randint(0,9)) for n in range(6)])
- }
- class Meta:
- app_label = 'api'
|