Exemplo n.º 1
0
class EMAPAClipboardsResource(Resource):

    clipboard_service = EMAPAClipboardService()

    @as_json
    def get(self):
        """
        Get list of clipboard items
        """

        results = SearchResults()

        if current_user.is_authenticated:

            results = self.clipboard_service.get_clipboard_items(
                current_user._user_key)

        return results.serialize()

    @api.marshal_with(clipboard_edit_model)
    def post(self):
        """
        Add clipboard items
        """

        args = request.get_json()

        # HACK:
        # ensure arguments are strings, not integers
        emapa_id = args['emapa_id']
        if emapa_id:
            emapa_id = str(emapa_id)

        stagesToAdd = args['stagesToAdd']
        if stagesToAdd:
            stagesToAdd = str(stagesToAdd)

        check_permission()

        set_members = self.clipboard_service.add_items(current_user._user_key,
                                                       emapa_id, stagesToAdd)

        # return success with no content
        return clipboard_list_json(set_members)

    @as_json
    def delete(self):
        """
        Delete all clipboard items
        """

        check_permission()

        self.clipboard_service.delete_all_items(current_user._user_key)

        print("DELETE ALL THE ITEMS")
        return {"success": True}
Exemplo n.º 2
0
class EmapaClipboardSortResource(Resource):

    clipboard_service = EMAPAClipboardService()

    @api.doc('sort_emapa_clipboard')
    def get(self):
        """
        Sort EMAPA Clipboard
        """
        check_permission()

        self.clipboard_service.sort_clipboard(current_user._user_key)

        return {"success": True}
Exemplo n.º 3
0
class EMAPAClipboardResource(Resource):

    clipboard_service = EMAPAClipboardService()

    @as_json
    def delete(self, key):
        """
        Delete single clipboard item
        """

        check_permission()

        self.clipboard_service.delete_item(key, current_user._user_key)

        return {"success": True}
Exemplo n.º 4
0
 def setUp(self):
     self.clipboard_service = EMAPAClipboardService()
     self.seqnum = 1
Exemplo n.º 5
0
class ClipboardSortTest(unittest.TestCase):
    """
    Test stage, term sorting
    """
    
    def setUp(self):
        self.clipboard_service = EMAPAClipboardService()
        self.seqnum = 1
        
        
    def tearDown(self):
        self.seqnum = 1
        
    
    def test_different_stage(self):
        
        l = [
             self.mockClipboardItem("term1", 20),
             self.mockClipboardItem("term1", 9)
             ]
        
        self.clipboard_service._sort_items_by_alpha(l)
        
        self.assertClipboardOrder(["term1 TS9", "term1 TS20"], l)
        
        
    def test_different_term(self):
        
        l = [
             self.mockClipboardItem("term12", 10),
             self.mockClipboardItem("term8", 10)
             ]
        
        self.clipboard_service._sort_items_by_alpha(l)
        
        self.assertClipboardOrder(["term8 TS10", "term12 TS10"], l)
        
        
    def test_smart_alpha(self):
        
        l = [
             self.mockClipboardItem("somite 11", 10),
             self.mockClipboardItem("somite 5", 10)
             ]
        
        self.clipboard_service._sort_items_by_alpha(l)
        
        self.assertClipboardOrder(["somite 5 TS10", "somite 11 TS10"], l)
        
        
    # helper functions
    def assertClipboardOrder(self, expectedList, actualItems):
        """
            Asserts that expectedList
                in format ["term TSstage", ...]
            matches the order of actualItems self.clipboard_service items
        """
        
        # format actualList
        actualList = []
        for item in actualItems:
            actualList.append("%s TS%d" % (item.emapa_term.term, item.emapa._stage_key))
        
        self.assertEqual(expectedList, actualList)
        
        
    def mockClipboardItem(self, term, stage):
        """
        Create a mock SetMember object for testing
        """
        setMember = SetMember()
        
        # always set with and increment seqnum counter
        setMember.sequencenum = self.seqnum
        self.seqnum += 1
        
        
        # set the term
        vocTerm = VocTerm()
        vocTerm.term = term
        setMember.emapa_term = vocTerm
        
        
        # set the stage
        setMemberEMAPA = SetMemberEMAPA()
        setMemberEMAPA._stage_key = stage
        setMember.emapa = setMemberEMAPA
        
        
        return setMember