From a8f06855b539ab38dbd413d438c1db22a2cbb9f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96zcan=20O=C4=9Fuz?= Date: Wed, 20 May 2020 18:14:05 +0300 Subject: [PATCH] =?UTF-8?q?Tema=20dev=C5=9Firiliyor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AUTHORS | 6 + README.md | 6 +- mediagoblin-oyd/__init__.py | 124 ++++++++++++++++++ .../templates/libreplanet/banner.html | 42 ++++++ .../templates/libreplanet/join.html | 49 +++++++ .../templates/libreplanet/listing.html | 32 +++++ .../templates/libreplanet/root.html | 87 ++++++++++++ mediagoblin-oyd/views.py | 62 +++++++++ setup.py | 2 +- 9 files changed, 406 insertions(+), 4 deletions(-) create mode 100644 mediagoblin-oyd/__init__.py create mode 100644 mediagoblin-oyd/templates/libreplanet/banner.html create mode 100644 mediagoblin-oyd/templates/libreplanet/join.html create mode 100644 mediagoblin-oyd/templates/libreplanet/listing.html create mode 100644 mediagoblin-oyd/templates/libreplanet/root.html create mode 100644 mediagoblin-oyd/views.py diff --git a/AUTHORS b/AUTHORS index 0372119..5a46711 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1 +1,7 @@ +## mediagoblin-oyd authors + +Özcan Oğuz + +## Original authors + David Thompson diff --git a/README.md b/README.md index d0236c5..2be6a3d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -MediaGoblin for LibrePlanet -=========================== +MediaGoblin for ÖYD +=================== -A simple plugin for https://media.libreplanet.org +A simple plugin for https://medya.oyd.org.tr derived from LibrePlanet diff --git a/mediagoblin-oyd/__init__.py b/mediagoblin-oyd/__init__.py new file mode 100644 index 0000000..eae678d --- /dev/null +++ b/mediagoblin-oyd/__init__.py @@ -0,0 +1,124 @@ +# MediaGoblin for ÖYD +# Copyright (C) 2015 David Thompson +# Copyright (C) 2020 Özcan Oğuz +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import logging +import os + +from mediagoblin import mg_globals +from mediagoblin.tools.pluginapi import get_config, register_template_path, register_routes, register_template_hooks +from mediagoblin.db.models import MediaEntry +from mediagoblin.db.util import media_entries_for_tag_slug +from mediagoblin.tools.pagination import Pagination +from mediagoblin.tools.response import render_to_response +from mediagoblin.tools.licenses import SORTED_LICENSES, SUPPORTED_LICENSES, License +from mediagoblin.decorators import uses_pagination, user_not_banned + +# Add GNU FDL 1.3 + +gfdl_1_3 = License("GFDL 1.3", + "GNU Free Documentation License 1.3", + "https://www.gnu.org/licenses/fdl-1.3.en.html") + +SORTED_LICENSES.insert(4, gfdl_1_3) +SUPPORTED_LICENSES[gfdl_1_3.uri] = gfdl_1_3 + +PLUGIN_DIR = os.path.dirname(__file__) + +MAX_HOME_ITEMS_DEFAULT = 10 + +MAX_HOME_ALL_VIDEO_ITEMS = 10 +MAX_HOME_ALL_PHOTO_ITEMS = 20 +MAX_HOME_FEATURED_ITEMS = 10 +MAX_HOME_LP_ITEMS = 10 + +# make tags lowercase and use dashes in place of spaces. +# uppercase tags will be included by the lowercase form. +FEATURED_TAG = "yıldızlı" + + +_log = logging.getLogger(__name__) + +# This is the function that gets called when the setup +# hook fires. +def setup_plugin(): + _log.info("Setting up medya.oyd.org.tr...") + + # Register the template path. + register_template_path(os.path.join(PLUGIN_DIR, 'templates')) + +def lp_media_for_type(db, type, tag=None, max_items=MAX_HOME_ITEMS_DEFAULT): + if (tag == None): + cursor = MediaEntry.query + else: + cursor = media_entries_for_tag_slug(db, tag) + + return cursor.\ + filter((MediaEntry.media_type == type) + & (MediaEntry.state == u'processed')).\ + order_by(MediaEntry.created.desc()).\ + limit(max_items) + +@user_not_banned +def frontpage_view(request): + images = lp_media_for_type(request.db, u'mediagoblin.media_types.image', None, MAX_HOME_ALL_PHOTO_ITEMS) + videos = lp_media_for_type(request.db, u'mediagoblin.media_types.video', None, MAX_HOME_ALL_VIDEO_ITEMS) + + ozgurkon_video = lp_media_for_type(request.db, u'mediagoblin.media_types.video', "libreplanet-2017-keynote", MAX_HOME_LP_ITEMS) + ozgurkon_slayt = lp_media_for_type(request.db, u'mediagoblin.media_types.video', "libreplanet-2017-video", MAX_HOME_LP_ITEMS) + logolar = lp_media_for_type(request.db, u'mediagoblin.media_types.image', "logo", MAX_HOME_LP_ITEMS) + bultenler = lp_media_for_type(request.db, u'mediagoblin.media_types.pdf', "bulten", MAX_HOME_LP_ITEMS) + yayinlar = lp_media_for_type(request.db, u'mediagoblin.media_types.pdf', "yayin", MAX_HOME_LP_ITEMS) + + featured_images = lp_media_for_type(request.db, u'mediagoblin.media_types.image', FEATURED_TAG, MAX_HOME_FEATURED_ITEMS) + featured_videos = lp_media_for_type(request.db, u'mediagoblin.media_types.video', FEATURED_TAG, MAX_HOME_FEATURED_ITEMS) + + return render_to_response( + request, 'libreplanet/root.html', + {'images': images, + 'videos': videos, + 'logolar': logolar, + 'bultenler': bultenler, + 'yayinlar': yayinlar, + 'featured_images': featured_images, + 'featured_videos': featured_videos, + 'allow_registration': mg_globals.app_config["allow_registration"]}) + +def frontpage_view_hook(): + return frontpage_view + +register_routes([('all-videos', '/videos', + 'mediagoblin.plugins.libreplanet.views:video_listing'), + ('all-photos', '/photos', + 'mediagoblin.plugins.libreplanet.views:image_listing'), + + ('featured-videos', '/videos/featured', + 'mediagoblin.plugins.libreplanet.views:featured_video_listing'), + ('featured-photos', '/photos/featured', + 'mediagoblin.plugins.libreplanet.views:featured_image_listing') + ]) + +# This is a dict that specifies which hooks this plugin uses. +# This one only uses one hook: setup. +hooks = { + 'setup': setup_plugin, + 'frontpage_view': frontpage_view_hook +} + +register_template_hooks( + {'header_left': "libreplanet/banner.html", + 'header_extra': "libreplanet/join.html"} +) diff --git a/mediagoblin-oyd/templates/libreplanet/banner.html b/mediagoblin-oyd/templates/libreplanet/banner.html new file mode 100644 index 0000000..9a77763 --- /dev/null +++ b/mediagoblin-oyd/templates/libreplanet/banner.html @@ -0,0 +1,42 @@ +{# +# MediaGoblin for LibrePlanet +# Copyright (C) 2017 Andrew Engelbrecht +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +#} + +{# banner + + +
+ +
+#} + +{# style for no banner #} + + +{# for spacing below the banner + also update the join.html template file when adding/removing/changing + the spacing of this div. + -- sudoman 2017-03-09 + +
+#} + diff --git a/mediagoblin-oyd/templates/libreplanet/join.html b/mediagoblin-oyd/templates/libreplanet/join.html new file mode 100644 index 0000000..34bf6bc --- /dev/null +++ b/mediagoblin-oyd/templates/libreplanet/join.html @@ -0,0 +1,49 @@ +{# +# MediaGoblin for LibrePlanet +# Copyright (C) 2017 Andrew Engelbrecht +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +#} + + + +{# for spacing below the banner; see banner.html template. -- sudoman 2017-03-09 #} +{# +
+#} + + diff --git a/mediagoblin-oyd/templates/libreplanet/listing.html b/mediagoblin-oyd/templates/libreplanet/listing.html new file mode 100644 index 0000000..80f58c7 --- /dev/null +++ b/mediagoblin-oyd/templates/libreplanet/listing.html @@ -0,0 +1,32 @@ +{# +# MediaGoblin for LibrePlanet +# Copyright (C) 2011, 2012 MediaGoblin contributors +# Copyright (C) 2015 David Thompson +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +#} +{% extends "mediagoblin/base.html" %} + +{% from "mediagoblin/utils/object_gallery.html" import object_gallery %} + +{% block title %} + {{ title }} — {{ super() }} +{% endblock %} + +{% block mediagoblin_content -%} +

{{ title }}

+ + {{ object_gallery(request, media_entries, pagination) }} + +{% endblock %} diff --git a/mediagoblin-oyd/templates/libreplanet/root.html b/mediagoblin-oyd/templates/libreplanet/root.html new file mode 100644 index 0000000..0c48b4a --- /dev/null +++ b/mediagoblin-oyd/templates/libreplanet/root.html @@ -0,0 +1,87 @@ +{# +# MediaGoblin for LibrePlanet +# Copyright (C) 2011, 2012 MediaGoblin contributors +# Copyright (C) 2015 David Thompson +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +#} +{% extends "mediagoblin/base.html" %} + +{% from "mediagoblin/utils/object_gallery.html" import media_grid %} + +{% set feed_url = request.urlgen('mediagoblin.listings.atom_feed') %} + +{% block mediagoblin_head -%} + {% set feed_url = request.urlgen('mediagoblin.listings.atom_feed') -%} + +{%- endblock mediagoblin_head %} + +{% block mediagoblin_content %} +

{% trans %}Özgür Yazılım Derneği'nin medya sunucusuna hoş geldiniz!{% endtrans %}

+ +

+{% trans %}Bu web sitesinde, Özgür Yazılım Derneği'nin yaptığı tüm medya çıktıları (belgeler, fotoğraflar, videolar, yayınlar vb.) bulunmaktadır.{% endtrans %} +

+

{% trans %}Derneğimizin projelerinin ve diğer çıktılarının kaynak kodlarına ulaşmak için, Git sunucumuzu ziyaret edebilirsiniz.{% endtrans %}

+ +

{% trans %} Özgür Yazılım Derneği, özgür yazılım hareketini ve hali ile tüm insanların modern dünyadaki özgürlüklerini savunan insanların oluşturduğu bir topluluktur. Özgür Yazılım Derneği insanların özgürlüğünü, yazılımların özgürlüğünden başlamak üzere, donanımların, İnternet’in ve hizmetlerin özgürlüğü ile bağlantılı olarak savunur. {% endtrans %}

+ +
+ +

{% trans %}ÖzgürKon 2020 Oturumlar{% endtrans %}

+ {{ media_grid(request, ozgurkon_video) }} +
+ +

{% trans %}ÖzgürKon 2020 Slaytlar{% endtrans %}

+ {{ media_grid(request, ozgurkon_slayt) }} +
+

+ Tümünü görüntüle... +

+ +

{% trans %}Bültenler{% endtrans %}

+ {{ media_grid(request, bultenler) }} +
+

+ Tüm yayınlar... +

+ + {# commenting out featured media sections for front page #} + {# +

{% trans %}Öne çıkan videolar{% endtrans %}

+ {{ media_grid(request, featured_videos) }} +
+

+ Tümü... +

+ +

{% trans %}Öne çıkan fotoğraflar{% endtrans %}

+ {{ media_grid(request, featured_images) }} +
+

+ Tümü... +

+ #} + +

{% trans %}Tüm videolar{% endtrans %}

+ {{ media_grid(request, videos) }} +
+

+ Tümü... +

+ + {#- Need to set feed_url within this block so template can use it. -#} + {%- set feed_url = feed_url -%} + {%- include "mediagoblin/utils/feed_link.html" -%} +{% endblock %} diff --git a/mediagoblin-oyd/views.py b/mediagoblin-oyd/views.py new file mode 100644 index 0000000..4163f8e --- /dev/null +++ b/mediagoblin-oyd/views.py @@ -0,0 +1,62 @@ +# MediaGoblin for LibrePlanet +# Copyright (C) 2015 David Thompson +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from mediagoblin import mg_globals +from mediagoblin.db.models import MediaEntry +from mediagoblin.db.util import media_entries_for_tag_slug +from mediagoblin.tools.pagination import Pagination +from mediagoblin.tools.response import render_to_response +from mediagoblin.decorators import uses_pagination + +def type_listing(media_type, title, request, page, tag=None): + if (tag == None): + cursor = MediaEntry.query + else: + cursor = media_entries_for_tag_slug(request.db, tag) + + cursor = cursor.\ + filter((MediaEntry.media_type == media_type) + & (MediaEntry.state == u'processed')).\ + order_by(MediaEntry.created.desc()) + + pagination = Pagination(page, cursor) + media_entries = pagination() + + return render_to_response( + request, + 'libreplanet/listing.html', + {'title': title, + 'media_entries': media_entries, + 'pagination': pagination}) + + +@uses_pagination +def image_listing(request, page): + return type_listing(u'mediagoblin.media_types.image', 'Photos', request, page) + +@uses_pagination +def video_listing(request, page): + return type_listing(u'mediagoblin.media_types.video', 'Videos', request, page) + + +@uses_pagination +def featured_image_listing(request, page): + return type_listing(u'mediagoblin.media_types.image', 'Featured Photos', request, page, "featured") + +@uses_pagination +def featured_video_listing(request, page): + return type_listing(u'mediagoblin.media_types.video', 'Featured Videos', request, page, "featured") + diff --git a/setup.py b/setup.py index 59bd3f5..9824701 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ from setuptools import setup, find_packages setup( - name='mediagoblin_libreplanet', + name='mediagoblin-oyd', version='0.1', packages=find_packages(), include_package_data=True,