コード例 #1
0
ファイル: handlers.py プロジェクト: yesudeep/cmc
    def post(self, id):
        import os, static, hashlib
        from models import StoryAuthor, Story, StoryDocument
        from django.template.defaultfilters import slugify
        from google.appengine.runtime.apiproxy_errors import RequestTooLargeError
        
        content = self.request.get('content')
        title = self.request.get('title')
        
        story = Story.get_by_id(int(id, 10))
        story.content = content
        story.title = title
        story.put()

        try:
            request_document = self.request.get('document')
            document_file = self.request.POST['document']        
            if request_document:
                document_body = document_file.value
                document_digest = hashlib.sha1(document_body).hexdigest()
                split_name = os.path.splitext(os.path.basename(document_file.filename))
                filename = slugify(split_name[0]) or document_digest
                document_name = filename + split_name[1]
        
                document_path = '/story/%d/document/%s/%s' % (story.key().id(), document_digest, document_name)
                logging.info(document_path)
                story_document = StoryDocument(story=story, path=document_path, name=document_name)
                story_document.put()
                document = static.set(document_path, document_body, document_file.type)
            self.get(id)                
        except RequestTooLargeError, message:
            self.render_to_response("story_edit.html", 
                story=Story.get_by_id(int(id, 10)),
                request_too_large_error=True)
コード例 #2
0
ファイル: handlers.py プロジェクト: yesudeep/cmc
    def post(self):
        import os, static, hashlib
        from models import StoryAuthor, Story, StoryDocument
        from django.template.defaultfilters import slugify
        from google.appengine.runtime.apiproxy_errors import RequestTooLargeError
        
        title = self.request.get('title')
        content = self.request.get('content')
        full_name = self.request.get('full_name')
        mobile_number = self.request.get('mobile_number')
        email = self.request.get('email')

        author = StoryAuthor(full_name=full_name, email=email, mobile_number=mobile_number)
        author.put()
    
        story = Story(title=title)
        if content:
            story.content = content
        story.author = author
        story.put()

        try:
            request_document = self.request.get('document')
            if request_document:
                document_file = self.request.POST['document']        
                document_body = document_file.value
                document_digest = hashlib.sha1(document_body).hexdigest()
                split_name = os.path.splitext(os.path.basename(document_file.filename))
                filename = slugify(split_name[0]) or document_digest
                document_name = filename + split_name[1]
        
                document_path = '/story/%d/document/%s/%s' % (story.key().id(), document_digest, document_name)
                logging.info(document_path)
                story_document = StoryDocument(story=story, path=document_path, name=document_name)
                story_document.put()
                document = static.set(document_path, document_body, document_file.type, name=document_name)
                self.render_to_response("thanks/story.html", document=story_document, story=story)
            else:
                self.render_to_response("thanks/story.html", story=story)
                
        except RequestTooLargeError, message:
            from api_preferences import facebook as fb_prefs, google_friend_connect as gfc
            self.render_to_response("start.html",
                                       FACEBOOK_API_KEY=fb_prefs.get('api_key'),
                                       FACEBOOK_CROSS_DOMAIN_RECEIVER_URL=fb_prefs.get('cross_domain_receiver_url'),
                                       GOOGLE_FRIEND_CONNECT_SITE_ID=gfc.get('site_id'),
                                       request_too_large_error=True,
                                       title=title,
                                       content=content,
                                       full_name=full_name,
                                       email=email,
                                       mobile_number=mobile_number)