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
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()