From mboxrd@z Thu Jan  1 00:00:00 1970
Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org)
	by finch.gentoo.org with esmtp (Exim 4.77)
	(envelope-from <gentoo-commits+bounces-482853-garchives=archives.gentoo.org@lists.gentoo.org>)
	id 1SmXpM-0003Ws-8N
	for garchives@archives.gentoo.org; Wed, 04 Jul 2012 22:13:40 +0000
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 64166E059B;
	Wed,  4 Jul 2012 22:13:23 +0000 (UTC)
Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183])
	by pigeon.gentoo.org (Postfix) with ESMTP id 251E4E059B
	for <gentoo-commits@lists.gentoo.org>; Wed,  4 Jul 2012 22:13:22 +0000 (UTC)
Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163])
	(using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id 3E24F1B4011
	for <gentoo-commits@lists.gentoo.org>; Wed,  4 Jul 2012 22:13:22 +0000 (UTC)
Received: from localhost.localdomain (localhost [127.0.0.1])
	by hornbill.gentoo.org (Postfix) with ESMTP id 2E53FE5448
	for <gentoo-commits@lists.gentoo.org>; Wed,  4 Jul 2012 22:13:18 +0000 (UTC)
From: "Slava Bacherikov" <slava@bacherikov.org.ua>
To: gentoo-commits@lists.gentoo.org
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Slava Bacherikov" <slava@bacherikov.org.ua>
Message-ID: <1341409832.1cf4caecb751b6d7990e60c0e5382642e73e93ee.bacher09@gentoo>
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/templates/
X-VCS-Repository: proj/gentoo-packages
X-VCS-Files: gpackages/apps/packages/models.py gpackages/apps/packages/urls.py gpackages/apps/packages/views.py gpackages/templates/base.html gpackages/templates/portage_news.html gpackages/templates/portage_news_item.html gpackages/templates/portage_news_object.html
X-VCS-Directories: gpackages/apps/packages/ gpackages/templates/
X-VCS-Committer: bacher09
X-VCS-Committer-Name: Slava Bacherikov
X-VCS-Revision: 1cf4caecb751b6d7990e60c0e5382642e73e93ee
X-VCS-Branch: master
Date: Wed,  4 Jul 2012 22:13:18 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: quoted-printable
X-Archives-Salt: 63febf2e-19a8-4526-bfd7-142c959dce4d
X-Archives-Hash: 3d1acecca8138061f20210ef673aec24

commit:     1cf4caecb751b6d7990e60c0e5382642e73e93ee
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Wed Jul  4 13:50:32 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Wed Jul  4 13:50:32 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gentoo-packag=
es.git;a=3Dcommit;h=3D1cf4caec

Add views for portage news

---
 gpackages/apps/packages/models.py            |    6 +++++-
 gpackages/apps/packages/urls.py              |    6 ++++--
 gpackages/apps/packages/views.py             |   18 +++++++++++++++++-
 gpackages/templates/base.html                |   14 +++++++++++---
 gpackages/templates/portage_news.html        |   13 +++++++++++++
 gpackages/templates/portage_news_item.html   |    4 ++++
 gpackages/templates/portage_news_object.html |   22 ++++++++++++++++++++=
++
 7 files changed, 76 insertions(+), 7 deletions(-)

diff --git a/gpackages/apps/packages/models.py b/gpackages/apps/packages/=
models.py
index 7c21a46..c5a51e3 100644
--- a/gpackages/apps/packages/models.py
+++ b/gpackages/apps/packages/models.py
@@ -14,7 +14,7 @@ from django.utils.html import urlize, linebreaks
=20
=20
 def simple_markup(value):
-    temp =3D urlize(value,trim_url_limit =3D 57, autoescape=3DTrue) # ma=
ybe nofollow
+    temp =3D urlize(value,trim_url_limit =3D 70, autoescape=3DTrue) # ma=
ybe nofollow
     return linebreaks(temp)
=20
 class AbstractDateTimeModel(models.Model):
@@ -47,6 +47,10 @@ class PortageNewsModel(AbstractDateTimeModel):
=20
     objects =3D managers.PortageNewsManager()
=20
+    @models.permalink
+    def get_absolute_url(self):
+        return ('news_item',(), {'pk': self.pk})
+
     def init_by_news(self, news):
         self.date =3D news.date
         self.name =3D news.name

diff --git a/gpackages/apps/packages/urls.py b/gpackages/apps/packages/ur=
ls.py
index 1eb23ef..c7e6ac5 100644
--- a/gpackages/apps/packages/urls.py
+++ b/gpackages/apps/packages/urls.py
@@ -2,7 +2,7 @@ from django.conf.urls import patterns, include, url
 from views import CategoriesListView, HerdsListView, MaintainersListView=
, \
                   RepositoriesListView, LicenseGroupsView , EbuildsListV=
iew, \
                   PackagesListsView, PackageDetailView, EbuildDetailView=
, \
-                  GlobalUseListView
+                  GlobalUseListView, NewsListView, NewsDetailView
=20
 urlpatterns =3D patterns('',
     url(r'^categories/$', CategoriesListView.as_view(), name =3D 'catego=
ries'),
@@ -16,8 +16,10 @@ urlpatterns =3D patterns('',
     url(r'^ebuild/(?P<cpvr>[^/]+/[^/]+)/$', EbuildDetailView.as_view(), =
name =3D 'ebuild'),
     url(r'^packages/{0}$'.format(PackagesListsView.get_url_part()), Pack=
agesListsView.as_view(), name =3D 'packages'),
=20
-    # In Future I will write my onw URL Resolver !!!
     #url(r'^package/(?:(?P<pk>\d+)|(?P<category>[^/]+)/(?P<name>[^/]+))/=
$', PackageDetailView.as_view(), name =3D 'package'),
     url(r'^package/(?P<pk>\d+)/$', PackageDetailView.as_view(), name =3D=
 'package'),
     url(r'^package/(?P<cpr>[^/]+/[^/]+)/$', PackageDetailView.as_view(),=
 name =3D 'package'),
+    url(r'^news/$', NewsListView.as_view(), name =3D 'news'),
+    url(r'^news/(?P<pk>\d+)/$', NewsDetailView.as_view(), name =3D 'news=
_item'),
+    url(r'^news/(?P<slug>[^/]+)/$', NewsDetailView.as_view(), name =3D '=
news_item'),
 )

diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/v=
iews.py
index a0ce56a..32a2aee 100644
--- a/gpackages/apps/packages/views.py
+++ b/gpackages/apps/packages/views.py
@@ -3,7 +3,7 @@ from generic.views import ContextListView, ContextTemplat=
eView, ContextView, \
                           MultipleFilterListViewMixin
 from models import CategoryModel, HerdsModel, MaintainerModel, \
                    RepositoryModel, LicenseGroupModel, EbuildModel, \
-                   PackageModel, UseFlagModel
+                   PackageModel, UseFlagModel, PortageNewsModel
=20
 from django.shortcuts import get_object_or_404
 from package_info.parse_cp import EbuildParseCPVR, PackageParseCPR
@@ -147,3 +147,19 @@ class GlobalUseListView(ContextListView):
     template_name =3D 'global_use.html'
     context_object_name =3D 'uses'
     queryset =3D UseFlagModel.objects.exclude(description =3D '')=20
+
+class NewsListView(ContextListView):
+    extra_context =3D {'page_name': 'News'}
+    template_name =3D 'portage_news.html'
+    context_object_name =3D 'news'
+    paginate_by =3D 20
+    queryset =3D PortageNewsModel.objects.filter(lang =3D 'en'). \
+        prefetch_related('authors', 'translators')
+
+class NewsDetailView(ContextView, DetailView):
+    extra_context =3D {'page_name': 'News Item'}
+    template_name =3D 'portage_news_item.html'
+    context_object_name =3D 'news_item'
+    slug_field =3D 'name'
+    queryset =3D PortageNewsModel.objects.filter(lang =3D 'en'). \
+        prefetch_related('authors', 'translators')

diff --git a/gpackages/templates/base.html b/gpackages/templates/base.htm=
l
index 172dd9d..8c8ccb6 100644
--- a/gpackages/templates/base.html
+++ b/gpackages/templates/base.html
@@ -24,22 +24,29 @@
         .package-well {
             padding: 10px 10px 0px 10px;
         }
-
         .package-name {
             border-radius: 6px 6px 6px 6px;
             padding: 8px 10px 8px 10px;
             margin: 0px 0px 10px 0px;
             background-color: #CCC;
         }
-
         .nowrap {
             white-space: nowrap;
         }
-
         .package_update_datetime {
             text-align: right;
             float: right;
         }
+        .metadata {
+            font-size: 11px;
+            color: grey;
+        }
+        .metadata span {
+            display: block;
+        }
+        .news_item {
+            padding-top: 15px;
+        }
=20
     </style>
     <link href=3D"{{ STATIC_URL }}css/bootstrap-responsive.css" rel=3D"s=
tylesheet">
@@ -66,6 +73,7 @@
             <ul class=3D"nav">
               {% get_flatpages '/about/' as about_pages %}
               <li class=3D"{% active_str '/' %}"><a href=3D"/">Home</a><=
/li>
+              {% active_link 'news' 'Portage News' %}
               {% for about in about_pages %}<li class=3D"{% active_str a=
bout.url %}"><a href=3D"{{ about.url }}">{{ about.title }}</a></li>{% end=
for %}
               <li><a href=3D"#contact">Contact</a></li>
             </ul>

diff --git a/gpackages/templates/portage_news.html b/gpackages/templates/=
portage_news.html
new file mode 100644
index 0000000..ee0bfc2
--- /dev/null
+++ b/gpackages/templates/portage_news.html
@@ -0,0 +1,13 @@
+{% extends "base.html" %}
+{% load url from future %}
+{% load paginator %}
+
+{% block content %}
+
+{% for news_item in news %}
+    {% include 'portage_news_object.html' %}
+{% endfor %}
+
+{% paginator page_obj 3 1 %}
+
+{% endblock content %}

diff --git a/gpackages/templates/portage_news_item.html b/gpackages/templ=
ates/portage_news_item.html
new file mode 100644
index 0000000..9f4c711
--- /dev/null
+++ b/gpackages/templates/portage_news_item.html
@@ -0,0 +1,4 @@
+{% extends "base.html" %}
+{% block content %}
+    {% include 'portage_news_object.html' %}
+{% endblock content %}

diff --git a/gpackages/templates/portage_news_object.html b/gpackages/tem=
plates/portage_news_object.html
new file mode 100644
index 0000000..fc03658
--- /dev/null
+++ b/gpackages/templates/portage_news_object.html
@@ -0,0 +1,22 @@
+{% load url from future %}
+<div class=3D"news_item">
+    <h2><a href=3D"{% url 'news_item' slug=3Dnews_item.name %}">{{ news_=
item.title }}</a></h2>
+    <p>{{ news_item.message_as_html|safe }}</p>
+    <div class=3D"metadata" >
+        <span>Date: {{ news_item.date }}</span>
+        <span>Revision: {{ news_item.revision }}</span>
+        {% with authors=3Dnews_item.authors.all %}
+            <span>
+                {% if authors|length_is:"1" %}
+                    Author:
+                {% else %}
+                    Authors:
+                {% endif %}
+            {% for author in authors %}
+                <a href=3D"{% url 'packages' maintainer=3Dauthor.pk %}">=
{{ author.name }}</a>
+                {% if not forloop.last %},{% endif %}
+            {% endfor %}
+            </span>
+        {% endwith %}
+    </div>
+</div>