summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api.py8
-rw-r--r--blog/admin.py4
-rw-r--r--blog/urls.py14
-rw-r--r--blog/views.py22
-rw-r--r--elgarito/__init__.py0
-rw-r--r--elgarito/urls.py33
-rw-r--r--elgarito/wsgi.py14
-rw-r--r--encuestas/admin.py4
-rw-r--r--encuestas/models.py7
-rw-r--r--encuestas/urls.py12
-rw-r--r--encuestas/views.py12
-rw-r--r--fotos/admin.py4
-rw-r--r--fotos/views.py22
-rw-r--r--[-rwxr-xr-x]manage.py15
-rw-r--r--principal/views.py2
-rw-r--r--servicios/xmlrpc.py13
-rw-r--r--setup.py2
-rw-r--r--tablon/admin.py4
-rw-r--r--tablon/decorators.py23
-rw-r--r--tablon/urls.py16
-rw-r--r--tablon/views.py29
-rw-r--r--templates/base.html10
-rw-r--r--templates/registration/login.html2
-rw-r--r--urls.py15
-rw-r--r--usuarios/admin.py2
-rw-r--r--usuarios/models.py10
-rw-r--r--usuarios/urls.py19
-rw-r--r--usuarios/views.py17
-rw-r--r--wiki/admin.py2
-rw-r--r--wiki/urls.py20
-rw-r--r--wiki/views.py23
31 files changed, 238 insertions, 142 deletions
diff --git a/api.py b/api.py
index 639015c..6456b21 100644
--- a/api.py
+++ b/api.py
@@ -3,14 +3,16 @@
from tastypie.resources import ModelResource
from tastypie import fields
-from elgarito.encuestas.models import Encuesta, Respuesta, VotoUsuario
-from elgarito.tablon.models import Mensaje
+from encuestas.models import Encuesta, Respuesta
+from tablon.models import Mensaje
+
class RespuestaResource(ModelResource):
class Meta:
queryset = Respuesta.objects.all()
resource_name = 'respuesta'
+
class EncuestaResource(ModelResource):
class Meta:
queryset = Encuesta.objects.all()
@@ -21,8 +23,8 @@ class EncuestaResource(ModelResource):
resource_name = 'encuesta'
+
class MensajeResource(ModelResource):
class Meta:
queryset = Mensaje.objects.all()
resource_name = 'mensaje'
-
diff --git a/blog/admin.py b/blog/admin.py
index b6b7835..7455800 100644
--- a/blog/admin.py
+++ b/blog/admin.py
@@ -1,12 +1,14 @@
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
from django.contrib import admin
-from elgarito.blog.models import Articulo, Comentario
+from blog.models import Articulo, Comentario
+
class ArticuloAdmin(admin.ModelAdmin):
list_display = ('titulo', 'autor', 'created_on')
admin.site.register(Articulo, ArticuloAdmin)
+
class ComentarioAdmin(admin.ModelAdmin):
list_display = ('texto', 'autor', 'created_on')
diff --git a/blog/urls.py b/blog/urls.py
index b04d4cd..04324df 100644
--- a/blog/urls.py
+++ b/blog/urls.py
@@ -1,9 +1,11 @@
-from django.conf.urls.defaults import *
+from django.conf.urls import patterns, url
-urlpatterns = patterns('elgarito.blog.views',
- (r'^$', 'index'),
+urlpatterns = patterns(
+ 'blog.views',
+
+ url(r'^$', 'index'),
- (r'^(?P<articulo_id>\d+)/$', 'articulo'),
- (r'^nuevo/$', 'nuevo'),
- (r'^(?P<articulo_id>\d+)/crear_comentario/$', 'crear_comentario'),
+ url(r'^(?P<articulo_id>\d+)/$', 'articulo'),
+ url(r'^nuevo/$', 'nuevo'),
+ url(r'^(?P<articulo_id>\d+)/crear_comentario/$', 'crear_comentario'),
)
diff --git a/blog/views.py b/blog/views.py
index ac56d21..182905b 100644
--- a/blog/views.py
+++ b/blog/views.py
@@ -1,15 +1,17 @@
-from elgarito.blog.models import Articulo, ArticuloForm, Comentario, ComentarioForm
+from blog.models import Articulo, ArticuloForm, Comentario, ComentarioForm
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import user_passes_test
+
def index(request):
lista_articulos = Articulo.objects.all()
return render_to_response('blog/index.html',
RequestContext(request, {
'lista_articulos': lista_articulos}))
+
def articulo(request, articulo_id):
articulo = get_object_or_404(Articulo, pk=articulo_id)
lista_comentarios = Comentario.objects.filter(articulo__pk=articulo_id)
@@ -21,27 +23,29 @@ def articulo(request, articulo_id):
'form': form,
'user': request.user}))
+
@user_passes_test(lambda u: u.has_perm('blog.can_add_comentario'),
login_url='/usuarios/login/')
def crear_comentario(request, articulo_id):
articulo = get_object_or_404(Articulo, pk=articulo_id)
comentario = Comentario(id=None,
- texto = request.POST['texto'],
- autor = request.user,
- articulo = articulo,
- )
+ texto=request.POST['texto'],
+ autor=request.user,
+ articulo=articulo,
+ )
comentario.save()
return HttpResponseRedirect('/blog/%s/' % articulo_id)
+
@user_passes_test(lambda u: u.has_perm('blog.can_add_articulo'),
login_url='/usuarios/login/')
def nuevo(request):
if request.POST:
articulo = Articulo(id=None,
- titulo = request.POST['titulo'],
- texto = request.POST['texto'],
- autor = request.user,
- )
+ titulo=request.POST['titulo'],
+ texto=request.POST['texto'],
+ autor=request.user,
+ )
articulo.save()
return HttpResponseRedirect('/blog/%s/' % articulo.id)
else:
diff --git a/elgarito/__init__.py b/elgarito/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/elgarito/__init__.py
diff --git a/elgarito/urls.py b/elgarito/urls.py
new file mode 100644
index 0000000..bff076c
--- /dev/null
+++ b/elgarito/urls.py
@@ -0,0 +1,33 @@
+from django.conf.urls import patterns, include, url
+#from django.views.generic.simple import redirect_to
+
+from django.contrib import admin
+admin.autodiscover()
+
+urlpatterns = patterns(
+ '',
+ # Examples:
+ # url(r'^$', 'elgarito.views.home', name='home'),
+ # url(r'^blog/', include('blog.urls')),
+
+ url(r'^$', 'principal.views.index'),
+
+ url(r'^blog/', include('blog.urls')),
+ url(r'^tablon/', include('tablon.urls')),
+ url(r'^wiki/', include('wiki.urls')),
+ url(r'^usuarios/', include('usuarios.urls')),
+ url(r'^usuario/(?P<usuario_id>\w+)/$', 'usuarios.views.ver'),
+ url(r'^accounts/profile/$', 'usuarios.views.mi_perfil'),
+ #(r'^fotos/$', redirect_to, {'url': '/fotos/gallery'}),
+ url(r'^fotos/', include('photologue.urls')),
+ url(r'^encuestas/', include('encuestas.urls')),
+
+ url(r'^eventos/', 'wiki.views.pagina', {'titulo': 'Eventos', 'static': 'eventos'}),
+ url(r'^eventos/editar', 'wiki.views.editar', {'titulo': 'Eventos', 'static': 'eventos'}),
+ url(r'^labuenakno/', 'wiki.views.pagina', {'titulo': 'LaBuenaKno', 'static': 'labuenakno'}),
+ url(r'^labuenakno/editar', 'wiki.views.editar', {'titulo': 'LaBuenaKno', 'static': 'labuenakno'}),
+ url(r'^enlaces/', 'wiki.views.pagina', {'titulo': 'Enlaces', 'static': 'enlaces'}),
+ url(r'^enlaces/editar', 'wiki.views.editar', {'titulo': 'Enlaces', 'static': 'enlaces'}),
+
+ url(r'^admin/', include(admin.site.urls)),
+)
diff --git a/elgarito/wsgi.py b/elgarito/wsgi.py
new file mode 100644
index 0000000..2529520
--- /dev/null
+++ b/elgarito/wsgi.py
@@ -0,0 +1,14 @@
+"""
+WSGI config for elgarito project.
+
+It exposes the WSGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/
+"""
+
+import os
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "elgarito.settings")
+
+from django.core.wsgi import get_wsgi_application
+application = get_wsgi_application()
diff --git a/encuestas/admin.py b/encuestas/admin.py
index e298448..ae9f44e 100644
--- a/encuestas/admin.py
+++ b/encuestas/admin.py
@@ -1,6 +1,7 @@
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
from django.contrib import admin
-from elgarito.encuestas.models import Encuesta, Respuesta, VotoUsuario
+from encuestas.models import Encuesta, Respuesta, VotoUsuario
+
class EncuestaAdmin(admin.ModelAdmin):
list_display = (
@@ -13,6 +14,7 @@ class EncuestaAdmin(admin.ModelAdmin):
admin.site.register(Encuesta, EncuestaAdmin)
+
class RespuestaAdmin(admin.ModelAdmin):
list_display = (
'encuesta',
diff --git a/encuestas/models.py b/encuestas/models.py
index 8d54fef..c9d527b 100644
--- a/encuestas/models.py
+++ b/encuestas/models.py
@@ -1,10 +1,10 @@
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
from django.db import models
from django.contrib.auth.models import User
-from django.contrib.auth.models import Group
-from elgarito.tablon.models import Tema
+from tablon.models import Tema
from django.forms import ModelForm
+
class Encuesta(models.Model):
pregunta = models.CharField(max_length=200)
#descripcion
@@ -16,13 +16,13 @@ class Encuesta(models.Model):
tema = models.ForeignKey(Tema)
#activa
-
def __repr__(self):
return self.pregunta
def __unicode__(self):
return self.pregunta
+
class EncuestaForm(ModelForm):
class Meta:
model = Encuesta
@@ -45,6 +45,7 @@ class Respuesta(models.Model):
def ultimo_mensaje(self):
return self.mensaje_set.latest()
+
class VotoUsuario(models.Model):
usuario = models.ForeignKey(User)
encuesta = models.ForeignKey(Encuesta)
diff --git a/encuestas/urls.py b/encuestas/urls.py
index ac2e286..b24e318 100644
--- a/encuestas/urls.py
+++ b/encuestas/urls.py
@@ -1,8 +1,10 @@
-from django.conf.urls.defaults import *
+from django.conf.urls import patterns, url
-urlpatterns = patterns('elgarito.encuestas.views',
- (r'^$', 'index'),
+urlpatterns = patterns(
+ 'encuestas.views',
+
+ url(r'^$', 'index'),
- (r'^votar/(?P<foro_id>\d+)/$', 'votar'),
- (r'^ver/(?P<foro_id>\d+)/$', 'ver'),
+ url(r'^votar/(?P<foro_id>\d+)/$', 'votar'),
+ url(r'^ver/(?P<foro_id>\d+)/$', 'ver'),
)
diff --git a/encuestas/views.py b/encuestas/views.py
index e013d1a..6108e39 100644
--- a/encuestas/views.py
+++ b/encuestas/views.py
@@ -1,11 +1,8 @@
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
-from elgarito.encuestas.models import Encuesta
-from django.contrib.auth.models import User
-from django.shortcuts import render_to_response, get_object_or_404
+from encuestas.models import Encuesta
+from django.shortcuts import render_to_response
from django.template import RequestContext
-from django.http import HttpResponseRedirect
-from django.contrib.auth.decorators import user_passes_test
-from datetime import datetime
+
def index(request):
lista_encuestas = Encuesta.objects.all()
@@ -14,6 +11,7 @@ def index(request):
'lista_encuestas': lista_encuestas,
}))
+
def ver(request):
lista_encuestas = Encuesta.objects.all()
return render_to_response('encuestas/index.html',
@@ -21,10 +19,10 @@ def ver(request):
'lista_encuestas': lista_encuestas,
}))
+
def votar(request):
lista_encuestas = Encuesta.objects.all()
return render_to_response('encuestas/index.html',
RequestContext(request, {
'lista_encuestas': lista_encuestas,
}))
-
diff --git a/fotos/admin.py b/fotos/admin.py
index 8a5f94a..f5cc4cc 100644
--- a/fotos/admin.py
+++ b/fotos/admin.py
@@ -1,12 +1,14 @@
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
from django.contrib import admin
-from elgarito.fotos.models import Album, Foto
+from fotos.models import Album, Foto
+
class AlbumAdmin(admin.ModelAdmin):
list_display = ('nombre', 'autor', 'created_on')
admin.site.register(Album, AlbumAdmin)
+
class FotoAdmin(admin.ModelAdmin):
list_display = ('nombre', 'album', 'autor', 'created_on')
diff --git a/fotos/views.py b/fotos/views.py
index 6b0fd91..4288fc8 100644
--- a/fotos/views.py
+++ b/fotos/views.py
@@ -1,18 +1,24 @@
-from elgarito.fotos.models import Album, Foto, Tag
-from django.shortcuts import render_to_response, get_object_or_404
+from fotos.models import Album
+from django.shortcuts import render_to_response
from django.template import RequestContext
+
def index(request):
lista_albums = Album.objects.all()
- return render_to_response('fotos/index.html', RequestContext(request,
- {'lista_albums': lista_albums}))
+ return render_to_response('fotos/index.html',
+ RequestContext(request,
+ {'lista_albums': lista_albums}))
+
def album(request):
lista_albums = Album.objects.all()
- return render_to_response('fotos/index.html', RequestContext(request,
- {'lista_albums': lista_albums}))
+ return render_to_response('fotos/index.html',
+ RequestContext(request,
+ {'lista_albums': lista_albums}))
+
def foto(request):
lista_albums = Album.objects.all()
- return render_to_response('fotos/index.html', RequestContext(request,
- {'lista_albums': lista_albums}))
+ return render_to_response('fotos/index.html',
+ RequestContext(request,
+ {'lista_albums': lista_albums}))
diff --git a/manage.py b/manage.py
index 008aeeb..d101a4f 100755..100644
--- a/manage.py
+++ b/manage.py
@@ -1,11 +1,10 @@
#!/usr/bin/env python
-from django.core.management import execute_manager
-try:
- import settings # Assumed to be in the same directory.
-except ImportError:
- import sys
- sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n" % __file__)
- sys.exit(1)
+import os
+import sys
if __name__ == "__main__":
- execute_manager(settings)
+ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "elgarito.settings")
+
+ from django.core.management import execute_from_command_line
+
+ execute_from_command_line(sys.argv)
diff --git a/principal/views.py b/principal/views.py
index 9ec7a8f..776112a 100644
--- a/principal/views.py
+++ b/principal/views.py
@@ -1,5 +1,5 @@
# Create your views here.
-from elgarito.shortcuts import boilerplate_render
+from shortcuts import boilerplate_render
index = boilerplate_render('principal/index.html')
diff --git a/servicios/xmlrpc.py b/servicios/xmlrpc.py
index 995911c..51e2b68 100644
--- a/servicios/xmlrpc.py
+++ b/servicios/xmlrpc.py
@@ -7,7 +7,7 @@
from SimpleXMLRPCServer import SimpleXMLRPCDispatcher
from django.http import HttpResponse
-from elgarito.blog.models import Articulo
+from blog.models import Articulo
dispatcher = SimpleXMLRPCDispatcher(allow_none=False, encoding=None)
@@ -32,7 +32,7 @@ def rpc_handler(request):
for method in methods:
sig = dispatcher.system_methodSignature(method)
- help = dispatcher.system_methodHelp(method)
+ help = dispatcher.system_methodHelp(method)
response.write("<li><b>%s</b>: [%s] %s</li>" % (method, sig, help))
response.write("</ul>")
@@ -40,6 +40,7 @@ def rpc_handler(request):
response['Content-length'] = str(len(response.content))
return response
+
def articulos_blog(max=10):
"""
Devuelve los últimos artículos del blog. Admite un argumento, que indica el
@@ -49,10 +50,10 @@ def articulos_blog(max=10):
lista = []
for a in articulos:
lista.append({
- "titulo" : a.titulo,
- "autor" : a.autor.username,
- "created_on" : a.created_on.__str__(),
- "texto" :a.texto
+ "titulo": a.titulo,
+ "autor": a.autor.username,
+ "created_on": a.created_on.__str__(),
+ "texto": a.texto
})
return lista
dispatcher.register_function(articulos_blog, 'articulos_blog')
diff --git a/setup.py b/setup.py
index 43f4a75..d10d645 100644
--- a/setup.py
+++ b/setup.py
@@ -13,7 +13,7 @@ setup(
'django',
'django-oembed',
'django-photologue',
- 'django-tastypie',
+ 'djangorestframework',
'markdown',
'PIL',
],
diff --git a/tablon/admin.py b/tablon/admin.py
index 66b22bb..fea74be 100644
--- a/tablon/admin.py
+++ b/tablon/admin.py
@@ -1,6 +1,6 @@
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
from django.contrib import admin
-from elgarito.tablon.models import Foro, Tema, Mensaje, PermisoForo
+from tablon.models import Foro, Tema, Mensaje, PermisoForo
class ForoAdmin(admin.ModelAdmin):
@@ -13,6 +13,7 @@ class ForoAdmin(admin.ModelAdmin):
admin.site.register(Foro, ForoAdmin)
+
class TemaAdmin(admin.ModelAdmin):
list_display = (
'titulo',
@@ -37,6 +38,7 @@ class MensajeAdmin(admin.ModelAdmin):
admin.site.register(Mensaje, MensajeAdmin)
+
class PermisoForoAdmin(admin.ModelAdmin):
list_display = (
'foro',
diff --git a/tablon/decorators.py b/tablon/decorators.py
index 06d9501..aeff66a 100644
--- a/tablon/decorators.py
+++ b/tablon/decorators.py
@@ -1,8 +1,8 @@
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
-from elgarito.tablon.models import Tema,Foro
-from elgarito.usuarios.models import UserProfile
+from tablon.models import Tema, Foro
from django.http import HttpResponseForbidden, HttpResponseRedirect
+
def foro_can(permission):
"""
Decorator que comprueba los permisos del usuario para leer/escribir en un foro
@@ -10,21 +10,23 @@ def foro_can(permission):
def _dec(view_func):
def _foro_can(request, *args, **kwargs):
if permission == 'read':
- if Foro.objects.get(id=kwargs['foro_id']).global_read == True:
+ if Foro.objects.get(id=kwargs['foro_id']).global_read is True:
return view_func(request, *args, **kwargs)
if request.user.is_anonymous():
- return HttpResponseRedirect('/usuarios/login/?next=%s' % request.path)
+ return HttpResponseRedirect('/usuarios/login/?next=%s' % request.path)
if permission == 'write':
- if Foro.objects.get(id=kwargs['foro_id']).global_write == True:
+ if Foro.objects.get(id=kwargs['foro_id']).global_write is True:
return view_func(request, *args, **kwargs)
if request.user.get_profile().foro_can(permission, kwargs['foro_id']):
return view_func(request, *args, **kwargs)
- return HttpResponseForbidden('<h1>No tiene suficientes permisos para realizar esta operación (%s).</h1>' % (permission))
+ return HttpResponseForbidden('<h1>No tiene suficientes permisos para realizar esta operación (%s).</h1>' %
+ (permission))
_foro_can.__doc__ = view_func.__doc__
_foro_can.__dict__ = view_func.__dict__
return _foro_can
return _dec
+
def tema_can(permission):
"""
Decorator que comprueba los permisos del usuario para leer/contestar un tema
@@ -33,16 +35,17 @@ def tema_can(permission):
def _tema_can(request, *args, **kwargs):
foro_id = Tema.objects.get(id=kwargs['tema_id']).foro_id
if permission == 'read':
- if Foro.objects.get(id=foro_id).global_read == True:
+ if Foro.objects.get(id=foro_id).global_read is True:
return view_func(request, *args, **kwargs)
if not request.user.is_authenticated():
- return HttpResponseRedirect('/usuarios/login/?next=%s' % request.path)
+ return HttpResponseRedirect('/usuarios/login/?next=%s' % request.path)
if permission == 'write':
- if Foro.objects.get(id=foro_id).global_write == True:
+ if Foro.objects.get(id=foro_id).global_write is True:
return view_func(request, *args, **kwargs)
if request.user.get_profile().foro_can(permission, foro_id):
return view_func(request, *args, **kwargs)
- return HttpResponseForbidden('<h1>No tiene suficientes permisos para realizar esta operación (%s).</h1>' % (permission))
+ return HttpResponseForbidden('<h1>No tiene suficientes permisos para realizar esta operación (%s).</h1>' %
+ (permission))
_tema_can.__doc__ = view_func.__doc__
_tema_can.__dict__ = view_func.__dict__
return _tema_can
diff --git a/tablon/urls.py b/tablon/urls.py
index 71fc677..065df8b 100644
--- a/tablon/urls.py
+++ b/tablon/urls.py
@@ -1,11 +1,13 @@
-from django.conf.urls.defaults import *
+from django.conf.urls import patterns, url
-urlpatterns = patterns('elgarito.tablon.views',
- (r'^$', 'index'),
+urlpatterns = patterns(
+ 'tablon.views',
+
+ url(r'^$', 'index'),
- (r'^foro/(?P<foro_id>\d+)/$', 'foro'),
- (r'^foro/(?P<foro_id>\d+)/nuevo_tema/$', 'nuevo_tema'),
+ url(r'^foro/(?P<foro_id>\d+)/$', 'foro'),
+ url(r'^foro/(?P<foro_id>\d+)/nuevo_tema/$', 'nuevo_tema'),
- (r'^tema/(?P<tema_id>\d+)/$', 'tema'),
- (r'^tema/(?P<tema_id>\d+)/responder/$', 'responder'),
+ url(r'^tema/(?P<tema_id>\d+)/$', 'tema'),
+ url(r'^tema/(?P<tema_id>\d+)/responder/$', 'responder'),
)
diff --git a/tablon/views.py b/tablon/views.py
index 3834113..3e0c851 100644
--- a/tablon/views.py
+++ b/tablon/views.py
@@ -1,12 +1,11 @@
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
-from elgarito.tablon.models import Foro, Tema, Mensaje, MensajeForm, Visita
-from elgarito.tablon.decorators import *
-from django.contrib.auth.models import User
+from tablon.models import Foro, Tema, Mensaje, MensajeForm, Visita
+from tablon.decorators import foro_can, tema_can
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.http import HttpResponseRedirect
-from django.contrib.auth.decorators import user_passes_test
-from datetime import datetime
+from django.utils import timezone
+
def index(request):
lista_foros = Foro.objects.all()
@@ -15,6 +14,7 @@ def index(request):
'lista_foros': lista_foros,
}))
+
@foro_can('read')
def foro(request, foro_id):
foro = get_object_or_404(Foro, pk=foro_id)
@@ -25,6 +25,7 @@ def foro(request, foro_id):
'lista_temas': lista_temas,
}))
+
@tema_can('read')
def tema(request, tema_id):
tema = get_object_or_404(Tema, pk=tema_id)
@@ -34,17 +35,17 @@ def tema(request, tema_id):
try:
v = Visita.objects.get(usuario=request.user.id, tema=tema_id)
ult_visita = v.fecha
- v.fecha = datetime.now()
+ v.fecha = timezone.now()
except Visita.DoesNotExist:
v = Visita(usuario=request.user, tema=tema)
- ult_visita = datetime.min
- v.save();
+ ult_visita = timezone.min
+ v.save()
else:
- ult_visita = datetime.now()
+ ult_visita = timezone.now()
visitados = {}
for m in lista_mensajes:
if (m.created_on > ult_visita):
- visitados[m.id] = 1;
+ visitados[m.id] = 1
return render_to_response('tablon/tema.html',
RequestContext(request, {
@@ -55,6 +56,7 @@ def tema(request, tema_id):
'visitados': visitados,
}))
+
@foro_can('write')
def nuevo_tema(request, foro_id):
if request.POST:
@@ -64,14 +66,14 @@ def nuevo_tema(request, foro_id):
titulo=request.POST['titulo'],
foro=foro,
autor=usuario,
- )
+ )
tema.save()
mensaje = Mensaje(id=None,
titulo=request.POST['titulo'],
texto=request.POST['texto'],
tema=tema,
autor=usuario,
- )
+ )
mensaje.save()
return HttpResponseRedirect('/tablon/tema/%s/' % tema.id)
else:
@@ -83,6 +85,7 @@ def nuevo_tema(request, foro_id):
'foro': foro,
}))
+
@tema_can('write')
def responder(request, tema_id):
if request.POST:
@@ -92,7 +95,7 @@ def responder(request, tema_id):
texto=request.POST['texto'],
tema=tema,
autor=request.user,
- )
+ )
mensaje.save()
return HttpResponseRedirect('/tablon/tema/%s/' % tema.id)
diff --git a/templates/base.html b/templates/base.html
index 141fee5..7a11db6 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -3,11 +3,11 @@
<meta charset="utf-8">
<title>{% block title %}El Garito{% endblock %}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- <link rel="StyleSheet" href="/static/estilos/bootstrap.min.css" type="text/css" />
- <link rel="StyleSheet" href="/static/estilos/bootstrap-responsive.min.css" type="text/css" />
- <link rel="StyleSheet" href="/static/estilos/elgarito.css" type="text/css" />
- <link rel="SHORTCUT ICON" href="/static/images/favicon.ico" />
- <link rel="icon" href="/static/images/favicon.ico" type="image/vnd.microsoft.icon" />
+ <link rel="StyleSheet" href="{{ STATIC_URL }}estilos/bootstrap.min.css" type="text/css" />
+ <link rel="StyleSheet" href="{{ STATIC_URL }}estilos/bootstrap-responsive.min.css" type="text/css" />
+ <link rel="StyleSheet" href="{{ STATIC_URL }}estilos/elgarito.css" type="text/css" />
+ <link rel="SHORTCUT ICON" href="{{ STATIC_URL }}images/favicon.ico" />
+ <link rel="icon" href="{{ STATIC_URL }}images/favicon.ico" type="image/vnd.microsoft.icon" />
{% block extra_header %}
{% endblock %}
</head>
diff --git a/templates/registration/login.html b/templates/registration/login.html
index da38bd9..2e022d2 100644
--- a/templates/registration/login.html
+++ b/templates/registration/login.html
@@ -7,7 +7,7 @@
{% block content %}
<h2>Por favor introduce tu nombre de usuario y contraseña</h2>
-<form method="post" class="form" action="{% url django.contrib.auth.views.login %}">
+<form method="post" class="form" action="{% url "django.contrib.auth.views.login" %}">
{% csrf_token %}
{{ form|bootstrap }}
diff --git a/urls.py b/urls.py
index 4df0fd3..5a6dc75 100644
--- a/urls.py
+++ b/urls.py
@@ -3,13 +3,13 @@ from django.conf import settings
from django.conf.urls.defaults import *
from django.views.generic.simple import redirect_to
from django.contrib import admin
-from tastypie.api import Api
-from elgarito.api import EncuestaResource, RespuestaResource, MensajeResource
+#from tastypie.api import Api
+#from api import EncuestaResource, RespuestaResource, MensajeResource
-v1_api = Api(api_name='v1')
-v1_api.register(EncuestaResource())
-v1_api.register(RespuestaResource())
-v1_api.register(MensajeResource())
+#v1_api = Api(api_name='v1')
+#v1_api.register(EncuestaResource())
+#v1_api.register(RespuestaResource())
+#v1_api.register(MensajeResource())
admin.autodiscover()
@@ -50,5 +50,6 @@ urlpatterns = patterns(
(r'^servicios/', include('elgarito.servicios.urls')),
# API
- (r'^api/', include(v1_api.urls)),
+ #(r'^api/', include(v1_api.urls)),
+ url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
)
diff --git a/usuarios/admin.py b/usuarios/admin.py
index e6ce5ba..6ff171f 100644
--- a/usuarios/admin.py
+++ b/usuarios/admin.py
@@ -1,7 +1,7 @@
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
from django.contrib import admin
-from elgarito.usuarios.models import UserProfile
+from usuarios.models import UserProfile
class UserProfileAdmin(admin.ModelAdmin):
diff --git a/usuarios/models.py b/usuarios/models.py
index 3f5b3c7..f63de7a 100644
--- a/usuarios/models.py
+++ b/usuarios/models.py
@@ -1,9 +1,10 @@
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
-from elgarito.tablon.models import PermisoForo
+from tablon.models import PermisoForo
from django.db import models
from django.contrib.auth.models import User
from django import forms
+
class UserProfile(models.Model):
user = models.OneToOneField(User)
show_email = models.BooleanField("Mostrar e-mail", blank=True)
@@ -29,24 +30,27 @@ class UserProfile(models.Model):
pass
return False
+
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
- exclude = ('user')
+ exclude = ('user',)
+
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ('first_name', 'last_name', 'email')
+
class UserProfileCreateForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('show_email', 'url', 'msn_id', 'jabber_id', 'imagen')
+
class UserCreateForm(forms.ModelForm):
class Meta:
model = User
fields = ('username', 'password', 'first_name', 'last_name', 'email')
-
diff --git a/usuarios/urls.py b/usuarios/urls.py
index 2b09146..1552882 100644
--- a/usuarios/urls.py
+++ b/usuarios/urls.py
@@ -1,14 +1,15 @@
-from django.conf.urls.defaults import *
+from django.conf.urls import patterns, url
-urlpatterns = patterns('',
- (r'^$', 'elgarito.usuarios.views.index'),
+urlpatterns = patterns(
+ '',
+ url(r'^$', 'usuarios.views.index'),
- (r'^lista/$', 'elgarito.usuarios.views.lista'),
- (r'^nuevo/$', 'elgarito.usuarios.views.nuevo'),
- (r'^ver/(?P<usuario_id>\w+)/$', 'elgarito.usuarios.views.ver'),
- (r'^mi_perfil/$', 'elgarito.usuarios.views.mi_perfil'),
+ url(r'^lista/$', 'usuarios.views.lista'),
+ url(r'^nuevo/$', 'usuarios.views.nuevo'),
+ url(r'^ver/(?P<usuario_id>\w+)/$', 'usuarios.views.ver'),
+ url(r'^mi_perfil/$', 'usuarios.views.mi_perfil'),
- (r'^login/', 'django.contrib.auth.views.login'),
- (r'^logout/', 'django.contrib.auth.views.logout'),
+ url(r'^login/', 'django.contrib.auth.views.login'),
+ url(r'^logout/', 'django.contrib.auth.views.logout'),
)
diff --git a/usuarios/views.py b/usuarios/views.py
index 331cfae..48b5cd7 100644
--- a/usuarios/views.py
+++ b/usuarios/views.py
@@ -1,5 +1,5 @@
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
-from elgarito.usuarios.models import UserProfile, UserProfileForm, UserForm
+from usuarios.models import UserProfile, UserProfileForm, UserForm
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django.shortcuts import render_to_response, get_object_or_404
@@ -7,9 +7,11 @@ from django.template import RequestContext
from django.contrib.auth.decorators import user_passes_test
from django.http import HttpResponseRedirect
+
def index(request):
return lista(request)
+
def lista(request):
lista_usuarios = User.objects.all()
return render_to_response('usuarios/lista.html',
@@ -18,6 +20,7 @@ def lista(request):
'user': request.user,
}))
+
def ver(request, usuario_id):
usuario = get_object_or_404(User, username=usuario_id)
if usuario == request.user:
@@ -30,6 +33,7 @@ def ver(request, usuario_id):
'show_edit': show_edit
}))
+
def nuevo(request):
"""Crear un nuevo usuario"""
# Si el usuario ya está autenticado lo redirigimos a su perfil
@@ -38,16 +42,17 @@ def nuevo(request):
# Si es un POST, creamos el usuario
if request.POST:
userform = UserCreationForm(request.POST)
- user = userform.save()
+ userform.save()
return HttpResponseRedirect('../mi_perfil/')
# Si no es un POST, mostramos formulario para crear el usuario
else:
userform = UserCreationForm()
return render_to_response('usuarios/nuevo.html',
RequestContext(request, {
- 'userform' : userform
+ 'userform': userform
}))
+
@user_passes_test(lambda u: u.is_authenticated(),
login_url='/usuarios/login/')
def mi_perfil(request):
@@ -57,7 +62,7 @@ def mi_perfil(request):
profile = UserProfile.objects.get(user=request.user)
except UserProfile.DoesNotExist:
profile = UserProfile(user=request.user)
- if request.POST.has_key('show_email'):
+ if 'show_email' in request.POST:
profile.show_email = True
else:
profile.show_email = False
@@ -83,7 +88,7 @@ def mi_perfil(request):
form = UserProfileForm(instance=usuario)
return render_to_response('usuarios/mi_perfil.html',
RequestContext(request, {
- 'userform' : userform,
- 'form' : form,
+ 'userform': userform,
+ 'form': form,
'usuario': usuario
}))
diff --git a/wiki/admin.py b/wiki/admin.py
index adb63d4..95835e8 100644
--- a/wiki/admin.py
+++ b/wiki/admin.py
@@ -1,6 +1,6 @@
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
from django.contrib import admin
-from elgarito.wiki.models import Pagina
+from wiki.models import Pagina
class PaginaAdmin(admin.ModelAdmin):
diff --git a/wiki/urls.py b/wiki/urls.py
index ddcddf3..07dd356 100644
--- a/wiki/urls.py
+++ b/wiki/urls.py
@@ -1,12 +1,14 @@
-from django.conf.urls.defaults import *
+from django.conf.urls import patterns, url
-urlpatterns = patterns('elgarito.wiki.views',
- (r'^$', 'index'),
+urlpatterns = patterns(
+ 'wiki.views',
+
+ url(r'^$', 'index'),
- #(r'^((?:[A-Z]+[a-z]+){2,})/$', 'pagina'),
- (r'^nueva/$', 'nueva'),
- (r'^lista/$', 'lista'),
- (r'^(?P<titulo>\w+)/$', 'pagina'),
- (r'^(?P<titulo>\w+)/editar/$', 'editar'),
- #(r'^(?P<titulo>\w+)/eliminar/$', 'eliminar'),
+ #url(r'^((?:[A-Z]+[a-z]+){2,})/$', 'pagina'),
+ url(r'^nueva/$', 'nueva'),
+ url(r'^lista/$', 'lista'),
+ url(r'^(?P<titulo>\w+)/$', 'pagina'),
+ url(r'^(?P<titulo>\w+)/editar/$', 'editar'),
+ #url(r'^(?P<titulo>\w+)/eliminar/$', 'eliminar'),
)
diff --git a/wiki/views.py b/wiki/views.py
index 9d5ac78..a214690 100644
--- a/wiki/views.py
+++ b/wiki/views.py
@@ -1,13 +1,15 @@
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
-from elgarito.wiki.models import Pagina, PaginaForm
-from django.shortcuts import render_to_response, get_object_or_404
+from wiki.models import Pagina, PaginaForm
+from django.shortcuts import render_to_response
from django.template import RequestContext
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import user_passes_test
+
def index(request):
return HttpResponseRedirect('/wiki/Portada/')
+
def lista(request):
lista_paginas = Pagina.objects.all()
return render_to_response('wiki/lista.html',
@@ -15,6 +17,7 @@ def lista(request):
'lista_paginas': lista_paginas
}))
+
def pagina(request, titulo, static=None):
try:
pagina = Pagina.objects.get(titulo__exact=titulo)
@@ -24,9 +27,10 @@ def pagina(request, titulo, static=None):
'static': static,
}))
except Pagina.DoesNotExist:
- pagina = Pagina(titulo = titulo)
+ pagina = Pagina(titulo=titulo)
return HttpResponseRedirect('/wiki/' + pagina.titulo + '/editar/')
+
@user_passes_test(lambda u: u.has_perm('wiki.can_editar_pagina'),
login_url='/usuarios/login/')
def editar(request, titulo, static=None):
@@ -39,7 +43,7 @@ def editar(request, titulo, static=None):
pagina.texto = request.POST['texto']
pagina.autor_id = request.user.id
pagina.save()
- return HttpResponseRedirect('/wiki/' + pagina.titulo +'/')
+ return HttpResponseRedirect('/wiki/' + pagina.titulo + '/')
else:
try:
pagina = Pagina.objects.get(titulo__exact=titulo)
@@ -48,20 +52,21 @@ def editar(request, titulo, static=None):
form = PaginaForm(instance=pagina)
return render_to_response('wiki/editar.html',
RequestContext(request, {
- 'form' : form,
+ 'form': form,
'pagina': pagina,
'static': static,
}))
+
@user_passes_test(lambda u: u.has_perm('wiki.can_add_pagina'),
login_url='/usuarios/login/')
def nueva(request):
if request.POST:
pagina = Pagina(id=None,
- titulo = request.POST['titulo'],
- texto = request.POST['texto'],
- autor = request.user,
- )
+ titulo=request.POST['titulo'],
+ texto=request.POST['texto'],
+ autor=request.user,
+ )
pagina.save()
return HttpResponseRedirect('/wiki/%s/' % pagina.titulo)
else: