##// END OF EJS Templates
Fixed the tests. Added exists() method for the post.
Fixed the tests. Added exists() method for the post.

File last commit:

r8:b62ef70f default
r8:b62ef70f default
Show More
models.py
77 lines | 2.0 KiB | text/x-python | PythonLexer
from django.db import models
from django.utils import timezone
NO_PARENT = -1
NO_IP = '0.0.0.0'
UNKNOWN_UA = ''
DIR_IMAGES = 'images'
class PostManager(models.Manager):
def create_post(self, title, text, image = None, parent_id = NO_PARENT,
ip = NO_IP):
post = self.create(title = title,
text = text,
pub_time = timezone.now(),
parent = parent_id,
image = image,
poster_ip = ip,
poster_user_agent = UNKNOWN_UA)
return post
def delete_post(self, post):
children = self.filter(parent = post.id)
for child in children:
self.delete_post(child)
post.delete()
def delete_posts_by_ip(self, ip):
posts = self.filter(poster_ip = ip)
for post in posts:
self.delete_post(post)
def get_threads(self, tag = None):
if tag is None:
threads = self.filter(parent = NO_PARENT)
else:
threads = self.filter(parent = NO_PARENT, tag = tag)
return threads
def get_thread(self, opening_post_id):
opening_post = self.get(opening_post_id)
replies = self.filter(parent = opening_post_id)
return [opening_post, replies]
def exists(self, post_id):
posts = Post.objects.filter(id = post_id)
return len(posts) == 0
class Tag(models.Model):
"""
A tag is a text node assigned to the post. The tag serves as a board
section. There can be multiple tags for each message
"""
name = models.CharField(max_length = 100)
class Post(models.Model):
"""A post is a message."""
objects = PostManager()
title = models.CharField(max_length = 100)
pub_time = models.DateTimeField()
text = models.TextField()
image = models.ImageField(upload_to = DIR_IMAGES)
poster_ip = models.IPAddressField()
poster_user_agent = models.TextField()
parent = models.BigIntegerField()
tags = models.ManyToManyField(Tag)
def __unicode__(self):
return self.title + ' (' + self.text + ')'