Commits

Francisco Souza committed 6e4effd

Adição de uma aplicação para upload de imagens.

Comments (0)

Files changed (10)

 from google.appengine.ext import webapp
-from util.handler import ImagemDoProjetoHandler
+from util.handler import ImagemDoProjetoHandler, ImagemHandler
 from google.appengine.ext.webapp.util import run_wsgi_app
 
 application = webapp.WSGIApplication([
-    ('/Imagem', ImagemDoProjetoHandler),
+    ('/ImagemProjeto', ImagemDoProjetoHandler),
+    ('/Imagem', ImagemHandler)
 ], debug=True)
 
 def main():

imagens/__init__.py

Empty file added.
+from django.contrib.admin.options import ModelAdmin
+from forms import ImagemForm
+from django.contrib import admin
+from models import Imagem
+
+class ImagemAdmin(ModelAdmin):
+    form = ImagemForm
+    
+admin.site.register(Imagem, ImagemAdmin)
+#coding:utf-8
+from django import forms
+from models import Imagem
+
+class ImagemForm(forms.ModelForm):
+    class Meta:
+        model = Imagem
+        fields = ('descricao', 'arquivo', 'url')
+    
+    def save(self, commit = True):
+        imagem = super(ImagemForm, self).save(commit = True)
+        
+        imagem.url = '/Imagem?id=' + imagem.id
+        
+        if commit:
+            imagem.put()
+        
+        return imagem
+    
+    def save_m2m(self, *args, **kwargs):
+        '''Método workaround, para contornar um problema com o Django caducando.
+        '''
+        pass
+    

imagens/models.py

+#coding:utf-8
+from google.appengine.ext import db
+
+class Imagem(db.Model):
+    class Meta:
+        verbose_name = 'Imagem'
+        verbose_name_plural = 'Imagens' 
+    
+    descricao = db.StringProperty('Descrição', required = True)
+    arquivo = db.BlobProperty('Arquivo', required = True)
+    url = db.StringProperty('URL', required = False)
+
+    def __unicode__(self):
+        return self.descricao
+        
+    def __str__(self):
+        return self.__unicode__()
+# Create your views here.

projetos/templates/projetos/detalhes_projeto.html

         <div class="entry">
             <p>
                 {% if projeto.imagem %}
-                    <img src="/Imagem?projeto={{ projeto.key }}" align="right" />
+                    <img src="/ImagemProjeto?projeto={{ projeto.key }}" align="right" />
                 {% endif %}
                 {{ projeto.descricao|safe }}
                 <br /><br />

settings.py.example

     'ragendja',
     'mediautils',
     'projetos',
+    'imagens',
 )
 
 # List apps which should be left out from app settings and urlsauto loading
     (r'^$', 'views.redireciona'),
     (r'^contato/', 'views.contato'),
     (r'^projetos/', include('projetos.urls')),
-    (r'criar_admin/', 'views.criar_admin'),
+    #(r'criar_admin/', 'views.criar_admin'),
     #(r'criar_projeto/', 'views.criar_projeto'),
 )
 from google.appengine.ext import webapp, db
-from projetos.models import Projeto
 
 class ImagemDoProjetoHandler(webapp.RequestHandler):
     
             self.response.headers['Content-Type'] = 'image/png'
             self.response.out.write(projeto.imagem)
         else:
+            self.error(404)
+            
+class ImagemHandler(webapp.RequestHandler):
+    def get(self):
+        imagem = db.get(self.request.get('id'))
+        if imagem.arquivo:
+            self.response.headers['Content-Type'] = 'image/png'
+            self.response.out.write(imagem.arquivo)
+        else:
             self.error(404)