Commit 7405ff01 authored by jocelyn's avatar jocelyn

adapted for django 1.4 compat


git-svn-id: svn://marvin.crapouillou.net/lettravox/trunk@74 7fa04f7f-7541-4a08-844f-dcbc5afaef51
parent 125b9821
......@@ -5,7 +5,11 @@ from datetime import datetime
from django.db import models
from django.conf import settings
from django.contrib import auth
from django.utils._threading_local import local
# Django 1.1 and 1.4 compat
try:
from threading import local
except ImportError:
from django.utils._threading_local import local
from django.utils.safestring import mark_safe
from django.template import Template, Context
from django.db.models import Q
......@@ -61,7 +65,7 @@ class Article(models.Model):
def __unicode__(self):
return self.titre
def save(self):
if not self.mini_illustration:
self.mini_illustration = File(open(
......@@ -71,7 +75,7 @@ class Article(models.Model):
super(Article,self).save()
def get_absolute_url(self):
return "/actu/%s/" % self.slug
return "/actu/%s/" % self.slug
def is_publication(self):
return self.categorie == 'P'
......
# -*- coding: utf-8 -*-
from LettraVox.texte.models import Texte
from django.contrib.syndication.feeds import Feed
try:
from django.contrib.syndication.feeds import Feed
except ImportError:
from django.contrib.syndication.views import Feed
import settings
class RssTextes(Feed):
......
......@@ -7,7 +7,13 @@ import Image
from django.db import models
from django.conf import settings
from django.contrib import auth
from django.utils._threading_local import local
# Django 1.1 and 1.4 compat
try:
from threading import local
except ImportError:
from django.utils._threading_local import local
from django.utils.safestring import mark_safe
from django.template import Template, Context
......@@ -53,7 +59,7 @@ class ProfilAuteur(models.Model):
hobies = models.CharField("Centres d'intérêt",max_length=140,blank=True,null=True)
aut_email = models.BooleanField('Adresse courriel publique',
default=True,
help_text="Si cette option est activée, les visiteurs pourront vous envoyer des emails directement sur votre boite e-mail.")
help_text="Si cette option est activée, les visiteurs pourront vous envoyer des emails directement sur votre boite e-mail.")
aut_formulaire = models.BooleanField('Formulaire de contact',
default=True,
help_text="Si cette option est activée, les visiteurs pourront vous envoyer des mails à travers un formulaire en ligne, ils ne verront pas votre véritable adresse")
......@@ -80,7 +86,7 @@ class ProfilAuteur(models.Model):
except NameError:
return None
def get_photo_abspath(self):
if self.photo:
return self.photo.path
......@@ -95,9 +101,9 @@ class ProfilAuteur(models.Model):
return ''
def age(self):
return lvtags.age(self.anniv)
def id_liste(self):
id_liste = (
('Prénom',self.user.first_name),
......@@ -105,7 +111,7 @@ class ProfilAuteur(models.Model):
('Age',self.age()),
('Localisation',self.localisation),
('Centres d\'intérêt',self.hobies),
('Courriel',
('Courriel',
mark_safe(self.aut_email * self.get_email())),
('Site web',mark_safe('<a href="%s">%s</a>'%(self.site_perso, self.site_perso))),
('Faire un don',
......@@ -118,7 +124,7 @@ class ProfilAuteur(models.Model):
ret_liste.append(i)
return ret_liste
def __unicode__(self):
if self.user.first_name:
return "%s %s" % (self.user.first_name, self.user.last_name)
......@@ -155,7 +161,7 @@ class Illustration(models.Model):
square_x_pos = models.IntegerField(default = -1)
square_y_pos = models.IntegerField(default = -1)
square_size = models.IntegerField(default = -1)
square = models.ImageField("Aperçu Carré",upload_to="illustrations/zoomed", editable=True, blank=True)
square = models.ImageField("Aperçu Carré",upload_to="illustrations/zoomed", editable=True, blank=True)
def legende(self):
ret = u"Illustration : "
......@@ -165,7 +171,7 @@ class Illustration(models.Model):
ret += str(self.texte_set.all()[0].auteur)
return ret
def set_default_square(self):
min_side = self.fichier.width
if self.fichier.height < min_side:
......@@ -180,10 +186,10 @@ class Illustration(models.Model):
self.set_default_square()
if not self.id:
super(Illustration, self).save()
# workaround,
# When saving,
# When saving,
try:
# first time, path is illustration/sth.jpg
base, fichier = self.fichier.name.rsplit('/',1)
......@@ -233,7 +239,7 @@ class Texte(models.Model):
def __unicode__(self):
return self.titre
def save(self):
self.slug = slugify(self.titre)
super(Texte,self).save()
......@@ -248,7 +254,7 @@ class Texte(models.Model):
return path
else:
raise IOError
def is_unipage(self):
return self.htmltex_set.all()[0].page_set.count() == 1
......@@ -275,7 +281,7 @@ class Texte(models.Model):
return os.path.split(self.fichier_source.path)[1]
else:
return 'Nouveau texte'
def get_source(self):
if self.fichier_source:
return open(self._source_path()).read()
......@@ -288,7 +294,7 @@ class Texte(models.Model):
Texte. Si aucun fichier n'existe, un fichier sera créé. Son
nom sera du type texte_src/<slug>.tex
Où <slug> est le champ slug de l'instance concernée de l'objet
Texte.
Texte.
"""
if self.fichier_source:
fpath = self._source_path()
......@@ -305,7 +311,7 @@ class Texte(models.Model):
fichier_source.close()
self.est_compile = False
self.save()
def nombre_com(self):
return self.commentaire_set.count()
nombre_com.short_description = u'Nombre de commentaires'
......@@ -332,7 +338,7 @@ class Texte(models.Model):
raise Documents.exceptions.CompilationError, erreur
return False
shutil.move(objet_source.pdf, self._build_pdf_path())
# Supprime les fichiers temporaires
objet_source.menage()
......@@ -341,7 +347,7 @@ class Texte(models.Model):
"""
texhash = objet_source.html
# On veut émuler une relation OneToOne, si une autre
# représentation html existe, on la supprime donc...
for i in self.htmltex_set.all():
......@@ -350,7 +356,7 @@ class Texte(models.Model):
representation.save()
representation.init(texhash)
return True
def bouton_compiler(self):
"""Permet d'afficher dans le détail de la page d'admin un lien
pour compiler le pdf et le html d'un clic
......@@ -362,7 +368,7 @@ class Texte(models.Model):
warning = "<img alt='Attention !' src='/site_media/img/icon_alert.gif' />"
return mark_safe('%s<a href="%s/compiler/">Compiler !</a>'%(warning,self.id))
bouton_compiler.allow_tags=True
bouton_compiler.short_description=u'Compiler le texte'
bouton_compiler.short_description=u'Compiler le texte'
class Commentaire(models.Model):
......@@ -403,7 +409,7 @@ class HtmlTex(models.Model):
def get_absolute_url(self):
return "%slire/" % self.parent.get_absolute_url()
def init(self,data):
if not data['single']:
for i in data['index']:
......@@ -430,7 +436,7 @@ class HtmlTex(models.Model):
def multipart(self):
return len(self.page_set.all()) > 1
......@@ -447,14 +453,14 @@ class Page(models.Model):
def get_absolute_url(self):
return "%s%i/" % (self.html_repr.get_absolute_url(), self.no)
def __unicode__(self):
return u'%i de %s'%(self.no,self.html_repr.parent.titre)
def get_texte_parent(self):
return self.html_repr.parent
class Licence(models.Model):
nom = models.CharField(max_length=120)
......@@ -463,7 +469,7 @@ class Licence(models.Model):
def __unicode__(self):
return self.nom
class Lien(models.Model):
nom = models.CharField(max_length=200)
......@@ -492,7 +498,7 @@ class Modele(models.Model):
modele_code = unicode(open(self._source_path()).read(),'utf-8')
contexte = Context({'auteur':texte.auteur})
nom_auteur = Template("{%load lvtags%}{{auteur|affiche_nom}}")
#syntaxe : ("MOTIF",chaine_a_inclure)
replace_coresp = (
(u'AUTEUR',nom_auteur.render(contexte)),
......@@ -503,7 +509,7 @@ class Modele(models.Model):
for i in replace_coresp:
modele_code = modele_code.replace(u'#%s#'%i[0],i[1])
return unicode(modele_code)
class CategorieReferenceExterne(models.Model):
nom_court=models.CharField(help_text="ex: Achat",max_length=20)
......@@ -511,7 +517,7 @@ class CategorieReferenceExterne(models.Model):
def __unicode__(self):
return self.nom_court
class ReferenceExterne(models.Model):
""" Représente une référence à un texte donné sur un site externe.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment