HallOfFameRewrite

  • Created: 2010-07-28

  • Contributors: dholbach

Summary

The codebase of the Hall of Fame is not open-source right now and is not really maitainable, also does it contain password and all kinds of other horrible things. The only good thing about it is the theming.

The plan is to rewrite it in Django and make it more easily extensible and modifiable. Also make it open source.

Release Note

(Makes no sense, it's not part of Ubuntu itself.)

Rationale

Hall of Fame has no contributions to it, is not evolving and is not maintainable. It could be a bustling place of information about Ubuntu and its contributors.

User stories

Maria leads a new part of the community and would like to get some exposure to major contributions to the project. She reads a bit of documentation, sets up a data feed, gets it added to the Hall of Fame by the admins.

Vishnoo wants to have a friend and major Ubuntu contributor as "featured contributor" in the Hall of Fame. He writes up a short article, adds a link to a photo and submits to the Hall of Fame admins.

Design

Code changes

First of all the "Community Web Foundations project" will have to be sorted out. This will be used as a foundation, which will make the rest of the code a lot easier.

Data

Data is imported from other locations and expected to be either in .csv of .json format. The format will be documented on the Hall of Fame itself.

As an admin you will be able to

  1. specify the URL of the data file
  2. specify the number of shown data items
  3. specify the location on the page in a very primitive way

The data model could look like this:

class Person(models.Model):
    lpid = models.TextField(_("Name"), max_length=30)
    name = models.TextField(_("Name"), max_length=100, null=True, blank=True)
    mugshot_url = models.URLField(_("Picture URL"), max_length=150, null=True, blank=True)

class Feature(models.Model):
    person = models.ForeignKey(Person)
    picture_url = models.URLField(_("Picture URL"), max_length=100)
    text = models.XMLField(_("Text"), max_length=4000)
    date = models.DateTimeField(_("Published Date"))
    published = models.BooleanField(_("Published"), default=False)

class Thanks(models.Model):
    who = models.ForeignKey(Person)
    feature = models.ForeignKey(Feature)
    date = models.DateTimeField(_("Date"))

class FeatureSuggestion(models.Model):
    who = models.ForeignKey(Person)
    suggestion = models.TextField(_("Suggested person"), max_length=100)
    why = models.TextField(_("Why"), max_length=2500)
    date = models.DateTimeField(_("Date"))

The data itself is collected and added to the database in a cronjob that runs a management command.

RSS export needs to be implemented too.

Theming

The theming will be reused. Maybe use https://launchpad.net/ubuntu-website/light-django-theme

It will be possible to enter featured contributors using WYMeditor (a javascript editor).

Implementation

UI Changes

Reuse theming, but add additional pages that explain

  • data / feature submission process
  • link to "Ubuntu Hall of Fame" Launchpad project

Also add link to admin interface for Hall of Fame admins.

Code Changes

Complete rewrite, using python-django and python-django-openid-auth. (lp:loco-directory can serve as an example.)

Migration

Daniel can provide

  • old "featured articles"
  • list of people who "thanked" which featured contributor

Provide permalinks for old articles.

Unresolved issues

  • Decide which RSS module to use.


CategorySpec

Spec/HallOfFameRewrite (last edited 2010-11-08 10:58:03 by i59F72BBB)