From 51a8c7cd58da8c9d6ec3e2cdcaf32b25f38acc82 Mon Sep 17 00:00:00 2001 From: Sanj Date: Sat, 9 Jul 2011 18:17:12 +0530 Subject: [PATCH] back-end work complete for publish page --- edgware/editor/models.py | 34 ++++++++++++++++++++++++----- edgware/main/views.py | 20 ++++++++++++++++- edgware/templates/main/publish.html | 20 ++++++++++++++--- 3 files changed, 65 insertions(+), 9 deletions(-) diff --git a/edgware/editor/models.py b/edgware/editor/models.py index 0ed7d14..63844f0 100644 --- a/edgware/editor/models.py +++ b/edgware/editor/models.py @@ -15,6 +15,7 @@ from tagging.fields import TagField from tagging.models import Tag from copy import deepcopy from sorl.thumbnail import get_thumbnail +from django.db.models import Q def addPx(val): ''' @@ -204,6 +205,11 @@ class Article(models.Model): groups = models.ManyToManyField(Group, blank=True) theme = models.ForeignKey(ArticleTheme, blank=True, null=True) + + class Meta: + unique_together = ('product', 'order',) + ordering = ['-created'] + ''' Return boolean for whether user can edit article on tool or not - must be passed a valid User object. ''' @@ -240,19 +246,28 @@ class Article(models.Model): return True return False + + @classmethod + def get_can_edit_list(kls, user, qset=False): + if not qset: + qset = kls.objects.all() + return qset.filter(Q(owner=user) | Q(users=user)) + +# for q in qset: + @classmethod def get_published_list(kls, user, qset=False): if not qset: qset = kls.objects.all() - return qset.objects.filter(published=True) + return qset.filter(published=True).exclude(Q(owner=user) | Q(users=user)) + - @classmethod def fts(kls, search, qset=False): if not qset: qset = kls.objects.all() - return qset.objects.filter(name__icontains=search) + return qset.filter(name__icontains=search) @@ -345,8 +360,17 @@ class Article(models.Model): rList.append(p.get_dict(m)) return rList - class Meta: - unique_together = ('product', 'order',) + def get_list_dict(self, user): + return { + 'id': self.id, + 'title': self.name, + 'can_edit': self.can_edit(user), + 'edit_url': "/edit/article/%d/" % (self.id,), + 'is_locked': self.locked, + 'is_published': self.published, + 'web_url': "/edit/web_frontend/%d/" % (self.id,) + } + class PermissionRequest(models.Model): article = models.ForeignKey(Article) diff --git a/edgware/main/views.py b/edgware/main/views.py index 1e9ba4b..fd89cee 100644 --- a/edgware/main/views.py +++ b/edgware/main/views.py @@ -4,6 +4,8 @@ import Image import sys from django.http import HttpResponse from django.template import RequestContext +from editor.models import Article +from django.contrib.auth.decorators import login_required def home(request): context = RequestContext(request, {}) @@ -17,8 +19,24 @@ def archive(request): context = RequestContext(request, {}) return render_to_response("main/archive.html", context) +@login_required def publish(request): - context = RequestContext(request, {}) + + user = request.user + can_edit_list = Article.get_can_edit_list(user) + published_list = Article.get_published_list(user) + own_list = [] + pub_list = [] + for c in can_edit_list: + own_list.append(c.get_list_dict(user)) + for p in published_list: + pub_list.append(p.get_list_dict(user)) + + context = RequestContext(request, { + 'own_list': own_list, + 'pub_list': pub_list + }) + return render_to_response("main/publish.html", context) def browse(request): diff --git a/edgware/templates/main/publish.html b/edgware/templates/main/publish.html index d7ef8d3..75c96f6 100644 --- a/edgware/templates/main/publish.html +++ b/edgware/templates/main/publish.html @@ -33,10 +33,24 @@ If you are a participant looking to open a new account, please write to contact@ Tool link


-Search for an existing article you were working on
+Search for an existing article you were working on


+ Or
-Create a new one -

+Create a new one + +