文档服务地址:http://47.92.0.57:3000/ 周报索引地址:http://47.92.0.57:3000/s/NruNXRYmV

Commit 04c780c3 by 王腾

Merge branch 'develop' of https://gitlab.redhtc.com/Berlincen/DA-Platform into develop

parents 2e17db84 67a1aa8f
var baseURL = 'http://47.92.1.107/api'
let isTest = true
// let isTest = false
var baseURL
if (!isTest) {
baseURL = 'http://47.92.1.107/api'
}
else {
baseURL = 'http://localhost:9100/api'
}
export {
baseURL
......
......@@ -4,13 +4,19 @@ host = '47.92.1.107' # 服务器url
client = MongoClient(host, 8081) # 服务器端口
db = client.da # 数据库=test
db.authenticate("admin", "admin") # 账号密码
collection_data_set = db.dataset
collection = db.dataset
# 添加用户的数据单
def insert_data_set(data_set):
def insert_data_set(user_id, date, data_list):
try:
re = collection_data_set.insert_one(data_set)
data_set = {
'user_id': user_id,
'date': date,
'data_list': data_list,
'complete': 0,
}
re = collection.insert_one(data_set)
return re
except Exception as e:
print(e)
......@@ -20,10 +26,9 @@ def insert_data_set(data_set):
# 查找某用户对应的数据单列表
def find_data_set(user_id):
try:
results = collection_data_set.find({'user_id':user_id})
results = collection.find({'user_id': user_id})
dictionary = []
for i in results:
i.pop("_id")
dictionary.append(i)
return dictionary
except Exception as e:
......@@ -31,25 +36,5 @@ def find_data_set(user_id):
return None
# 删除某数据单列表
def delete_data_set(_id):
try:
result = collection_data_set.find_one({'data_set_id':_id})
collection_data_set.delete_one({'data_set_id': _id})
return result
except Exception as e:
print(e)
return None
if __name__ == '__main__':
data_set1 = {
'set_id': 1,
'user_id': 1,
'name': '2020年08月10日',
'document': {
'brief_title': '北京河北天津等地出现大到暴雨',
'brief_detail': '昨日,北京、天津南部、河北中部及东部、山东南部、内蒙古东部出现大到暴雨'
}
}
insert_data_set(data_set1)
print(find_data_set('1007'))
......@@ -8,12 +8,9 @@ from views.task import task
from views.slice import slice
from views.file import data
from views.imageAnnotation import image
from playhouse.flask_utils import FlaskDB
from dao.model import mysql
from config.config import DevelopmentConfig
app = Flask(__name__)
FlaskDB(app, mysql)
CORS(app)
app.config.from_object(DevelopmentConfig)
......
......@@ -37,6 +37,7 @@ class Point(db.EmbeddedDocument):
class Label(db.EmbeddedDocument):
labelId = db.IntField(required=True)
labelName = db.StringField(required=True)
correct = db.IntField(required=True)
lineColor = db.ListField(db.IntField())
fillColor = db.ListField(db.IntField())
pointList = db.ListField(db.EmbeddedDocumentField(Point))
......@@ -44,6 +45,7 @@ class Label(db.EmbeddedDocument):
def to_json(self):
return {'labelId': self.labelId,
'labelName': self.labelName,
'correct': self.correct,
'pointList': [i.to_json() for i in self.pointList]
}
......@@ -83,6 +85,7 @@ def create_labels(label_list):
label = Label(
labelId=i['labelId'],
labelName=i['labelName'],
correct=i['correct'],
lineColor=list(c),
fillColor=list(c),
pointList=create_points(i['pointList'])
......@@ -145,11 +148,13 @@ def get_img_colors(relation_id):
# 获取标注图片的坐标列表
def get_img_point_lists(relation_id):
def get_img_point_lists(relation_id, label_filter=False):
obj = Image.objects(relationId=relation_id).first()
point_lists = []
label_list = obj['labelList']
for i in label_list:
if label_filter and i['correct'] == 0:
continue
points = i['pointList']
sub_list = []
for j in points:
......@@ -189,7 +194,7 @@ def export_original_img_bytes(relation_id):
# 根据relationId获取图片json对象
def export_img_json_bytes(relation_id):
def export_img_json_bytes(relation_id, label_filter=False):
try:
ret = {'version': '3.10.0', 'flags': {}}
obj = Image.objects(relationId=relation_id).first()
......@@ -201,15 +206,19 @@ def export_img_json_bytes(relation_id):
shapes = []
for i, line_color, fill_color in zip(label_list, line_colors, fill_colors):
if label_filter and i['correct'] == 0:
continue
shape = {}
label_name = i['labelName']
point_list = i['pointList']
correct = i['correct']
points = []
for j in point_list:
points.append([j['X'], j['Y']])
shape['label'] = label_name
shape['line_color'] = line_color
shape['fill_color'] = fill_color
shape['correct'] = correct
shape['points'] = points
shape['shape_type'] = 'polygon'
shapes.append(shape)
......@@ -250,7 +259,7 @@ def export_label_img_bytes(relation_id):
return Result(0, msg['errmsg'], {})
line_colors, fill_colors = get_img_colors(relation_id)
points_lists = get_img_point_lists(relation_id)
points_lists = get_img_point_lists(relation_id, True)
img = PIL.Image.new("RGBA", img_size, (0, 0, 0, 255))
draw = PIL.ImageDraw.Draw(img)
......@@ -342,12 +351,14 @@ def delete_layer(relation_id):
class LandmarkEntity(db.EmbeddedDocument):
landmarkId = db.IntField(required=True)
landmarkName = db.StringField()
correct = db.IntField(required=True)
X = db.FloatField(required=True)
Y = db.FloatField(required=True)
def to_json(self):
return {'landmarkId': self.landmarkId,
'landmarkName': self.landmarkName,
'correct': self.correct,
'X': self.X,
'Y': self.Y}
......@@ -372,6 +383,7 @@ def create_landmark_entities(landmark_entity_list):
landmark_entity = LandmarkEntity(
landmarkId=i['landmarkId'],
landmarkName=i['landmarkName'],
correct=i['correct'],
X=i['X'],
Y=i['Y']
)
......
......@@ -184,7 +184,7 @@ def get_state(user_id, data_id):
# 获取某文件的标注者信息
def get_executors(data_id):
try:
find = Relation.select(Relation.user_id, Relation.data_id, Relation.flag, Relation.flag2).where(
find = Relation.select(Relation.user_id, Relation.data_id, Relation.flag, Relation.flag2, Relation.relation_id).where(
Relation.data_id == data_id, Relation.flag == 1)
name = User.get_username(find[0].user_id)
data = [{
......
......@@ -71,11 +71,11 @@ def personnal_information(id):
if tmp.imagenum == 0:
imageAccuracy = 0
else:
imageAccuracy = float(tmp.imagecorrectnum)/float(tmp.imagenum)
imageAccuracy = round(float(tmp.imagecorrectnum)/float(tmp.imagenum) * 100, 2)
if tmp.textnum == 0:
textAccuracy = 0
else:
textAccuracy = float(tmp.textcorrectnum)/float(tmp.textnum)
textAccuracy = round(float(tmp.textcorrectnum)/float(tmp.textnum) * 100, 2)
data = {
'userName': tmp.userName,
'userId': tmp.usrId,
......@@ -102,46 +102,23 @@ def set_type(id, type):
return Result(-1, "DoesNotExit", {})
def add_image_score(id, score):
def add_image_score(id, score, correctnum, num):
try:
tmp = User.get(User.usrId == id)
tmp.imageScore = tmp.imageScore + score
tmp.imagecorrectnum = tmp.imagecorrectnum + correctnum
tmp.imagenum = tmp.imagenum + num
tmp.save()
except:
return Result(-1, "DoesNotExit", {})
def setImageAccuracy(id, acuuracy):
try:
tmp = User.get(User.usrId == id)
tmp.imageAccuracy = tmp.imageAccuracy + acuuracy
tmp.save()
except:
return Result(-1, "DoesNotExit", {})
def add_text_score(id, score):
def add_text_score(id, score, correctnum, num):
try:
tmp = User.get(User.usrId == id)
tmp.textScore = tmp.textScore + score
tmp.save()
except:
return Result(-1, "DoesNotExit", {})
def setTextAccuracy(id, acuuracy):
try:
tmp = User.get(User.usrId == id)
tmp.textAccuracy = tmp.textAccuracy + acuuracy
tmp.save()
except:
return Result(-1, "DoesNotExit", {})
def add_post_score(id, score):
try:
tmp = User.get(User.usrId == id)
tmp.postScore = tmp.postScore + score
tmp.textcorrectnum = tmp.textcorrectnum + correctnum
tmp.textnum = tmp.textnum + num
tmp.save()
except:
return Result(-1, "DoesNotExit", {})
......@@ -151,6 +128,7 @@ def add_post_num(id, num):
try:
tmp = User.get(User.usrId == id)
tmp.postNum = tmp.postNum + num
tmp.postScore = tmp.postScore + num
tmp.save()
except:
return Result(-1, "DoesNotExit", {})
......@@ -177,7 +155,7 @@ def get_userid(name):
def add_text_correctnum(num, userid):
try:
tmp = User.get(User.usrId == userid)
tmp.textcorrectnum += num
tmp.textcorrectnum = tmp.textcorrectnum + num
tmp.save()
except:
return False
......@@ -188,7 +166,7 @@ def add_text_correctnum(num, userid):
def add_text_num(num, userid):
try:
tmp = User.get(User.usrId == userid)
tmp.textnum += num
tmp.textnum = tmp.textnum + num
tmp.save()
except:
return False
......@@ -199,7 +177,7 @@ def add_text_num(num, userid):
def add_image_correctnum(num, userid):
try:
tmp = User.get(User.usrId == userid)
tmp.imagecorrectnum += num
tmp.imagecorrectnum = tmp.imagecorrectnum + num
tmp.save()
except:
return False
......@@ -210,7 +188,7 @@ def add_image_correctnum(num, userid):
def add_image_num(num, userid):
try:
tmp = User.get(User.usrId == userid)
tmp.imagenum += num
tmp.imagenum = tmp.imagenum + num
tmp.save()
except:
return False
......@@ -219,6 +197,5 @@ def add_image_num(num, userid):
if __name__ == '__main__':
User.drop_table()
User.create_table()
add_image_correctnum(1, 1)
1.数据单创建任务;
2.分数准确率,发布分数等检验;
3.bug(登录时候的无反馈,用户页面的无反馈)
4.bug(slice/getpieces 400 error)
某些任务在getSlice时候taskId未传递
\ No newline at end of file
DAPlatform/views/user.py
\ No newline at end of file
1.数据单创建任务;
2.分数准确率,发布分数等检验;
3.bug(登录时候的无反馈,用户页面的无反馈)
\ No newline at end of file
1.数据单创建任务;
2.分数准确率,发布分数等检验;
3.bug(登录时候的无反馈,用户页面的无反馈)
\ No newline at end of file
......@@ -2,10 +2,22 @@ import json
from flask import Blueprint
from flask import request
from dao import Data, Relation
from dao.model import mysql
data = Blueprint("data", __name__, url_prefix="/api/file")
@data.before_request
def before_request():
mysql.connect()
@data.after_request
def after_request(response):
mysql.close()
return response
@data.route("/getFiles", methods=["GET"])
def get_pieces():
sliceId = request.args['pieceId']
......
......@@ -164,7 +164,7 @@ def export_zip(relationId):
# 3 files' Bytes
original_img_bytes = Image.export_original_img_bytes(relationId)
label_img_bytes = Image.export_label_img_bytes(relationId)
_, json_img_bytes = Image.export_img_json_bytes(relationId)
_, json_img_bytes = Image.export_img_json_bytes(relationId, True)
bytes = [original_img_bytes, json_img_bytes, label_img_bytes]
types = [image_name + '.' + img_type, image_name + '.json', image_name + '_label.' + img_type]
......@@ -205,8 +205,9 @@ def export_kml(relationId):
# "imageName": "tom@qq.com",
# "labelList": [
# {
# "labelId": 123,
# "labelId": 456,
# "labelName": "标注",
# "correct": 0,
# "pointList": [
# {
# "pointId": 14,
......@@ -216,23 +217,6 @@ def export_kml(relationId):
# ]
# }
# ]
# },
# {
# "relationId": 156,
# "imageName": "jerry@qq.com",
# "labelList": [
# {
# "labelId": 13,
# "labelName": "标注",
# "pointList": [
# {
# "pointId": 145,
# "X": 2.834,
# "Y": 145
# }
# ]
# }
# ]
# }
# ]
# }
......@@ -245,6 +229,7 @@ def export_kml(relationId):
# {
# "labelId": 181,
# "labelName": "label01",
# "correct": 0,
# "pointList": [
# {
# "pointId": 21,
......@@ -261,6 +246,7 @@ def export_kml(relationId):
# {
# "landmarkId": 31,
# "landmarkName": "landmark31",
# "correct": 0,
# "X": 31.1,
# "Y": 31.2
# }
......
......@@ -2,10 +2,22 @@ import json
from flask import Blueprint
from flask import request
from dao import Data, Slice, Relation, Task
from dao.model import mysql
slice = Blueprint("slice", __name__, url_prefix="/api/slice")
@slice.before_request
def before_request():
mysql.connect()
@slice.after_request
def after_request(response):
mysql.close()
return response
# 获取分片列表的接口,接收参数taskId,返回相应task下的分片列表
@slice.route("/getPieces", methods=["GET"])
def get_pieces():
......
......@@ -2,10 +2,21 @@ import json
from flask import Blueprint
from flask import request
from dao import Task, Slice, Data, Relation, User
from dao.model import mysql
task = Blueprint("task", __name__, url_prefix="/api/task")
@task.before_request
def before_request():
mysql.connect()
@task.after_request
def after_request(response):
mysql.close()
return response
# 各个界面获取任务列表的接口
@task.route("/getTasks", methods=["GET"])
def get_tasks():
......@@ -206,13 +217,9 @@ def grade():
slice_id = ret.data
slice_type = Slice.find_type_by_slice(slice_id)
if slice_type == '0':
User.add_text_score(userId, score)
User.add_text_correctnum(userId, correctnum)
User.add_text_num(userId, num)
User.add_text_score(userId, score, correctnum, num)
else:
User.add_image_score(userId, score)
User.add_image_correctnum(userId, correctnum)
User.add_image_num(userId, num)
User.add_image_score(userId, score, correctnum, num)
ret = Relation.set_grade(userId, slice_id, data_id, score)
taskid = Slice.find_task_by_slice(slice_id)
Task.set_state(taskid, 'check')
......
......@@ -190,7 +190,18 @@ def getFileContent():
return json.dumps(return_dict, ensure_ascii=False)
url = result.get('textUrl')
fileStr = open(os.path.join(basedir, UPLOAD_FOLDER, url), 'r', encoding='UTF-8').read()
try:
fileStr = open(os.path.join(basedir, UPLOAD_FOLDER, url), 'r', encoding='utf-8').read()
except Exception as e:
try:
fileStr = open(os.path.join(basedir, UPLOAD_FOLDER, url), 'r', encoding='utf-16').read()
except Exception as e:
try:
fileStr = open(os.path.join(basedir, UPLOAD_FOLDER, url), 'r').read()
except Exception as e:
return_dict['return_code'] = '203'
return_dict['return_info'] = '该编码的文本文法打开'
return json.dumps(return_dict, ensure_ascii=False)
# 后端传给前端 return_dict = {'return_code': '200', 'return_info': '处理成功', 'result': fileStr}
return_dict['result'] = fileStr
......
......@@ -2,10 +2,22 @@ import json
from flask import Blueprint
from flask import request
from dao import User
from dao.model import mysql
user = Blueprint("user", __name__, url_prefix="/api/user")
@user.before_request
def before_request():
mysql.connect()
@user.after_request
def after_request(response):
mysql.close()
return response
@user.route("/signup", methods=["Post"])
def signup():
# print("signup")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment