文档服务地址: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 { export {
baseURL baseURL
......
...@@ -4,13 +4,19 @@ host = '47.92.1.107' # 服务器url ...@@ -4,13 +4,19 @@ host = '47.92.1.107' # 服务器url
client = MongoClient(host, 8081) # 服务器端口 client = MongoClient(host, 8081) # 服务器端口
db = client.da # 数据库=test db = client.da # 数据库=test
db.authenticate("admin", "admin") # 账号密码 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: 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 return re
except Exception as e: except Exception as e:
print(e) print(e)
...@@ -20,10 +26,9 @@ def insert_data_set(data_set): ...@@ -20,10 +26,9 @@ def insert_data_set(data_set):
# 查找某用户对应的数据单列表 # 查找某用户对应的数据单列表
def find_data_set(user_id): def find_data_set(user_id):
try: try:
results = collection_data_set.find({'user_id':user_id}) results = collection.find({'user_id': user_id})
dictionary = [] dictionary = []
for i in results: for i in results:
i.pop("_id")
dictionary.append(i) dictionary.append(i)
return dictionary return dictionary
except Exception as e: except Exception as e:
...@@ -31,25 +36,5 @@ def find_data_set(user_id): ...@@ -31,25 +36,5 @@ def find_data_set(user_id):
return None 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__': if __name__ == '__main__':
data_set1 = { print(find_data_set('1007'))
'set_id': 1,
'user_id': 1,
'name': '2020年08月10日',
'document': {
'brief_title': '北京河北天津等地出现大到暴雨',
'brief_detail': '昨日,北京、天津南部、河北中部及东部、山东南部、内蒙古东部出现大到暴雨'
}
}
insert_data_set(data_set1)
...@@ -8,12 +8,9 @@ from views.task import task ...@@ -8,12 +8,9 @@ from views.task import task
from views.slice import slice from views.slice import slice
from views.file import data from views.file import data
from views.imageAnnotation import image from views.imageAnnotation import image
from playhouse.flask_utils import FlaskDB
from dao.model import mysql
from config.config import DevelopmentConfig from config.config import DevelopmentConfig
app = Flask(__name__) app = Flask(__name__)
FlaskDB(app, mysql)
CORS(app) CORS(app)
app.config.from_object(DevelopmentConfig) app.config.from_object(DevelopmentConfig)
......
...@@ -37,6 +37,7 @@ class Point(db.EmbeddedDocument): ...@@ -37,6 +37,7 @@ class Point(db.EmbeddedDocument):
class Label(db.EmbeddedDocument): class Label(db.EmbeddedDocument):
labelId = db.IntField(required=True) labelId = db.IntField(required=True)
labelName = db.StringField(required=True) labelName = db.StringField(required=True)
correct = db.IntField(required=True)
lineColor = db.ListField(db.IntField()) lineColor = db.ListField(db.IntField())
fillColor = db.ListField(db.IntField()) fillColor = db.ListField(db.IntField())
pointList = db.ListField(db.EmbeddedDocumentField(Point)) pointList = db.ListField(db.EmbeddedDocumentField(Point))
...@@ -44,6 +45,7 @@ class Label(db.EmbeddedDocument): ...@@ -44,6 +45,7 @@ class Label(db.EmbeddedDocument):
def to_json(self): def to_json(self):
return {'labelId': self.labelId, return {'labelId': self.labelId,
'labelName': self.labelName, 'labelName': self.labelName,
'correct': self.correct,
'pointList': [i.to_json() for i in self.pointList] 'pointList': [i.to_json() for i in self.pointList]
} }
...@@ -83,6 +85,7 @@ def create_labels(label_list): ...@@ -83,6 +85,7 @@ def create_labels(label_list):
label = Label( label = Label(
labelId=i['labelId'], labelId=i['labelId'],
labelName=i['labelName'], labelName=i['labelName'],
correct=i['correct'],
lineColor=list(c), lineColor=list(c),
fillColor=list(c), fillColor=list(c),
pointList=create_points(i['pointList']) pointList=create_points(i['pointList'])
...@@ -145,11 +148,13 @@ def get_img_colors(relation_id): ...@@ -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() obj = Image.objects(relationId=relation_id).first()
point_lists = [] point_lists = []
label_list = obj['labelList'] label_list = obj['labelList']
for i in label_list: for i in label_list:
if label_filter and i['correct'] == 0:
continue
points = i['pointList'] points = i['pointList']
sub_list = [] sub_list = []
for j in points: for j in points:
...@@ -189,7 +194,7 @@ def export_original_img_bytes(relation_id): ...@@ -189,7 +194,7 @@ def export_original_img_bytes(relation_id):
# 根据relationId获取图片json对象 # 根据relationId获取图片json对象
def export_img_json_bytes(relation_id): def export_img_json_bytes(relation_id, label_filter=False):
try: try:
ret = {'version': '3.10.0', 'flags': {}} ret = {'version': '3.10.0', 'flags': {}}
obj = Image.objects(relationId=relation_id).first() obj = Image.objects(relationId=relation_id).first()
...@@ -201,15 +206,19 @@ def export_img_json_bytes(relation_id): ...@@ -201,15 +206,19 @@ def export_img_json_bytes(relation_id):
shapes = [] shapes = []
for i, line_color, fill_color in zip(label_list, line_colors, fill_colors): for i, line_color, fill_color in zip(label_list, line_colors, fill_colors):
if label_filter and i['correct'] == 0:
continue
shape = {} shape = {}
label_name = i['labelName'] label_name = i['labelName']
point_list = i['pointList'] point_list = i['pointList']
correct = i['correct']
points = [] points = []
for j in point_list: for j in point_list:
points.append([j['X'], j['Y']]) points.append([j['X'], j['Y']])
shape['label'] = label_name shape['label'] = label_name
shape['line_color'] = line_color shape['line_color'] = line_color
shape['fill_color'] = fill_color shape['fill_color'] = fill_color
shape['correct'] = correct
shape['points'] = points shape['points'] = points
shape['shape_type'] = 'polygon' shape['shape_type'] = 'polygon'
shapes.append(shape) shapes.append(shape)
...@@ -250,7 +259,7 @@ def export_label_img_bytes(relation_id): ...@@ -250,7 +259,7 @@ def export_label_img_bytes(relation_id):
return Result(0, msg['errmsg'], {}) return Result(0, msg['errmsg'], {})
line_colors, fill_colors = get_img_colors(relation_id) 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)) img = PIL.Image.new("RGBA", img_size, (0, 0, 0, 255))
draw = PIL.ImageDraw.Draw(img) draw = PIL.ImageDraw.Draw(img)
...@@ -342,12 +351,14 @@ def delete_layer(relation_id): ...@@ -342,12 +351,14 @@ def delete_layer(relation_id):
class LandmarkEntity(db.EmbeddedDocument): class LandmarkEntity(db.EmbeddedDocument):
landmarkId = db.IntField(required=True) landmarkId = db.IntField(required=True)
landmarkName = db.StringField() landmarkName = db.StringField()
correct = db.IntField(required=True)
X = db.FloatField(required=True) X = db.FloatField(required=True)
Y = db.FloatField(required=True) Y = db.FloatField(required=True)
def to_json(self): def to_json(self):
return {'landmarkId': self.landmarkId, return {'landmarkId': self.landmarkId,
'landmarkName': self.landmarkName, 'landmarkName': self.landmarkName,
'correct': self.correct,
'X': self.X, 'X': self.X,
'Y': self.Y} 'Y': self.Y}
...@@ -372,6 +383,7 @@ def create_landmark_entities(landmark_entity_list): ...@@ -372,6 +383,7 @@ def create_landmark_entities(landmark_entity_list):
landmark_entity = LandmarkEntity( landmark_entity = LandmarkEntity(
landmarkId=i['landmarkId'], landmarkId=i['landmarkId'],
landmarkName=i['landmarkName'], landmarkName=i['landmarkName'],
correct=i['correct'],
X=i['X'], X=i['X'],
Y=i['Y'] Y=i['Y']
) )
......
...@@ -184,7 +184,7 @@ def get_state(user_id, data_id): ...@@ -184,7 +184,7 @@ def get_state(user_id, data_id):
# 获取某文件的标注者信息 # 获取某文件的标注者信息
def get_executors(data_id): def get_executors(data_id):
try: 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) Relation.data_id == data_id, Relation.flag == 1)
name = User.get_username(find[0].user_id) name = User.get_username(find[0].user_id)
data = [{ data = [{
......
...@@ -71,11 +71,11 @@ def personnal_information(id): ...@@ -71,11 +71,11 @@ def personnal_information(id):
if tmp.imagenum == 0: if tmp.imagenum == 0:
imageAccuracy = 0 imageAccuracy = 0
else: else:
imageAccuracy = float(tmp.imagecorrectnum)/float(tmp.imagenum) imageAccuracy = round(float(tmp.imagecorrectnum)/float(tmp.imagenum) * 100, 2)
if tmp.textnum == 0: if tmp.textnum == 0:
textAccuracy = 0 textAccuracy = 0
else: else:
textAccuracy = float(tmp.textcorrectnum)/float(tmp.textnum) textAccuracy = round(float(tmp.textcorrectnum)/float(tmp.textnum) * 100, 2)
data = { data = {
'userName': tmp.userName, 'userName': tmp.userName,
'userId': tmp.usrId, 'userId': tmp.usrId,
...@@ -102,46 +102,23 @@ def set_type(id, type): ...@@ -102,46 +102,23 @@ def set_type(id, type):
return Result(-1, "DoesNotExit", {}) return Result(-1, "DoesNotExit", {})
def add_image_score(id, score): def add_image_score(id, score, correctnum, num):
try: try:
tmp = User.get(User.usrId == id) tmp = User.get(User.usrId == id)
tmp.imageScore = tmp.imageScore + score tmp.imageScore = tmp.imageScore + score
tmp.imagecorrectnum = tmp.imagecorrectnum + correctnum
tmp.imagenum = tmp.imagenum + num
tmp.save() tmp.save()
except: except:
return Result(-1, "DoesNotExit", {}) return Result(-1, "DoesNotExit", {})
def setImageAccuracy(id, acuuracy): def add_text_score(id, score, correctnum, num):
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):
try: try:
tmp = User.get(User.usrId == id) tmp = User.get(User.usrId == id)
tmp.textScore = tmp.textScore + score tmp.textScore = tmp.textScore + score
tmp.save() tmp.textcorrectnum = tmp.textcorrectnum + correctnum
except: tmp.textnum = tmp.textnum + num
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.save() tmp.save()
except: except:
return Result(-1, "DoesNotExit", {}) return Result(-1, "DoesNotExit", {})
...@@ -151,6 +128,7 @@ def add_post_num(id, num): ...@@ -151,6 +128,7 @@ def add_post_num(id, num):
try: try:
tmp = User.get(User.usrId == id) tmp = User.get(User.usrId == id)
tmp.postNum = tmp.postNum + num tmp.postNum = tmp.postNum + num
tmp.postScore = tmp.postScore + num
tmp.save() tmp.save()
except: except:
return Result(-1, "DoesNotExit", {}) return Result(-1, "DoesNotExit", {})
...@@ -177,7 +155,7 @@ def get_userid(name): ...@@ -177,7 +155,7 @@ def get_userid(name):
def add_text_correctnum(num, userid): def add_text_correctnum(num, userid):
try: try:
tmp = User.get(User.usrId == userid) tmp = User.get(User.usrId == userid)
tmp.textcorrectnum += num tmp.textcorrectnum = tmp.textcorrectnum + num
tmp.save() tmp.save()
except: except:
return False return False
...@@ -188,7 +166,7 @@ def add_text_correctnum(num, userid): ...@@ -188,7 +166,7 @@ def add_text_correctnum(num, userid):
def add_text_num(num, userid): def add_text_num(num, userid):
try: try:
tmp = User.get(User.usrId == userid) tmp = User.get(User.usrId == userid)
tmp.textnum += num tmp.textnum = tmp.textnum + num
tmp.save() tmp.save()
except: except:
return False return False
...@@ -199,7 +177,7 @@ def add_text_num(num, userid): ...@@ -199,7 +177,7 @@ def add_text_num(num, userid):
def add_image_correctnum(num, userid): def add_image_correctnum(num, userid):
try: try:
tmp = User.get(User.usrId == userid) tmp = User.get(User.usrId == userid)
tmp.imagecorrectnum += num tmp.imagecorrectnum = tmp.imagecorrectnum + num
tmp.save() tmp.save()
except: except:
return False return False
...@@ -210,7 +188,7 @@ def add_image_correctnum(num, userid): ...@@ -210,7 +188,7 @@ def add_image_correctnum(num, userid):
def add_image_num(num, userid): def add_image_num(num, userid):
try: try:
tmp = User.get(User.usrId == userid) tmp = User.get(User.usrId == userid)
tmp.imagenum += num tmp.imagenum = tmp.imagenum + num
tmp.save() tmp.save()
except: except:
return False return False
...@@ -219,6 +197,5 @@ def add_image_num(num, userid): ...@@ -219,6 +197,5 @@ def add_image_num(num, userid):
if __name__ == '__main__': if __name__ == '__main__':
User.drop_table() add_image_correctnum(1, 1)
User.create_table()
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 ...@@ -2,10 +2,22 @@ import json
from flask import Blueprint from flask import Blueprint
from flask import request from flask import request
from dao import Data, Relation from dao import Data, Relation
from dao.model import mysql
data = Blueprint("data", __name__, url_prefix="/api/file") 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"]) @data.route("/getFiles", methods=["GET"])
def get_pieces(): def get_pieces():
sliceId = request.args['pieceId'] sliceId = request.args['pieceId']
......
...@@ -164,7 +164,7 @@ def export_zip(relationId): ...@@ -164,7 +164,7 @@ def export_zip(relationId):
# 3 files' Bytes # 3 files' Bytes
original_img_bytes = Image.export_original_img_bytes(relationId) original_img_bytes = Image.export_original_img_bytes(relationId)
label_img_bytes = Image.export_label_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] bytes = [original_img_bytes, json_img_bytes, label_img_bytes]
types = [image_name + '.' + img_type, image_name + '.json', image_name + '_label.' + img_type] types = [image_name + '.' + img_type, image_name + '.json', image_name + '_label.' + img_type]
...@@ -205,8 +205,9 @@ def export_kml(relationId): ...@@ -205,8 +205,9 @@ def export_kml(relationId):
# "imageName": "tom@qq.com", # "imageName": "tom@qq.com",
# "labelList": [ # "labelList": [
# { # {
# "labelId": 123, # "labelId": 456,
# "labelName": "标注", # "labelName": "标注",
# "correct": 0,
# "pointList": [ # "pointList": [
# { # {
# "pointId": 14, # "pointId": 14,
...@@ -216,23 +217,6 @@ def export_kml(relationId): ...@@ -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): ...@@ -245,6 +229,7 @@ def export_kml(relationId):
# { # {
# "labelId": 181, # "labelId": 181,
# "labelName": "label01", # "labelName": "label01",
# "correct": 0,
# "pointList": [ # "pointList": [
# { # {
# "pointId": 21, # "pointId": 21,
...@@ -261,6 +246,7 @@ def export_kml(relationId): ...@@ -261,6 +246,7 @@ def export_kml(relationId):
# { # {
# "landmarkId": 31, # "landmarkId": 31,
# "landmarkName": "landmark31", # "landmarkName": "landmark31",
# "correct": 0,
# "X": 31.1, # "X": 31.1,
# "Y": 31.2 # "Y": 31.2
# } # }
......
...@@ -2,10 +2,22 @@ import json ...@@ -2,10 +2,22 @@ import json
from flask import Blueprint from flask import Blueprint
from flask import request from flask import request
from dao import Data, Slice, Relation, Task from dao import Data, Slice, Relation, Task
from dao.model import mysql
slice = Blueprint("slice", __name__, url_prefix="/api/slice") 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下的分片列表 # 获取分片列表的接口,接收参数taskId,返回相应task下的分片列表
@slice.route("/getPieces", methods=["GET"]) @slice.route("/getPieces", methods=["GET"])
def get_pieces(): def get_pieces():
......
...@@ -2,10 +2,21 @@ import json ...@@ -2,10 +2,21 @@ import json
from flask import Blueprint from flask import Blueprint
from flask import request from flask import request
from dao import Task, Slice, Data, Relation, User from dao import Task, Slice, Data, Relation, User
from dao.model import mysql
task = Blueprint("task", __name__, url_prefix="/api/task") 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"]) @task.route("/getTasks", methods=["GET"])
def get_tasks(): def get_tasks():
...@@ -206,13 +217,9 @@ def grade(): ...@@ -206,13 +217,9 @@ def grade():
slice_id = ret.data slice_id = ret.data
slice_type = Slice.find_type_by_slice(slice_id) slice_type = Slice.find_type_by_slice(slice_id)
if slice_type == '0': if slice_type == '0':
User.add_text_score(userId, score) User.add_text_score(userId, score, correctnum, num)
User.add_text_correctnum(userId, correctnum)
User.add_text_num(userId, num)
else: else:
User.add_image_score(userId, score) User.add_image_score(userId, score, correctnum, num)
User.add_image_correctnum(userId, correctnum)
User.add_image_num(userId, num)
ret = Relation.set_grade(userId, slice_id, data_id, score) ret = Relation.set_grade(userId, slice_id, data_id, score)
taskid = Slice.find_task_by_slice(slice_id) taskid = Slice.find_task_by_slice(slice_id)
Task.set_state(taskid, 'check') Task.set_state(taskid, 'check')
......
...@@ -190,7 +190,18 @@ def getFileContent(): ...@@ -190,7 +190,18 @@ def getFileContent():
return json.dumps(return_dict, ensure_ascii=False) return json.dumps(return_dict, ensure_ascii=False)
url = result.get('textUrl') 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 = {'return_code': '200', 'return_info': '处理成功', 'result': fileStr}
return_dict['result'] = fileStr return_dict['result'] = fileStr
......
...@@ -2,10 +2,22 @@ import json ...@@ -2,10 +2,22 @@ import json
from flask import Blueprint from flask import Blueprint
from flask import request from flask import request
from dao import User from dao import User
from dao.model import mysql
user = Blueprint("user", __name__, url_prefix="/api/user") 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"]) @user.route("/signup", methods=["Post"])
def signup(): def signup():
# print("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