def __call__(self, *args, **kwargs):

        def isStructureFile(fileInstance):
            mimetype = fileInstance.get_mimetype()
            structureFileTypes = [
                "chemical/x-pdb",
            ]
            correct_mime = mimetype in structureFileTypes

            file_extension = fileInstance.filename.split(".")[-1]
            valid_extensions = [
                ".pdb",
            ]
            correct_extension = file_extension.lower() in valid_extensions
            return correct_mime or correct_extension

        instance = kwargs.get("instance")
        if isStructureFile(instance):
            if self.namespace not in \
               [set.schema.namespace for set in instance.getParameterSets()]:
                try:
                    theSchema = Schema.objects.get(
                        namespace__exact=self.namespace)
                except Schema.DoesNotExist:
                    theSchema = Schema(namespace=self.namespace,
                                       name=self.name,
                                       type=Schema.DATAFILE,
                                       hidden=True)
                    theSchema.save()
                myPS = DatafileParameterSet(schema=theSchema,
                                            dataset_file=instance)
                myPS.save()
Exemplo n.º 2
0
def _get_create_dfps(namespace, dataset_file_id):
    schema = _get_create_schema(namespace)
    try:
        dfps = DatafileParameterSet.objects.get(
            schema=schema,
            dataset_file_id=dataset_file_id)
    except DatafileParameterSet.DoesNotExist:
        dfps = DatafileParameterSet(schema=schema,
                                    dataset_file_id=dataset_file_id)
        dfps.save()
    return dfps