public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Slava Bacherikov" <slava@bacherikov.org.ua>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/templates/
Date: Wed,  4 Jul 2012 22:13:18 +0000 (UTC)	[thread overview]
Message-ID: <1341409832.1cf4caecb751b6d7990e60c0e5382642e73e93ee.bacher09@gentoo> (raw)

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=proj/gentoo-packages.git;a=commit;h=1cf4caec

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
 
 
 def simple_markup(value):
-    temp = urlize(value,trim_url_limit = 57, autoescape=True) # maybe nofollow
+    temp = urlize(value,trim_url_limit = 70, autoescape=True) # maybe nofollow
     return linebreaks(temp)
 
 class AbstractDateTimeModel(models.Model):
@@ -47,6 +47,10 @@ class PortageNewsModel(AbstractDateTimeModel):
 
     objects = managers.PortageNewsManager()
 
+    @models.permalink
+    def get_absolute_url(self):
+        return ('news_item',(), {'pk': self.pk})
+
     def init_by_news(self, news):
         self.date = news.date
         self.name = news.name

diff --git a/gpackages/apps/packages/urls.py b/gpackages/apps/packages/urls.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 , EbuildsListView, \
                   PackagesListsView, PackageDetailView, EbuildDetailView, \
-                  GlobalUseListView
+                  GlobalUseListView, NewsListView, NewsDetailView
 
 urlpatterns = patterns('',
     url(r'^categories/$', CategoriesListView.as_view(), name = 'categories'),
@@ -16,8 +16,10 @@ urlpatterns = patterns('',
     url(r'^ebuild/(?P<cpvr>[^/]+/[^/]+)/$', EbuildDetailView.as_view(), name = 'ebuild'),
     url(r'^packages/{0}$'.format(PackagesListsView.get_url_part()), PackagesListsView.as_view(), name = 'packages'),
 
-    # In Future I will write my onw URL Resolver !!!
     #url(r'^package/(?:(?P<pk>\d+)|(?P<category>[^/]+)/(?P<name>[^/]+))/$', PackageDetailView.as_view(), name = 'package'),
     url(r'^package/(?P<pk>\d+)/$', PackageDetailView.as_view(), name = 'package'),
     url(r'^package/(?P<cpr>[^/]+/[^/]+)/$', PackageDetailView.as_view(), name = 'package'),
+    url(r'^news/$', NewsListView.as_view(), name = 'news'),
+    url(r'^news/(?P<pk>\d+)/$', NewsDetailView.as_view(), name = 'news_item'),
+    url(r'^news/(?P<slug>[^/]+)/$', NewsDetailView.as_view(), name = 'news_item'),
 )

diff --git a/gpackages/apps/packages/views.py b/gpackages/apps/packages/views.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, ContextTemplateView, ContextView, \
                           MultipleFilterListViewMixin
 from models import CategoryModel, HerdsModel, MaintainerModel, \
                    RepositoryModel, LicenseGroupModel, EbuildModel, \
-                   PackageModel, UseFlagModel
+                   PackageModel, UseFlagModel, PortageNewsModel
 
 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 = 'global_use.html'
     context_object_name = 'uses'
     queryset = UseFlagModel.objects.exclude(description = '') 
+
+class NewsListView(ContextListView):
+    extra_context = {'page_name': 'News'}
+    template_name = 'portage_news.html'
+    context_object_name = 'news'
+    paginate_by = 20
+    queryset = PortageNewsModel.objects.filter(lang = 'en'). \
+        prefetch_related('authors', 'translators')
+
+class NewsDetailView(ContextView, DetailView):
+    extra_context = {'page_name': 'News Item'}
+    template_name = 'portage_news_item.html'
+    context_object_name = 'news_item'
+    slug_field = 'name'
+    queryset = PortageNewsModel.objects.filter(lang = 'en'). \
+        prefetch_related('authors', 'translators')

diff --git a/gpackages/templates/base.html b/gpackages/templates/base.html
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;
+        }
 
     </style>
     <link href="{{ STATIC_URL }}css/bootstrap-responsive.css" rel="stylesheet">
@@ -66,6 +73,7 @@
             <ul class="nav">
               {% get_flatpages '/about/' as about_pages %}
               <li class="{% active_str '/' %}"><a href="/">Home</a></li>
+              {% active_link 'news' 'Portage News' %}
               {% for about in about_pages %}<li class="{% active_str about.url %}"><a href="{{ about.url }}">{{ about.title }}</a></li>{% endfor %}
               <li><a href="#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/templates/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/templates/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="news_item">
+    <h2><a href="{% url 'news_item' slug=news_item.name %}">{{ news_item.title }}</a></h2>
+    <p>{{ news_item.message_as_html|safe }}</p>
+    <div class="metadata" >
+        <span>Date: {{ news_item.date }}</span>
+        <span>Revision: {{ news_item.revision }}</span>
+        {% with authors=news_item.authors.all %}
+            <span>
+                {% if authors|length_is:"1" %}
+                    Author:
+                {% else %}
+                    Authors:
+                {% endif %}
+            {% for author in authors %}
+                <a href="{% url 'packages' maintainer=author.pk %}">{{ author.name }}</a>
+                {% if not forloop.last %},{% endif %}
+            {% endfor %}
+            </span>
+        {% endwith %}
+    </div>
+</div>



             reply	other threads:[~2012-07-04 22:13 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-04 22:13 Slava Bacherikov [this message]
  -- strict thread matches above, loose matches on Subject: below --
2012-08-20 13:03 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/apps/packages/, gpackages/templates/ Slava Bacherikov
2012-07-19 23:50 Slava Bacherikov
2012-07-19 23:50 Slava Bacherikov
2012-07-12 22:16 Slava Bacherikov
2012-07-12 22:16 Slava Bacherikov
2012-07-10 23:13 Slava Bacherikov
2012-07-08 19:54 Slava Bacherikov
2012-07-08 19:54 Slava Bacherikov
2012-07-08 19:54 Slava Bacherikov
2012-07-06 23:09 Slava Bacherikov
2012-07-06 23:09 Slava Bacherikov
2012-07-02 22:25 Slava Bacherikov
2012-06-30 21:02 Slava Bacherikov
2012-06-30 21:02 Slava Bacherikov
2012-06-30  0:22 Slava Bacherikov
2012-06-29 19:25 Slava Bacherikov
2012-06-28 23:59 Slava Bacherikov
2012-06-27 22:52 Slava Bacherikov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1341409832.1cf4caecb751b6d7990e60c0e5382642e73e93ee.bacher09@gentoo \
    --to=slava@bacherikov.org.ua \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox