GithubHelp home page GithubHelp logo

ladiaria / utopia-cms Goto Github PK

View Code? Open in Web Editor NEW
17.0 5.0 6.0 25.03 MB

Utopía is an open source platform for community based newsrooms to manage their subscriptions. Code repository for the CMS tool.

License: BSD 3-Clause "New" or "Revised" License

Shell 0.14% Python 57.27% HTML 26.31% JavaScript 5.86% CSS 1.29% PHP 0.12% SCSS 9.02%
journalism media cms spanish latinoamerica uruguay

utopia-cms's Introduction

Contributors Forks Stargazers Issues BSD 3-Clause "New" or "Revised" License


Logo

Utopía CMS

Content Management System tool that multiple teams in a newsroom can use to manage publishing.

Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgements

About The Project

Front-end Screen Shot

Built With

Getting Started

To setup and start a local environment follow the installation steps.

Installation

Follow our INSTALL instructions in this repository to install requirements, setup the database, modify configuration and start the server and its web front-end.

Usage

For CMS's features, please refer to the Documentation

Roadmap

See the open issues for a list of proposed features (and known issues).

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

To Report a Bug or new Feature

Thanks so much! Open a new issue in Github.

To Contribute Code or Documentation

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

From la diaria we want to share with other media organizations our management experience and the tools developed with the help of our technical team. We expect to do so by releasing the project as free software with the goal of collaborating with other media companies and co-creating new solutions.

We are sharing 15 years of experience in managing a media cooperative, which is close to being 100% supported by our community.

Distributed under the BSD 3-Clause "New" or "Revised" License. See LICENSE for more information.

Contact

la diaria - @ladiaria

Project Link: https://github.com/ladiaria/utopia-cms/

Acknowledgements

Utopia was developed at la diaria and it has been opened in 2020 thanks to the support of Google News Initiative.

Utopía was one of the selected projects by Google News Initiative in Latin America to receive support from the Innovation Challenge Fund.

utopia-cms's People

Contributors

anibalpacheco avatar franciscocobas avatar gabelula avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

utopia-cms's Issues

Satirical sections by settings

The article's detail page "@type" meta tag is rendered with "SatiricalArticle" value if the section slug is in this new setting. (Now this is hardcoded to "humor" section)

signup with a category

In ladiaria we have a signup version that automatically adds a category (previously selected by the user navigation flow) to the subscriber's category newsletters, verify if this feature can be included in utopia

Ads in non-default publication's home

  1. Write a new template tag to check if the user is subscribed to publication
  2. Use it to render (or not) the html container in portal/teplates/cover.html (line19 section id=header-pub)
  3. Load the ad using js at the end of portal/teplates/index_pubs.html (analog to portal/teplates/index.html)

core.models.update_category_home improvements

There is a comment in the function that says to improve the stop condition when there are fixed articles (for this categories, the needed value would be less than the hardcoded value of 10).

DONE iterate over ArticleRel.edition.date_published ranges, this way, in a very populated environment (the most probable scenario) we can achieve goals in the first range iteration, that would be much faster than execute the whole join with no date restriction.

DONE Another improvement: the most inner for iterates over all categories, this can be easily improved into an iteration over only those categories that need more articles, pseudo:

categories_to_fill = settings.CORE...

if categories_to_fill:
    ...
    for edition in ...
        for ar in ...      
            if categories_to_fill:
                article = ...
                for cat in categories_to_fill:
                    if article matches criteria to enter:
                        append the article
                    if now this cat is full:
                        remove it from the categories_to_fill list
            else:
                stop = True
                break
    if stop:
        break

DONE But also there is another good thing to do there: when the home is not fully-filled, is much probable that there aren't more articles than this number, so, we can previously count them (new Category method) to know which is the new max value and also decrease the "needed" value to this counter (in a per-category way), this avoids the unnecessary loop until the oldest edition that will not find anything.

Of course this improvements not cover all the scenarios that can run the "complete" loop, but minimizes them in a very good way.

DONE important PD: the hardcoded value "11" should also be reviewed, because we need 10, the value is used to iterate over a range that could be easily fixed later with a simple "+1". check, fix and test this improvement before doing anything else.

improve rendering of live embed events notifications

This notifications are rendered now using a template tag, which can let to render them over other alerts (breaking news & mobile subscribe-notice).

The template tag approach should be migrated to an ajax approach (like breaking news does), the priority to consider to render the alerts then, should be:

  • breaking news
  • live embed events (this)
  • other custom alerts from other apps (implemented overriding the needed js blocks in this apps, not here)
  • mobile subscribe-notice

Improve permission check in dashboard views

It uses actually a permission check related to "thedaily" app, this is not good, it should use a separately permission check with a group or permission related to the dashboard app

Installation document for LightGallery is wrong when pulling from main branch

Describe the bug
When pulling the LightGallery module during the installation process documented in the file INSTALL.md is requesting to do that from main branch which does not exist. Related with this issue: ladiaria/lightGallery#1

To Reproduce
Steps to reproduce the behavior:

  1. Clone the LightGallery repository as documented:
    user@host:~/utopia-cms $ git clone -b main https://github.com/ladiaria/lightGallery static/lightGallery
  2. Error message states that main branch does not exist.

Expected behavior
master branch in LightGallery should be renamed to main.

Desktop (please complete the following information):
N/A

Smartphone (please complete the following information):
N/A

Additional context
ladiaria/lightGallery#1

is_subscriber perms should be managed more wisely

There's no warning to the user to add or modify a permission when a publication is added or modified its slug, the permission is needed to check if a user is subscribed to the publication.

This way of checking is complicated to maintain, because to fix it, we have to modify the Publication save method or make triggers to handle the permissions involved with the addition or modification that was made.

We have to think another easier way to manage this subscriber permission related to a publication, a group related to the publication can be an option, this approach is already used someway in another thedaily model.

Article photo not loading

In: Home page, article detail.

Maybe this is because the photosizes used are not created, try to find all photosizes used and make a fixture to create them at migration time.

pending de-customizations

grep -ni "la diaria" --exclude={"*.md","*.*css*","*.less","*.svg","*.lock","logo.html"} --exclude-dir={vendor,locale} -Ir . 

NameError at /usuarios/restablecer/

trying to reset pass using a non-logged-in session

portal/apps/thedaily/views.py in password_reset
                    u'Recuperación de contraseña', user, 'notifications/password_reset_body.html', 

global name 'user' is not defined

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.