def get_submission(
    given_name,
    description,
    technique,
    quality_control,
    replicate_series,
    date_replicate,
    note,
    publishable,
    user,
    experiment,
    publication_list,
):
    # check if submission exist, if so return, if not create new
    try:
        year_later = datetime.now() + timedelta(days=(1 * 365))
        # Get generated id and unique name
        generated_id = return_unique_generated_id(Submission.objects.all().count())
        name = return_unique_submission_name(generated_id, given_name)

        submission = Submission(
            generated_id=generated_id,
            name=name,
            given_name=given_name,
            description=description,
            publishable=publishable,
            date_created=datetime.now(),
            date_embargo=year_later,
            technique=technique,
            quality_control=quality_control,
            replicate_series=replicate_series,
            date_replicate=date_replicate,
            note=note,
        )
        submission.validate_unique()
        submission.save()

        submission.experiments.add(experiment)
        for publication in publication_list:
            submission.publications.add(publication)

        # Establish User to Submission relationships
        submission_contributor = SubmissionContributor.submission_contributor_objects.create_submission_as_superuser(
            submission, user
        )
        submission_contributor.validate_unique()
        submission_contributor.save()

    except ValidationError as e:
        print e
        submission = Submission.objects.get(given_name=given_name)

    return submission