From 115a420ceeac397bdd8f885061f6a4d9bc19e1cd Mon Sep 17 00:00:00 2001 From: Greg Taylor Date: Tue, 12 Jun 2007 02:35:37 +0000 Subject: [PATCH] The default front webpage now has some good examples on how to add in custom functionality. You'll obviously want to customize this for your game, but it'll be a good start. --- apps/website/views.py | 31 ++++++--- functions_db.py | 14 ++-- session.py | 2 +- .../prosimii/{index2.html => base.html} | 0 webtemplates/prosimii/index.html | 67 ++++++++++--------- 5 files changed, 61 insertions(+), 53 deletions(-) rename webtemplates/prosimii/{index2.html => base.html} (100%) diff --git a/apps/website/views.py b/apps/website/views.py index c818ab3675..046dbebfd0 100644 --- a/apps/website/views.py +++ b/apps/website/views.py @@ -1,11 +1,6 @@ from django.shortcuts import render_to_response, get_object_or_404 -from django.db import connection from django.template import RequestContext -from django import newforms as forms -from django.newforms.util import ValidationError -import django.views.generic.list_detail as list_detail from django.contrib.auth.models import User -from django.utils import simplejson from apps.news.models import NewsEntry import functions_db @@ -19,15 +14,29 @@ def page_index(request): """ Main root page. """ - news_entries = NewsEntry.objects.all().order_by('-date_posted')[:2] - + # Some misc. configurable stuff. + fpage_player_limit = 4 + fpage_news_entries = 2 + + # A QuerySet of recent news entries. + news_entries = NewsEntry.objects.all().order_by('-date_posted')[:fpage_news_entries] + # Dictionary containing database statistics. + objstats = functions_db.object_totals() + # A QuerySet of the most recently connected players. + recent_players = functions_db.get_recently_connected_players()[:fpage_player_limit] + pagevars = { "page_title": "Front Page", "news_entries": news_entries, - "players_connected": functions_db.num_connected_players(), - "players_registered": functions_db.num_total_players(), - "players_connected_recent": functions_db.num_recently_connected_players(), - "players_registered_recent": functions_db.num_recently_created_players(), + "players_connected_recent": recent_players, + "num_players_connected": functions_db.get_connected_players().count(), + "num_players_registered": functions_db.num_total_players(), + "num_players_connected_recent": functions_db.get_recently_connected_players().count(), + "num_players_registered_recent": functions_db.get_recently_created_players().count(), + "num_players": objstats["players"], + "num_rooms": objstats["rooms"], + "num_things": objstats["things"], + "num_exits": objstats["exits"], } context_instance = RequestContext(request) diff --git a/functions_db.py b/functions_db.py index 2fb6a81a6d..bd777fa46c 100644 --- a/functions_db.py +++ b/functions_db.py @@ -22,13 +22,7 @@ def get_connected_players(): """ return Object.objects.filter(nosave_flags__contains="CONNECTED") -def num_connected_players(): - """ - Returns the number of connected players. - """ - return get_connected_players().count() - -def num_recently_created_players(days=7): +def get_recently_created_players(days=7): """ Returns a QuerySet containing the player User accounts that have been connected within the last days. @@ -36,9 +30,9 @@ def num_recently_created_players(days=7): end_date = datetime.now() tdelta = timedelta(days) start_date = end_date - tdelta - return User.objects.filter(date_joined__range=(start_date, end_date)).count() + return User.objects.filter(date_joined__range=(start_date, end_date)) -def num_recently_connected_players(days=7): +def get_recently_connected_players(days=7): """ Returns a QuerySet containing the player User accounts that have been connected within the last days. @@ -46,7 +40,7 @@ def num_recently_connected_players(days=7): end_date = datetime.now() tdelta = timedelta(days) start_date = end_date - tdelta - return User.objects.filter(last_login__range=(start_date, end_date)).count() + return User.objects.filter(last_login__range=(start_date, end_date)).order_by('-last_login') def is_unsavable_flag(flagname): """ diff --git a/session.py b/session.py index 35e1c4da28..70a3c22598 100755 --- a/session.py +++ b/session.py @@ -150,7 +150,7 @@ class SessionProtocol(StatefulTelnetProtocol): pobject.set_flag("CONNECTED", True) self.msg("You are now logged in as %s." % (self.name,)) - pobject.get_location().emit_to_contents("%s has connected." % (pobject.get_name(),), exclude=pobject) + pobject.get_location().emit_to_contents("%s has connected." % (pobject.get_name(show_dbref=False),), exclude=pobject) self.execute_cmd("look") functions_general.log_infomsg("Login: %s" % (self,)) diff --git a/webtemplates/prosimii/index2.html b/webtemplates/prosimii/base.html similarity index 100% rename from webtemplates/prosimii/index2.html rename to webtemplates/prosimii/base.html diff --git a/webtemplates/prosimii/index.html b/webtemplates/prosimii/index.html index d14524e816..c80501730b 100644 --- a/webtemplates/prosimii/index.html +++ b/webtemplates/prosimii/index.html @@ -30,7 +30,8 @@

{{game_name}}

- The modern MU* server + +  

@@ -48,7 +49,8 @@ Home | About | Documentation | - Staff List + Staff List | + Admin Interface
@@ -58,15 +60,21 @@

Welcome!

-

Insert body text

+

Welcome to your new installation of Evennia, your friendly + neighborhood next-generation MUD server. You'll want to customize + this file, webtemplates/prosimii/index.html, to have a more + valid welcome message. Should you have any questions, concerns, + ideas, or bug reports, head over to the + Evennia community and + speak up!

Latest News

{% for entry in news_entries %} - {{entry.title}} -

{{entry.date_posted|time}}

-

{{entry.body|truncatewords:20}}

+ {{entry.title}} +

{{entry.date_posted|time}}

+

{{entry.body|truncatewords:20}}

{% endfor %} @@ -80,40 +88,39 @@

Players

- There are currently {{players_connected}} connected, - and a total of {{players_registered}} registered. Of these, {{players_registered_recent}} were created this week, and {{players_connected_recent}} have connected within the last seven days. + There are currently {{num_players_connected}} connected, + and a total of {{num_players_registered}} registered. Of these, {{num_players_registered_recent}} were created this week, and {{num_players_connected_recent}} have connected within the last seven days.

-

Stylesheet

-

An external stylesheet dictates the format and layout of text in this design.

- -

Thus, website-wide design changes can be achieved by editing only the stylesheet.

- +

Recently Connected

+
    + {% for player in players_connected_recent %} +
  • {{player.username}} -- {{player.last_login|timesince}} ago
  • + {% endfor %} +

-

Compatibility

-

Prosimii’s stylesheet is more robust and comprehensive than - my previous designs.

- -

This design has been tested for consistent rendering in Gecko - (Mozilla Firefox - 0.10.1), Opera (7.01) and Internet Explorer (6.0).

+

Database Stats

+
    +
  • {{num_players}} players
  • +
  • {{num_rooms}} rooms
  • +
  • {{num_things}} things
  • +
  • {{num_exits}} exits
  • +
-

Accessibility

-

Prosimii tentatively conforms to the - - WCAG double A rating - and § 508 guidelines for web - content accessibility.

- -

Additionally, most document metrics (lengths, widths and spacings) are font-size - relative.

+

Evennia

+

Evennia is MUD server built in + Python, on top of the + Twisted and + Django frameworks. This + combination of technology allows for the quick and easy creation + of games, as simple as complex as one desires.

@@ -125,8 +132,6 @@ Powered by Evennia
- - Queries » {{sql_queries|length}}