def generate_report_xlsx(self, project_id, report_type): project = Project.get(Project.id == project_id) total_probes = len([p for p in project.project_stacks]) project_users = AppUser.select().join(ProjectUser).where(ProjectUser.project == project) project_info = project.title.split('_') report = {} total_iteration = 0 for iteration, project_stack in enumerate(project.project_stacks): stack = {} stack_images = StackImage.select().where(StackImage.stack == project_stack.stack.id) for stack_image in stack_images: users = {} for user in project_users: markers = Marker.select().where( Marker.app_user == user.id, Marker.stack_image == stack_image.id, Marker.project_stack == project_stack.id ) user_markers = [m.serialized for m in markers] if user_markers: users[user.email] = user_markers stack[stack_image.image.name] = users report[project_stack.stack.title] = stack self.update_state(state='PROGRESS', meta={ 'current': iteration, 'total': total_probes, 'projectId': project_id, 'reportType': report_type }) total_iteration += 1 return { 'current': total_iteration, 'total': total_probes, 'status': 'Task complete', 'projectId': project_id, 'report': report, 'reportType': report_type }
def get_project_report(project_id): users = User.select().join(ProjectUser).where(ProjectUser.project == project_id) return jsonify({ 'users': [u.serialized for u in users] })