Exemplo n.º 1
0
    def test_duplicate(self):
        from netprintbox.utils import normalize_name

        # no way to fix this mangle result gracefully.
        # self.failIfEqual(normalize_name(u'/A4/foo_.doc'),
        #                  normalize_name(u'/A4/foo「」.doc'))

        self.failIfEqual(normalize_name(u'/A4/foo_.doc'),
                         normalize_name(u'/A4/foo「.doc'))
Exemplo n.º 2
0
 def list():
     return [
             create_netprint_item(
                 id='uncontrolled',
                 name='uncontrolled'),
             create_netprint_item(
                 id='latest',
                 name=normalize_name('/latest.data')),
            ]
Exemplo n.º 3
0
 def put(self, file_obj, paper_size):
     file_name = normalize_name(file_obj.name, ext=True)
     logging.debug(u"Putting file to Netprint: %s as %s",
                   file_obj.name, file_name)
     if paper_size == PaperSize.L:
         color = Color.color
     else:
         color = Color.choice_at_printing
     return self.client.send(file_obj,
                             file_name=file_name,
                             color=color,
                             paper_size=paper_size)
Exemplo n.º 4
0
    def test_do_not_make_report_if_no_change(self):
        import hashlib
        from google.appengine.api import memcache
        from netprintbox.data import FileState
        from netprintbox.utils import (
            normalize_name, get_namespace)

        NETPRINT_ID = 'latest'
        ORIGINAL_PATH = '/latest.data'
        NETPRINT_NAME = normalize_name(ORIGINAL_PATH)

        user = create_user()
        create_file_info(user,
                         path=ORIGINAL_PATH,
                         netprint_id=NETPRINT_ID,
                         netprint_name=NETPRINT_NAME,
                         state=FileState.LATEST)

        class netprint(object):
            @staticmethod
            def list():
                return [
                        create_netprint_item(
                            id=NETPRINT_ID,
                            name=NETPRINT_NAME)
                       ]

        md5 = hashlib.new('md5')
        md5.update(NETPRINT_ID)
        memcache.set(str(user.key()), md5.hexdigest(),
                     namespace=get_namespace())

        service = self._getOUT(user)
        service.netprint = netprint

        (need_report, _result) = service._make_report()
        self.assertFalse(need_report)

        # check no exception is occurred.
        service.make_report()
Exemplo n.º 5
0
    def test_modify_name_on_put(self):
        from netprint import PaperSize
        from netprintbox.utils import normalize_name

        result = []

        class client(object):
            @staticmethod
            def send(file_obj, file_name=None, color=None, paper_size=None):
                result.append((file_obj, file_name, color, paper_size))

        fake = StringIO('fake')
        fake.name = '/A4/foo.doc'

        service = self._getOUT(None, None)
        service.client = client
        service.put(fake, PaperSize.A4)

        file_obj = result[0][0]
        file_name = result[0][1]
        self.assertEqual(file_obj.read(), 'fake')
        self.assertEqual(file_name, normalize_name(fake.name, ext=True))
Exemplo n.º 6
0
 def as_netprint_name(self, with_extension=False):
     return normalize_name(self.path, ext=with_extension)
Exemplo n.º 7
0
    def test_replace(self):
        from netprintbox.utils import normalize_name

        for target_char in u'/(「<>&”’」)':
            self.assertEqual(u'A4_foo_',
                             normalize_name(u'/A4/foo' + target_char + '.doc'))
Exemplo n.º 8
0
    def test_ext(self):
        from netprintbox.utils import normalize_name

        self.assertEqual(u'A4_foo_.doc',
                         normalize_name(u'/A4/foo「.doc', ext=True))
Exemplo n.º 9
0
    def test_make_report(self):
        from google.appengine.api import memcache
        from netprintbox.settings import DATETIME_FORMAT, REPORT_PATH
        from netprintbox.data import FileState
        from netprintbox.utils import normalize_name

        user = create_user()
        f1_path = '/need_netprint_id.data'
        f1 = create_file_info(user,
                              path=f1_path,
                              netprint_name=normalize_name(f1_path),
                              state=FileState.NEED_NETPRINT_ID)
        f2_path = '/lost_by_something.data'
        f2 = create_file_info(user,
                              path=f2_path,
                              netprint_name=normalize_name(f2_path),
                              state=FileState.LATEST)
        f3_path = '/latest.data'
        f3 = create_file_info(user,
                              path=f3_path,
                              netprint_id='latest',
                              netprint_name=normalize_name(f3_path),
                              state=FileState.LATEST)

        request = testing.DummyRequest()
        self.setUpPyramid(request=request)

        class netprint(object):
            @staticmethod
            def list():
                return [
                        create_netprint_item(
                            id='uncontrolled',
                            name='uncontrolled'),
                        create_netprint_item(
                            id='latest',
                            name=normalize_name('/latest.data')),
                       ]

        put_result = []

        class dropbox(object):
            @staticmethod
            def put(path, file_obj):
                put_result.append((path, file_obj))

        service = self._getOUT(user)
        service.netprint = netprint
        service.dropbox = dropbox

        (need_report, result) = service._make_report()
        self.assertTrue(need_report)
        self.assertItemsEqual(
            [(item['id'], item['name'], item.get('controlled', False),
              item['last_modified']) for item in result],
            [('FAKE:WAIT', f1.as_netprint_name(), True,
              f1.local_last_modified.strftime(DATETIME_FORMAT)),
             ('FAKE:ERROR', f2.as_netprint_name(), True,
              f2.local_last_modified.strftime(DATETIME_FORMAT)),
             ('uncontrolled', 'uncontrolled', False, None),
             ('latest', f3.as_netprint_name(), True,
              f3.local_last_modified.strftime(DATETIME_FORMAT)),
            ])

        # flush side-effect of above.
        memcache.flush_all()

        service.make_report()
        self.assertEqual(len(put_result), 1)
        self.assertEqual(put_result[0][0], REPORT_PATH)
        report_data = put_result[0][1].read()
        if False:
            with open('report.html', 'wb') as f:
                f.write(report_data)
        self.assertRegexpMatches(report_data, 'latest')
        self.assertRegexpMatches(report_data, 'uncontrolled')
Exemplo n.º 10
0
 def __collect_entries(data):
     if not data['is_dir'] and not data.get('is_deleted', False):
         result[normalize_name(data['path'])] = data