def upload_project(obj, user=None, create=False): # Check if this is a recipe or project project = Project.objects.filter(uid=obj.uid).first() if not project and create: project = auth.create_project(user=user, uid=obj.uid, name=obj.name, text=obj.text) elif not project: return project.uid = obj.uid project.name = obj.name project.text = obj.text project.date = obj.date project.privacy = obj.privacy project.image = obj.image project.save() for recipe, vals in obj.recipes.items(): data = parse_json(vals) upload_recipe(data, project=project, user=user) return
def setUp(self): logger.setLevel(logging.WARNING) self.username = f"tested{get_uuid(10)}" self.owner = models.User.objects.create(username=self.username, is_staff=True, email="*****@*****.**") self.owner.set_password("tested") self.owner.save() self.project = auth.create_project(user=self.owner, name="Test project", privacy=models.Project.PUBLIC, uid="tested") data = auth.create_data(project=self.project, path=__file__) analysis = auth.create_analysis(project=self.project, json_text='', template="# Add code here.") self.job = auth.create_job(analysis=analysis) self.proj_params = dict(uid=self.project.uid) self.analysis_params = dict(uid=analysis.uid) self.recipes_id_param = dict(id=analysis.id) self.data_params = dict(uid=data.uid) self.job_params = dict(uid=self.job.uid) self.data_file_params = dict(uid=data.uid, path="foo.txt") self.job_file_params = dict(uid=self.job.uid, path="foo.txt")
def upload_project(obj, user=None): # Check if this is a recipe or project project = Project.objects.filter(uid=obj.uid).first() if not project: project = auth.create_project(user=user, uid=obj.uid, name=obj.name, text=obj.text) project.uid = obj.uid project.name = obj.name project.text = obj.text project.date = obj.date project.privacy = obj.privacy update_image(project, obj.image) project.save() for recipe, vals in obj.recipes.items(): data = parse_json(vals) email = data.owner_email or settings.DEFAULT_FROM_EMAIL owner = get_or_create(email, data=data) upload_recipe(data, project=project, user=owner) return
def setUp(self): logger.setLevel(logging.WARNING) # Set up generic owner self.owner = models.User.objects.create_user( username=f"tested{get_uuid(10)}", email="*****@*****.**") self.owner.set_password("tested") self.project = auth.create_project(user=self.owner, name="tested", text="Text", summary="summary", uid="tested") self.recipe = auth.create_analysis(project=self.project, json_text="{}", template="", security=models.Analysis.AUTHORIZED) self.snippet_type = models.SnippetType.objects.create( name='Snippet type', owner=self.owner) self.snippet = models.Snippet.objects.create( command='ls -l', type=self.snippet_type, help_text='List files in directory', owner=self.owner) self.job = auth.create_job(analysis=self.recipe, user=self.owner) self.job.save()
def create_project(json_file, root_dir): """ Create project from json file. """ source = os.path.abspath(os.path.join(root_dir, json_file)) json_data = hjson.loads(open(source, "r").read()) pid, _, privacy, image = parse_project(json_data) project = Project.objects.get_all(uid=pid).first() if not project: image_stream = open(os.path.abspath(os.path.join(root_dir, image)), "rb") user = User.objects.filter(is_superuser=True).first() name = json_data.get("settings", {}).get("name", "New Project") text = json_data.get("settings", {}).get("help", "New Text") project = auth.create_project(user, name=name, uid=pid, text=text, privacy=privacy) project.image.save(name=image, content=image_stream) project.save() return project
def setUp(self): logger.setLevel(logging.WARNING) self.owner = models.User.objects.filter(is_superuser=True).first() self.project = auth.create_project(user=self.owner, name="tested", text="Text", summary="summary", uid="tested")
def project_create(request): """ View used create an empty project belonging to request.user. Input is validated with a form and actual creation is routed through auth.create_project. """ user = request.user project = auth.create_project(user=user) messages.success(request, "Create a new project.") return redirect(reverse("project_info", kwargs=dict(uid=project.uid)))
def test_project_update(self): "Test updating the project" changed = auth.create_project(user=self.owner, name="New name", uid=self.project.uid, update=True) self.assertEqual(changed.uid, self.project.uid)
def setUp(self): logger.setLevel(logging.WARNING) # Set up generic owner self.owner = models.User.objects.create_user(username=f"tested{get_uuid(10)}", email="*****@*****.**") self.owner.set_password("tested") self.project = auth.create_project(user=self.owner, name="tested", text="Text", summary="summary", uid="tested") self.project.save() # Set up generic data for editing self.data = auth.create_data(project=self.project, path=__file__, name="tested")
def setUp(self): logger.setLevel(logging.WARNING) # Set up generic owner self.owner = models.User.objects.create_user(username=f"tested{get_uuid(10)}", email="*****@*****.**", is_staff=True, is_superuser=True) self.owner.set_password("tested") self.factory = RequestFactory() self.project = auth.create_project(user=self.owner, name="tested", text="Text", summary="summary", uid="tested") # Test data self.recipe = auth.create_analysis(project=self.project, json_text="", template="#test template") self.recipe.save()
def setUp(self): logger.setLevel(logging.WARNING) # Set up generic owner self.owner = models.User.objects.create_user(username=f"tested{util.get_uuid(10)}", email="*****@*****.**") self.owner.set_password("tested") self.project = auth.create_project(user=self.owner, name="tested", text="Text", summary="summary", uid="tested") self.recipe = auth.create_analysis(project=self.project, json_text="{}", template="", security=models.Analysis.AUTHORIZED) self.job = auth.create_job(analysis=self.recipe, user=self.owner) self.job.save()
def project_create(request): """ View used create an empty project belonging to request.user. Input is validated with a form and actual creation is routed through auth.create_project. """ user = request.user project = auth.create_project(user=user, text="Project information goes here. ", name="Project") # Ensure project name is unique. project.name = f"{project.name} {project.id}" project.text = f"Add more information on {project.name}" project.save() messages.success(request, "A new project has been created. Please set the project details") return redirect(reverse("project_edit", kwargs=dict(uid=project.uid)))
def setUp(self): logger.setLevel(logging.WARNING) # Set up generic owner self.owner = models.User.objects.create_user( username=f"tested{get_uuid(10)}", email="*****@*****.**", is_staff=True) self.owner.set_password("tested") # Set up project to edit self.project = auth.create_project(user=self.owner, name="tested", text="Text", summary="summary", uid="tested")
def handle(self, *args, **options): pid = options['pid'] name = options['name'] or "Project Name" privacy = Project.PUBLIC if options["public"] else Project.PRIVATE update = options["update"] info = options["info"] demo = options['demo'] # Set variables needed to execute demo if demo: update = False pid = '' privacy = Project.PUBLIC # Find project at uid. project = Project.objects.filter(uid=pid).first() # You can only update existing projects. if project and not update: error( f"Project with pid={pid} already exists! Set --update to overwrite." ) # Project description may be a text of a file path. if info and os.path.isfile(info): # Read the project info from a file. info = open(info).read() # Select project owner as the first staff user. user = User.objects.filter(is_staff=True).first() # Create the project. pr = auth.create_project(user=user, name=name, uid=pid, text=info, update=update, privacy=privacy) if update: print(f"*** Updated project uid={pr.uid} name={pr.name}") else: print(f"*** Created project uid={pr.uid} name={pr.name}")