Example #1
0
    def save(self, doc):
        """Save an instruction.

        Returns None if the save was successful, a message explaining why it
        failed otherwise.
        """
        try:
            doc.validate()
            self.coll.save(doc.to_python())
        except ShieldException as e:
            return str(e)

        creator = self.users.get(doc.creator_id)
        self.repo.commit(self._repo_key(creator, doc), doc.instruction,
                         author=signature(creator.name, creator.name))
Example #2
0
    def create(self, creator, name, instruction, tags):
        """Create an instruction for a creator.

        Returns the InstructionDocument.

        Raises a DuplicateKeyError or ShieldException otherwise.
        """
        doc = InstructionDocument(
            creator_id=creator.id,
            name=name,
            instruction=instruction,
            tags=tags)
        doc.validate()

        id = self.coll.insert(doc.to_python())
        doc = InstructionDocument(**self.coll.find_one(id))  # grab ID
        self.repo.create(self._repo_key(creator, doc), doc.instruction,
                         author=signature(creator.name, creator.name))
        return doc