##// END OF EJS Templates
Added localization (not fully working). Added tags posting. Changed the design a bit.
Added localization (not fully working). Added tags posting. Changed the design a bit.

File last commit:

r24:bb515fee default
r24:bb515fee default
Show More
models.py
101 lines | 2.6 KiB | text/x-python | PythonLexer
from django.db import models
from django.utils import timezone
from neboard import settings
import thumbs
NO_PARENT = -1
NO_IP = '0.0.0.0'
UNKNOWN_UA = ''
class PostManager(models.Manager):
def create_post(self, title, text, image=None, parent_id=NO_PARENT,
ip=NO_IP, tags=None):
post = self.create(title=title,
text=text,
pub_time=timezone.now(),
parent=parent_id,
image=image,
poster_ip=ip,
poster_user_agent=UNKNOWN_UA)
if tags:
for tag in tags:
post.tags.add(tag)
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(id=opening_post_id)
replies = self.filter(parent=opening_post_id)
thread = [opening_post]
thread.extend(replies)
return thread
def exists(self, post_id):
posts = self.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 = thumbs.ImageWithThumbsField(upload_to='images/',
blank=True, sizes=((200, 150),))
poster_ip = models.IPAddressField()
poster_user_agent = models.TextField()
parent = models.BigIntegerField()
tags = models.ManyToManyField(Tag)
def __unicode__(self):
return self.title + ' (' + self.text + ')'
class Admin(models.Model):
"""
Model for admin users
"""
name = models.CharField(max_length=100)
password = models.CharField(max_length=100)
def __unicode__(self):
return self.name + '/' + '*' * len(self.password)