Example #1
0
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
Example #2
0
    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
Example #4
0
    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()
Example #5
0
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")
Example #7
0
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)))
Example #8
0
    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)
Example #9
0
    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()
Example #11
0
    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()
Example #12
0
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)))
Example #13
0
    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")
Example #14
0
    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}")