Improve Trombi again with pictures, notifs, and style!

This commit is contained in:
Skia 2017-05-10 23:03:49 +02:00
parent f2b2ff533d
commit 35f983131f
9 changed files with 122 additions and 15 deletions

View File

@ -193,11 +193,15 @@ nav {
/*--------------------------------CONTENT------------------------------*/ /*--------------------------------CONTENT------------------------------*/
.helptext {
display: block;
}
#quick_notif { #quick_notif {
width: 90%; width: 90%;
margin: 0px auto; margin: 0px auto;
list-style-type: none; list-style-type: none;
background: $primary-neutral-light-color; background: $second-color;
li { li {
padding: 10px; padding: 10px;
} }
@ -686,4 +690,4 @@ label {
height: 100%; height: 100%;
vertical-align: middle; vertical-align: middle;
} }
} }

View File

@ -88,7 +88,7 @@
{% if not popup %} {% if not popup %}
<nav> <nav>
<a href="https://ae.utbm.fr/">{% trans %}Main{% endtrans %}</a> <a href="https://ae.utbm.fr/">{% trans %}Main{% endtrans %}</a>
<a href="https://ae.utbm.fr/trombironch/">{% trans %}Matmatronch{% endtrans %}</a> <a href="https://ae.utbm.fr/matmatronch/">{% trans %}Matmatronch{% endtrans %}</a>
<a href="{{ url('core:page', page_name="Index") }}">{% trans %}Wiki{% endtrans %}</a> <a href="{{ url('core:page', page_name="Index") }}">{% trans %}Wiki{% endtrans %}</a>
<a href="{{ url('sas:main') }}">{% trans %}SAS{% endtrans %}</a> <a href="{{ url('sas:main') }}">{% trans %}SAS{% endtrans %}</a>
<a href="{{ url('forum:main') }}">{% trans %}Forum{% endtrans %}</a> <a href="{{ url('forum:main') }}">{% trans %}Forum{% endtrans %}</a>

View File

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('trombi', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='trombiuser',
name='profile_pict',
field=models.ImageField(null=True, blank=True, help_text='The profile picture you want in the trombi (warning: this picture may be published)', verbose_name='profile pict', upload_to='trombi'),
),
migrations.AddField(
model_name='trombiuser',
name='scrub_pict',
field=models.ImageField(null=True, blank=True, help_text='The scrub picture you want in the trombi (warning: this picture may be published)', verbose_name='scrub pict', upload_to='trombi'),
),
]

View File

@ -88,9 +88,15 @@ class TrombiUser(models.Model):
This class is only here to avoid cross references between the core, club, This class is only here to avoid cross references between the core, club,
and trombi modules. It binds a User to a Trombi without needing to import and trombi modules. It binds a User to a Trombi without needing to import
Trombi into the core. Trombi into the core.
It also adds the pictures to the profile without needing all the security
like the other SithFiles.
""" """
user = models.OneToOneField(User, verbose_name=_("trombi user"), related_name='trombi_user') user = models.OneToOneField(User, verbose_name=_("trombi user"), related_name='trombi_user')
trombi = models.ForeignKey(Trombi, verbose_name=_("trombi"), related_name='users', blank=True, null=True, on_delete=models.SET_NULL) trombi = models.ForeignKey(Trombi, verbose_name=_("trombi"), related_name='users', blank=True, null=True, on_delete=models.SET_NULL)
profile_pict = models.ImageField(upload_to='trombi', verbose_name=_("profile pict"), null=True, blank=True,
help_text=_("The profile picture you want in the trombi (warning: this picture may be published)"))
scrub_pict = models.ImageField(upload_to='trombi', verbose_name=_("scrub pict"), null=True, blank=True,
help_text=_("The scrub picture you want in the trombi (warning: this picture may be published)"))
class TrombiComment(models.Model): class TrombiComment(models.Model):
""" """

View File

@ -0,0 +1,31 @@
{% extends "core/base.jinja" %}
{% block title %}
{% trans %}Comment{% endtrans %}
{% endblock %}
{% block content %}
<h2>{% trans %}Comment{% endtrans %}</h2>
<div style="width: 400px; margin: auto; border: solid 1px grey; text-align: center">
{% set file = None %}
{% if target.profile_pict %}
{% set file = target.profile_pict.url %}
{% else %}
{% set file = static('core/img/na.gif') %}
{% endif %}
<div style="max-width: 300px; margin: auto;">
<img src="{{ file }}" alt="" style="max-width: 300px">
</div>
<div>
{{ target.user.get_display_name() }}
</div>
</div>
<form action="" method="post">
{% csrf_token %}
{{ form.as_p() }}
<p><input type="submit" value="{% trans %}Save{% endtrans %}" /></p>
</form>
{% endblock %}

View File

@ -10,10 +10,22 @@
<p>Subscription deadline: {{ object.subscription_deadline|date(DATETIME_FORMAT) }}</p> <p>Subscription deadline: {{ object.subscription_deadline|date(DATETIME_FORMAT) }}</p>
<p>Comment deadline: {{ object.comments_deadline|date(DATETIME_FORMAT) }}</p> <p>Comment deadline: {{ object.comments_deadline|date(DATETIME_FORMAT) }}</p>
<a href="#">Export</a> <a href="#">Export</a>
<p>People:</p> <hr>
<ul> <div>
{% for u in object.users.all() %} {% for u in object.users.all() %}
<li>{{ u.user.get_display_name() }} - <a href="{{ url('trombi:delete_user', trombi_id=object.id, user_id=u.id) }}">Delete</a></li> <div class="ib" style="border: solid 1px grey; text-align: center">
{% endfor %} {% set file = None %}
</ul> {% if u.profile_pict %}
{% set file = u.profile_pict.url %}
{% else %}
{% set file = static('core/img/na.gif') %}
{% endif %}
<div style="max-width: 100px; margin: auto;">
<img src="{{ file }}" alt="" style="max-width: 100px">
</div>
<div>{{ u.user.get_display_name() }}</div>
<div><a href="{{ url('trombi:delete_user', trombi_id=object.id, user_id=u.id) }}">Delete</a></div>
</div>
{% endfor %}
</div>
{% endblock %} {% endblock %}

View File

@ -15,10 +15,20 @@
{% else %} {% else %}
<p>{% trans trombi = user.trombi_user.trombi %}You are subscribed to the Trombi {{ trombi }}{% endtrans %}</p> <p>{% trans trombi = user.trombi_user.trombi %}You are subscribed to the Trombi {{ trombi }}{% endtrans %}</p>
<p><a href="{{ url("trombi:profile") }}">Edit my profile</a></p> <p><a href="{{ url("trombi:profile") }}">Edit my profile</a></p>
<p><a href="{{ url("trombi:pictures") }}">Edit my pictures</a></p>
<hr> <hr>
<div> <div>
{% for u in user.trombi_user.trombi.users.exclude(id=user.trombi_user.id) %} {% for u in user.trombi_user.trombi.users.exclude(id=user.trombi_user.id) %}
<div class="ib"> <div class="ib" style="border: solid 1px grey; text-align: center">
{% set file = None %}
{% if u.profile_pict %}
{% set file = u.profile_pict.url %}
{% else %}
{% set file = static('core/img/na.gif') %}
{% endif %}
<div style="max-width: 100px; margin: auto;">
<img src="{{ file }}" alt="" style="max-width: 100px">
</div>
<div>{{ u.user.get_display_name() }}</div> <div>{{ u.user.get_display_name() }}</div>
{% set comment = u.received_comments.filter(author__id=user.trombi_user.id).first() %} {% set comment = u.received_comments.filter(author__id=user.trombi_user.id).first() %}
{% if comment %} {% if comment %}

View File

@ -35,5 +35,6 @@ urlpatterns = [
url(r'^comment/(?P<comment_id>[0-9]+)/edit$', TrombiCommentEditView.as_view(), name='edit_comment'), url(r'^comment/(?P<comment_id>[0-9]+)/edit$', TrombiCommentEditView.as_view(), name='edit_comment'),
url(r'^tools$', UserTrombiToolsView.as_view(), name='user_tools'), url(r'^tools$', UserTrombiToolsView.as_view(), name='user_tools'),
url(r'^profile$', UserTrombiEditProfileView.as_view(), name='profile'), url(r'^profile$', UserTrombiEditProfileView.as_view(), name='profile'),
url(r'^pictures$', UserTrombiEditPicturesView.as_view(), name='pictures'),
] ]

View File

@ -118,6 +118,17 @@ class UserTrombiToolsView(QuickNotifMixin, TemplateView):
kwargs['subscribe_form'] = UserTrombiForm() kwargs['subscribe_form'] = UserTrombiForm()
return kwargs return kwargs
class UserTrombiEditPicturesView(UpdateView):
model = TrombiUser
fields = ['profile_pict', 'scrub_pict']
template_name = "core/edit.jinja"
def get_object(self):
return self.request.user.trombi_user
def get_success_url(self):
return reverse('trombi:user_tools')+"?qn_success"
class UserTrombiEditProfileView(UpdateView): class UserTrombiEditProfileView(UpdateView):
model = User model = User
form_class = modelform_factory(User, form_class = modelform_factory(User,
@ -129,17 +140,20 @@ class UserTrombiEditProfileView(UpdateView):
'parent_address': _("Native town"), 'parent_address': _("Native town"),
}) })
template_name = "core/edit.jinja" template_name = "core/edit.jinja"
success_url = reverse_lazy('trombi:user_tools')
def get_object(self): def get_object(self):
return self.request.user return self.request.user
def get_success_url(self):
return reverse('trombi:user_tools')+"?qn_success"
class TrombiCommentFormView(): class TrombiCommentFormView():
""" """
Create/edit a trombi comment Create/edit a trombi comment
""" """
model = TrombiComment model = TrombiComment
fields = ['content'] fields = ['content']
template_name = 'trombi/comment.jinja'
def get_form_class(self): def get_form_class(self):
self.trombi = self.request.user.trombi_user.trombi self.trombi = self.request.user.trombi_user.trombi
@ -152,11 +166,17 @@ class TrombiCommentFormView():
}) })
def get_success_url(self): def get_success_url(self):
return reverse('trombi:user_tools') return reverse('trombi:user_tools')+"?qn_success"
def get_context_data(self, **kwargs):
kwargs = super(TrombiCommentFormView, self).get_context_data(**kwargs)
if 'user_id' in self.kwargs.keys():
kwargs['target'] = get_object_or_404(TrombiUser, id=self.kwargs['user_id'])
else:
kwargs['target'] = self.object.target
return kwargs
class TrombiCommentCreateView(TrombiCommentFormView, CreateView): class TrombiCommentCreateView(TrombiCommentFormView, CreateView):
template_name = 'core/create.jinja'
def form_valid(self, form): def form_valid(self, form):
target = get_object_or_404(TrombiUser, id=self.kwargs['user_id']) target = get_object_or_404(TrombiUser, id=self.kwargs['user_id'])
form.instance.author = self.request.user.trombi_user form.instance.author = self.request.user.trombi_user
@ -165,6 +185,5 @@ class TrombiCommentCreateView(TrombiCommentFormView, CreateView):
class TrombiCommentEditView(TrombiCommentFormView, CanViewMixin, UpdateView): class TrombiCommentEditView(TrombiCommentFormView, CanViewMixin, UpdateView):
pk_url_kwarg = "comment_id" pk_url_kwarg = "comment_id"
template_name = 'core/edit.jinja'