view gpp/membermap/models.py @ 162:6a5bdcf93ad3

Fix #48; shoutbox was no longer escaping user input on display.
author Brian Neal <bgneal@gmail.com>
date Tue, 22 Dec 2009 03:55:37 +0000
parents 13d052fbe4f1
children 5c889b587416
line wrap: on
line source
"""
Models for the member map application.
"""
from django.db import models
from django.contrib.auth.models import User
from django.template.loader import render_to_string
from django.template.defaultfilters import escapejs
import django.utils.simplejson as json

from core.markup import site_markup


class MapEntry(models.Model):
    """Represents a user's entry on the map."""
    user = models.ForeignKey(User)
    location = models.CharField(max_length=255)
    lat = models.FloatField()
    lon = models.FloatField()
    message = models.TextField(blank=True)
    json = models.TextField(blank=True)
    date_updated = models.DateTimeField(auto_now_add=True)

    def __unicode__(self):
        return u'Entry for %s' % self.user.username

    class Meta:
        ordering = ('-date_updated', )
        verbose_name_plural = 'map entries'

    def save(self, force_insert=False, force_update=False):
        msg = render_to_string('membermap/markdown.html', {
            'user': self.user,
            'msg': site_markup(self.message)}).strip()

        self.json = json.dumps({'name': self.user.username,
            'lat': '%10.6f' % self.lat,
            'lon': '%10.6f' % self.lon,
            'message': msg,
            })
        super(MapEntry, self).save(force_insert, force_update)