Exemplo n.º 1
0
    def _parse_source(self):
        try:
            with open(self.source, mode='r') as file:
                item = unicode(file.read())
        except UnicodeDecodeError:
            with open(self.source, mode='r', encoding='UTF-8') as file:
                item = file.read()

        self._file_contents_raw = item
        parsed_content = re.match(self._regex, item)

        if parsed_content is None or parsed_content.group('metadata') is None:
            # Parsing failed, maybe there's no metadata
            raise PostMetadataError()

        if parsed_content.group('fence') is not None:
            self._fence = True

        # 'Clean' the YAML section since there might be tab characters
        metadata = parsed_content.group('metadata').replace('\t', '    ')
        try:
            metadata = yaml.load(metadata)
        except ScannerError:
            raise PostMetadataError("YAML error parsing metadata.")

        if not isinstance(metadata, dict):
            raise PostMetadataError(
                "Metadata isn't a dict. Instead, it's a %s." % type(metadata))

        # Make the metadata dict case insensitive
        metadata = CaseInsensitiveDict(metadata)

        content = parsed_content.group('content')
        return metadata, content
Exemplo n.º 2
0
class CaseInsensitiveDictTests(TestCase):
    def setUp(self):
        self.normal_dict = {"One": 1, "Two": 2}
        self.cid = CaseInsensitiveDict(self.normal_dict)

    def access_test(self):
        self.assertEqual(self.cid["one"], self.cid["OnE"])
        self.assertIs(self.cid.get("not_present", None), None)

    def assignment_test(self):
        self.cid["Three"] = 3
        self.assertEqual(self.cid["three"], 3)

    def del_test(self):
        del self.cid["one"]
        self.assertNotIn("One", self.cid)
        self.assertEqual(len(self.cid), 1)

    def pop_test(self):
        self.assertIsNotNone(self.cid.pop("two", None))
        self.assertRaises(KeyError, self.cid.pop, "pop")
Exemplo n.º 3
0
    def _wrapped_view(request, *args, **kwargs):
        qsp = CaseInsensitiveDict(request.REQUEST)
        kw = CaseInsensitiveDict(kwargs)
        try:
            provided_token = qsp['access_token']
        except KeyError:
            return HttpResponseForbidden()

        if 'id' in kw:
            resource_id = kw['id']
        elif 'file_id' in kw:
            resource_id = kw['file_id']
        elif 'resource_id' in kw:
            resource_id = kw['resource_id']
        else:
            return HttpResponseForbidden()

        user = authenticate(access_token=provided_token,
                            resource_id=resource_id)
        if user:
            login(request, user)
            return view_func(request, *args, **kwargs)
        return HttpResponseForbidden()
Exemplo n.º 4
0
 def setUp(self):
     self.normal_dict = {"One": 1, "Two": 2}
     self.cid = CaseInsensitiveDict(self.normal_dict)