Skip to content

Commit 5d8f99a

Browse files
committed
Added dataset tabs
1 parent a85deb9 commit 5d8f99a

File tree

16 files changed

+154
-81
lines changed

16 files changed

+154
-81
lines changed

backend/database/datasets.py

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import os
99

10+
1011
class DatasetModel(DynamicDocument):
1112

1213
id = SequenceField(primary_key=True)
@@ -40,36 +41,14 @@ def save(self, *args, **kwargs):
4041
self.owner = 'system'
4142

4243
return super(DatasetModel, self).save(*args, **kwargs)
44+
45+
def get_users(self):
46+
from .users import UserModel
4347

44-
# def download_images(self, keywords, limit=100):
45-
46-
# task = TaskModel(
47-
# name="Downloading {} images to {} with keywords {}".format(limit, self.name, keywords),
48-
# dataset_id=self.id,
49-
# group="Downloading Images"
50-
# )
51-
52-
# def download_images(task, dataset, keywords, limit):
53-
# def custom_print(string):
54-
# __builtins__.print("%f -- %s" % (time.time(), string))
55-
56-
# print = dprint
57-
# task.log()
58-
# for keyword in args['keywords']:
59-
# response = gid.googleimagesdownload()
60-
# response.download({
61-
# "keywords": keyword,
62-
# "limit": args['limit'],
63-
# "output_directory": output_dir,
64-
# "no_numbering": True,
65-
# "format": "jpg",
66-
# "type": "photo",
67-
# "print_urls": False,
68-
# "print_paths": False,
69-
# "print_size": False
70-
# })
71-
72-
# return task
48+
members = self.users
49+
members.append(self.owner)
50+
51+
return UserModel.objects(username__in=members).exclude('password', 'id', 'preferences')
7352

7453
def import_coco(self, coco_json):
7554

backend/database/users.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ def can_edit(self, model):
8989
return model.can_edit(self)
9090

9191
def _update_last_seen(self):
92-
self.update(last_seen=datetime.datetime.now())
92+
self.update(last_seen=datetime.datetime.utcnow())
93+
9394

9495

9596
__all__ = ["UserModel"]

backend/webserver/api/annotations.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ def post(self):
3737
metadata = args.get('metadata', {})
3838
segmentation = args.get('segmentation', [])
3939
keypoints = args.get('keypoints', [])
40-
color = args.get('color')
4140

4241
logger.info(f'{current_user.username} has created an annotation for image {image_id}')
4342

backend/webserver/api/annotator.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from config import Config
1010
from database import (
1111
ImageModel,
12-
DatasetModel,
1312
CategoryModel,
1413
AnnotationModel,
1514
SessionEvent

backend/webserver/api/datasets.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,22 @@ def post(self, dataset_id):
118118
return {"success": True}
119119

120120

121+
@api.route('/<int:dataset_id>/users')
122+
class DatasetMembers(Resource):
123+
124+
@login_required
125+
def get(self, dataset_id):
126+
""" All users in the dataset """
127+
args = dataset_generate.parse_args()
128+
129+
dataset = current_user.datasets.filter(id=dataset_id, deleted=False).first()
130+
if dataset is None:
131+
return {"message": "Invalid dataset id"}, 400
132+
133+
users = dataset.get_users()
134+
return query_util.fix_ids(users)
135+
136+
121137
@api.route('/<int:dataset_id>')
122138
class DatasetId(Resource):
123139
@login_required

backend/webserver/api/images.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from database import (
88
ImageModel,
99
DatasetModel,
10-
CategoryModel,
1110
AnnotationModel
1211
)
1312

backend/webserver/api/undo.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from flask_restplus import Namespace, Resource, reqparse
2-
from flask_login import login_required, current_user
2+
from flask_login import login_required
33

44
import os
55
import shutil

backend/webserver/sockets.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ def wrapped(*args, **kwargs):
3434
@socketio.on('annotation')
3535
@authenticated_only
3636
def annotation(data):
37-
image_id = data.get('image_id')
3837
emit('annotation', data, broadcast=True)
3938

4039

backend/webserver/watcher.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
from database import ImageModel
66

77
import re
8-
import time
9-
import threading
108

119

1210
class ImageFolderHandler(FileSystemEventHandler):

client/src/components/Pagination.vue

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<div class="row justify-content-md-center bg-light">
2+
<div class="row align-items-center justify-content-center bg-light">
33
<ul class="pagination text-center">
44
<li class="page-item" @click="previousPage">
55
<a class="page-link" aria-label="Previous">
@@ -92,3 +92,10 @@ export default {
9292
}
9393
};
9494
</script>
95+
96+
<style>
97+
.page {
98+
display:block;
99+
margin:0 auto;
100+
}
101+
</style>

0 commit comments

Comments
 (0)