Code bereinigt und Seitenstruktur verfeinert.
Das Layout der einzelnen Seiten ist jetzt einheitlich: - jumbotron - Naviation der Unterseiten (wenn Vorhanden) - Hauptinhalt - Pager (bei mehrseiteigen Ergebnissen) - Kommentare (wenn Kommentare möglich) - Buttonleiste zum bearbeiten (wen erlaubt) * Viele kleine HTML5 Fehler wurden bereinigt * CSS Dateien wurden angepasst * Nicht mehr benötigte Dateien in STATIC gelöscht * externe Pakete aus utlis/ entfernt, als Vobreitung für virtenv Nutzung.
This commit is contained in:
committed by
Christian Berg
parent
86a0db050d
commit
34f5bdca58
@@ -4,7 +4,7 @@ from . import PAID_MEMBERSHIP_GROUP
|
||||
from datetime import timedelta
|
||||
from django.utils import timezone
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import FieldError
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.db import models
|
||||
from django.utils.translation import ugettext as _
|
||||
@@ -139,7 +139,7 @@ class ActivationRequest(models.Model):
|
||||
|
||||
|
||||
class MembershipManager(models.Manager):
|
||||
def get(self, *args, **kwargs):
|
||||
def get(self, user=None, username=None, **kwargs):
|
||||
"""
|
||||
First try's to fetch the requested Membership Object from the Database,
|
||||
if the requestetd Membership does not Exists (yet) try to fetch the
|
||||
@@ -147,26 +147,20 @@ class MembershipManager(models.Manager):
|
||||
Userdata.
|
||||
"""
|
||||
try:
|
||||
if 'username' in kwargs:
|
||||
return models.Manager.get(self,
|
||||
user__username=kwargs['username'])
|
||||
else:
|
||||
return models.Manager.get(self, *args, **kwargs)
|
||||
except FieldError:
|
||||
user = settings.AUTH_USER_MODEL.objects.get(*args, **kwargs)
|
||||
if user:
|
||||
return super(MembershipManager, self).get(user=user)
|
||||
elif username:
|
||||
return super(MembershipManager, self).get(user__username=username)
|
||||
except Membership.DoesNotExist:
|
||||
if 'user' in kwargs:
|
||||
user = settings.AUTH_USER_MODEL.objects.get(pk=kwargs['user'].id)
|
||||
else:
|
||||
user = settings.AUTH_USER_MODEL.objects.get(*args, **kwargs)
|
||||
|
||||
membership = Membership(
|
||||
user=user,
|
||||
nickname=user.username,
|
||||
first_name=user.first_name,
|
||||
last_name=user.last_name,
|
||||
email=user.email
|
||||
)
|
||||
if username:
|
||||
user = get_user_model().objects.get(username=username)
|
||||
membership = Membership(
|
||||
user=user,
|
||||
nickname=user.username,
|
||||
first_name=user.first_name,
|
||||
last_name=user.last_name,
|
||||
email=user.email
|
||||
)
|
||||
return membership
|
||||
|
||||
|
||||
|
||||
@@ -3,75 +3,85 @@
|
||||
|
||||
{% block title %}{{ membership.first_name }} {{membership.last_name}}{% endblock %}
|
||||
|
||||
{% block maincontent %}
|
||||
<h2 class="grid_12">{% trans 'profile for' %} {{membership.user.username|title}}</h2>
|
||||
{% if membership.profile %}
|
||||
<img class="grid_3" src="{{membership.profile.url}}" alt="{% trans 'Profile Image' %}" />
|
||||
{% else %}
|
||||
<div class="grid_3"> Noch kein Foto hoch geladen</div>
|
||||
{% endif %}
|
||||
{% block teaser %}<h2>{% trans 'profile for' %} {{membership.user.username|title}}</h2>{% endblock %}
|
||||
|
||||
<div class="grid_6">
|
||||
<ul>
|
||||
<li><strong>Name:</strong> {{membership.first_name}} {{membership.last_name}}</li>
|
||||
<li><strong>{% trans "Member Since" %}:</strong> {{membership.user.date_joined}}</li>
|
||||
<li><strong>{% trans "Last Login" %}:</strong> {{membership.user.last_login}}</li>
|
||||
{% if website %}<li><strong>Homepage:</strong> <a href="{{website}}">{{website}}</a></li>{% endif %}
|
||||
</ul>
|
||||
{% block navigation %}
|
||||
{% if kyu_dan_ranking %}
|
||||
<h3>Mahjong</h3>
|
||||
<ul>
|
||||
{% if kyu_dan_ranking.dan %}
|
||||
<li><strong>{{kyu_dan_ranking.dan}}. Dan: </strong> {{ kyu_dan_ranking.dan_points }} {% trans 'Points' %}</li>
|
||||
{% elif kyu_dan_ranking.kyu%}
|
||||
<li><strong>{{kyu_dan_ranking.kyu}}. Kyu: </strong> {{ kyu_dan_ranking.kyu_points }} {% trans 'Points' %}</li>
|
||||
{% endif %}
|
||||
<li><strong>{% trans 'Games Total' %}: </strong> {{ kyu_dan_ranking.hanchan_count }} Hanchans - {{kyu_dan_ranking.won_hanchans }} {% trans 'Won' %} / {{ kyu_dan_ranking.good_hanchans }} {% trans 'Good' %}</li>
|
||||
<li><strong>{% trans 'Current Season' %}: </strong> {{ ladder_ranking.hanchan_count }} Hanchans - {{ ladder_ranking.won_hanchans }} {% trans 'Won' %} / {{ ladder_ranking.good_hanchans }} {% trans 'Good' %} </li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% ifequal membership.user user %}
|
||||
<div class="grid_3">
|
||||
<a href="{% url 'membership-edit' membership.user.username %}" class="button">
|
||||
<img src="{{STATIC_URL}}icons/user_edit.png" alt="{% trans 'Edit Userprofile' %}" width="16" height="16"/>
|
||||
{% trans "Edit Profile" %}
|
||||
</a>
|
||||
<a href="{% url 'password_change' %}" class="button">
|
||||
<img src="{{STATIC_URL}}icons/lock_edit.png" alt="{% trans 'Change Password' %}" width="16" height="16"/>
|
||||
{% trans 'Change Password' %}
|
||||
</a>
|
||||
<a class="button" href="{% url 'social:begin' 'facebook' %}" rel="nofollow">
|
||||
<img src="{{STATIC_URL}}img/facebook.png" alt="{% trans 'Associate' %}" width="26" height="26"/>
|
||||
{% blocktrans with 'Facebook' as name %}Associate with {{ name }}{% endblocktrans %}
|
||||
</a>
|
||||
<a class="button" href="{% url 'social:begin' 'twitter' %}" rel="nofollow">
|
||||
<img src="{{STATIC_URL}}img/twitter.png" alt="{% trans 'Associate' %}" width="26" height="26"/>
|
||||
{% blocktrans with 'Twitter' as name %}Associate with {{ name }}{% endblocktrans %}
|
||||
</a>
|
||||
<a class="button" href="{% url 'social:begin' 'google-oauth2' %}" rel="nofollow">
|
||||
<img src="{{STATIC_URL}}img/google.png" alt="{% trans 'Associate' %}" width="26" height="26"/>
|
||||
{% blocktrans with 'Google' as name %}Associate with {{ name }}{% endblocktrans %}
|
||||
</a>
|
||||
|
||||
</div>
|
||||
{% endifequal %}
|
||||
|
||||
{% block score_list %}
|
||||
{% if kyu_dan_ranking %}
|
||||
<ul class="tabs grid_12">
|
||||
<li><a href="{% url 'player-ladder-score' membership.user.username %}">{% trans "Ladder Hanchans" %}</a></li>
|
||||
<li><a href="{% url 'player-kyu-score' membership.user.username %}">{% trans "Kyu Hanchans" %}</a></li>
|
||||
<li><a href="{% url 'player-dan-score' membership.user.username %}">{% trans "Dan Hanchans" %}</a></li>
|
||||
<li><a href="{% url 'player-ladder-score' membership.user.username %}">{% trans "Invalid Hanchans" %}</a></li>
|
||||
<ul id="navigation">
|
||||
<li><a href="{% url 'player-ladder-score' membership.user.username %}">{% trans "Ladder Hanchans" %}</a></li>
|
||||
<li><a href="{% url 'player-kyu-score' membership.user.username %}">{% trans "Kyu Hanchans" %}</a></li>
|
||||
<li><a href="{% url 'player-dan-score' membership.user.username %}">{% trans "Dan Hanchans" %}</a></li>
|
||||
<li><a href="{% url 'player-invalid-score' membership.user.username %}">{% trans "Invalid Hanchans" %}</a></li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block maincontent %}
|
||||
{% if membership.profile %}
|
||||
<img class="grid_3" src="{{membership.profile.url}}" alt="{% trans 'Profile Image' %}"/>
|
||||
{% else %}
|
||||
<div class="grid_3"> Noch kein Foto hoch geladen</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="grid_6">
|
||||
<ul>
|
||||
<li><strong>Name:</strong> {{membership.first_name}} {{membership.last_name}}</li>
|
||||
<li><strong>{% trans "Member Since" %}:</strong> {{membership.user.date_joined}}</li>
|
||||
<li><strong>{% trans "Last Login" %}:</strong> {{membership.user.last_login}}</li>
|
||||
{% if website %}
|
||||
<li><strong>Homepage:</strong> <a href="{{website}}">{{website}}</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
{% if kyu_dan_ranking %}
|
||||
<h3>Mahjong</h3>
|
||||
<ul>
|
||||
{% if kyu_dan_ranking.dan %}
|
||||
<li><strong>{{kyu_dan_ranking.dan}}. Dan: </strong> {{ kyu_dan_ranking.dan_points }} {% trans 'Points' %}</li>
|
||||
{% elif kyu_dan_ranking.kyu%}
|
||||
<li><strong>{{kyu_dan_ranking.kyu}}. Kyu: </strong> {{ kyu_dan_ranking.kyu_points }} {% trans 'Points' %}</li>
|
||||
{% endif %}
|
||||
<li><strong>{% trans 'Games Total' %}: </strong> {{ kyu_dan_ranking.hanchan_count }} Hanchans -
|
||||
{{kyu_dan_ranking.won_hanchans }} {% trans 'Won' %} / {{ kyu_dan_ranking.good_hanchans }} {% trans 'Good' %}
|
||||
</li>
|
||||
<li><strong>{% trans 'Current Season' %}: </strong> {{ ladder_ranking.hanchan_count }} Hanchans - {{ ladder_ranking.won_hanchans }} {% trans 'Won' %} / {{ ladder_ranking.good_hanchans }} {% trans 'Good' %}
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% ifequal membership.user user %}
|
||||
<div class="grid_3">
|
||||
<a href="{% url 'membership-edit' membership.user.username %}" class="button">
|
||||
<img src="{{STATIC_URL}}icons/user_edit.png" alt="{% trans 'Edit Userprofile' %}" width="16" height="16"/>
|
||||
{% trans "Edit Profile" %}
|
||||
</a>
|
||||
<a href="{% url 'password_change' %}" class="button">
|
||||
<img src="{{STATIC_URL}}icons/lock_edit.png" alt="{% trans 'Change Password' %}" width="16" height="16"/>
|
||||
{% trans 'Change Password' %}
|
||||
</a>
|
||||
<a class="button" href="{% url 'social:begin' 'facebook' %}" rel="nofollow">
|
||||
<img src="{{STATIC_URL}}img/facebook.png" alt="{% trans 'Associate' %}" width="26" height="26"/>
|
||||
{% blocktrans with 'Facebook' as name %}Associate with {{ name }}{% endblocktrans %}
|
||||
</a>
|
||||
<a class="button" href="{% url 'social:begin' 'twitter' %}" rel="nofollow">
|
||||
<img src="{{STATIC_URL}}img/twitter.png" alt="{% trans 'Associate' %}" width="26" height="26"/>
|
||||
{% blocktrans with 'Twitter' as name %}Associate with {{ name }}{% endblocktrans %}
|
||||
</a>
|
||||
<a class="button" href="{% url 'social:begin' 'google-oauth2' %}" rel="nofollow">
|
||||
<img src="{{STATIC_URL}}img/google.png" alt="{% trans 'Associate' %}" width="26" height="26"/>
|
||||
{% blocktrans with 'Google' as name %}Associate with {{ name }}{% endblocktrans %}
|
||||
</a>
|
||||
|
||||
</div>
|
||||
{% endifequal %}
|
||||
|
||||
{% block score_list %} {% endblock %}
|
||||
{% endblock %}
|
||||
|
||||
{% block comments %}
|
||||
{% if membership %}
|
||||
{% render_comment_list for membership %}
|
||||
{% render_comment_form for membership %}
|
||||
{% render_comment_list for membership %}
|
||||
{% render_comment_form for membership %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
@@ -3,7 +3,9 @@ from django.conf import settings
|
||||
from django.contrib import auth, messages
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.views import generic
|
||||
from django.contrib.auth import get_user_model
|
||||
|
||||
from mahjong_ranking.models import KyuDanRanking, LadderRanking, LadderSeason
|
||||
from utils import mixins
|
||||
@@ -20,7 +22,6 @@ class ActivateRegistration(generic.DetailView):
|
||||
def get(self, request, **kwargs):
|
||||
activation_key = self.kwargs.get('activation_key')
|
||||
user = self.get_user(activation_key)
|
||||
print 'User: ', user
|
||||
if user:
|
||||
return self.login(user)
|
||||
else:
|
||||
@@ -80,7 +81,8 @@ class MembershipDetail(mixins.LoginRequiredMixin, generic.DetailView):
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
if self.kwargs.get('username'):
|
||||
return models.Membership.objects.get_or_create(username=self.kwargs['username'])[0]
|
||||
user = get_object_or_404(get_user_model(), username=self.kwargs['username'])
|
||||
return models.Membership.objects.get_or_create(user=user)[0]
|
||||
elif self.request.user.is_authenticated():
|
||||
return models.Membership.objects.get(user=self.request.user)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user