34
									
								
								aircox/templates/accounts/profile.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								aircox/templates/accounts/profile.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
			
		||||
{% extends "aircox/base.html" %}
 | 
			
		||||
{% load i18n aircox %}
 | 
			
		||||
 | 
			
		||||
{% block head_title %}
 | 
			
		||||
    {% block title %}{{ user.username }}{% endblock %}
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block content-container %}
 | 
			
		||||
<div class="container content page-content">
 | 
			
		||||
  <h2 class="subtitle">Mon Profil</h2>
 | 
			
		||||
  {% translate "Username" %} : {{ user.username|title }}<br/>
 | 
			
		||||
  <!-- Connexion: {{ user.last_login }} -->
 | 
			
		||||
 | 
			
		||||
  <h2 class="subtitle is-1">Mes émissions</h2>
 | 
			
		||||
  {% if programs|length %}
 | 
			
		||||
  <ul>
 | 
			
		||||
  {% for p in programs %}
 | 
			
		||||
  <li>{{ p.title }} :
 | 
			
		||||
       
 | 
			
		||||
      <a href="{% url 'program-detail' slug=p.slug %}">
 | 
			
		||||
          <span title="{% translate 'View' %} {{ page }}">{% translate 'View' %}</span>
 | 
			
		||||
      </a>
 | 
			
		||||
       
 | 
			
		||||
      <a href="{% url 'program-edit' pk=p.pk %}">
 | 
			
		||||
          <span title="{% translate 'Edit' %} {{ page }}">{% translate 'Edit' %} </span>
 | 
			
		||||
      </a>
 | 
			
		||||
  </li>
 | 
			
		||||
  {% endfor %}
 | 
			
		||||
  </ul>
 | 
			
		||||
  {% else %}
 | 
			
		||||
  {% trans 'You are not listed as a program editor yet' %}
 | 
			
		||||
  {% endif %}
 | 
			
		||||
</div>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
@ -72,16 +72,21 @@ Usefull context:
 | 
			
		||||
                        </a>
 | 
			
		||||
                        {% endif %}
 | 
			
		||||
                        {% if user.is_authenticated %}
 | 
			
		||||
                        <div class="navbar-item">
 | 
			
		||||
                          <a>{{ user.username }}</a>   <a href="{% url 'logout' %}"> <i class="fa fa-power-off"></i></a>
 | 
			
		||||
                        </div>
 | 
			
		||||
                        <a class="nav-item" href="{% url "profile" %}" target="new">
 | 
			
		||||
                            {% translate "Profile" %}
 | 
			
		||||
                        </a>
 | 
			
		||||
                        <a class="nav-item" href="{% url "logout" %}" title="{% translate "Disconnect" %}"
 | 
			
		||||
                            aria-label="{% translate "Disconnect" %}">
 | 
			
		||||
                            <i class="fa fa-power-off"></i>
 | 
			
		||||
                        </a>
 | 
			
		||||
                        {% endif %}
 | 
			
		||||
                        {% endblock %}
 | 
			
		||||
                    </div>
 | 
			
		||||
                    {% endblock %}
 | 
			
		||||
                </nav>
 | 
			
		||||
                {% endblock %}
 | 
			
		||||
 | 
			
		||||
                {% block secondary-nav %}{% endblock %}
 | 
			
		||||
                {% endblock %}
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
            {% block main-container %}
 | 
			
		||||
@ -95,6 +100,8 @@ Usefull context:
 | 
			
		||||
                {% endblock %}
 | 
			
		||||
                {% endspaceless %}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                {% block header-container %}
 | 
			
		||||
                {% if page or cover or title %}
 | 
			
		||||
                <header class="container header preview preview-header {% if cover %}has-cover{% endif %}">
 | 
			
		||||
 | 
			
		||||
@ -10,3 +10,13 @@ def test_authenticate(user, client, program):
 | 
			
		||||
    r = client.post(reverse("login"), kwargs={"username": "foo", "password": "bar"})
 | 
			
		||||
    assert b"errorlist" in r.content
 | 
			
		||||
    assert client.login(username="user1", password="bar")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.mark.django_db()
 | 
			
		||||
def test_profile_programs(user, client, program):
 | 
			
		||||
    client.force_login(user)
 | 
			
		||||
    r = client.get(reverse("profile"))
 | 
			
		||||
    assert program.title not in r.content.decode("utf-8")
 | 
			
		||||
    user.groups.add(program.editors)
 | 
			
		||||
    r = client.get(reverse("profile"))
 | 
			
		||||
    assert program.title in r.content.decode("utf-8")
 | 
			
		||||
 | 
			
		||||
@ -127,4 +127,6 @@ urls = [
 | 
			
		||||
        views.errors.NoStationErrorView.as_view(),
 | 
			
		||||
        name="errors-no-station",
 | 
			
		||||
    ),
 | 
			
		||||
    path("gestion/", views.ProfileView.as_view(), name="profile"),
 | 
			
		||||
    path("accounts/profile/", views.ProfileView.as_view(), name="profile"),
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
@ -11,6 +11,7 @@ from .page import (
 | 
			
		||||
    PageDetailView,
 | 
			
		||||
    PageListView,
 | 
			
		||||
)
 | 
			
		||||
from .profile import ProfileView
 | 
			
		||||
from .program import (
 | 
			
		||||
    ProgramDetailView,
 | 
			
		||||
    ProgramListView,
 | 
			
		||||
@ -38,6 +39,7 @@ __all__ = (
 | 
			
		||||
    "BasePageListView",
 | 
			
		||||
    "PageDetailView",
 | 
			
		||||
    "PageListView",
 | 
			
		||||
    "ProfileView",
 | 
			
		||||
    "ProgramDetailView",
 | 
			
		||||
    "ProgramListView",
 | 
			
		||||
    "ProgramPageDetailView",
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										15
									
								
								aircox/views/profile.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								aircox/views/profile.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
			
		||||
from django.contrib.auth.mixins import LoginRequiredMixin
 | 
			
		||||
from django.views.generic.base import TemplateView
 | 
			
		||||
 | 
			
		||||
from aircox.models import Program
 | 
			
		||||
from aircox.views import BaseView
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ProfileView(LoginRequiredMixin, BaseView, TemplateView):
 | 
			
		||||
    template_name = "accounts/profile.html"
 | 
			
		||||
 | 
			
		||||
    def get_context_data(self, **kwargs):
 | 
			
		||||
        groups = self.request.user.groups.all()
 | 
			
		||||
        programs = Program.objects.filter(editors__in=groups)
 | 
			
		||||
        kwargs.update({"user": self.request.user, "programs": programs})
 | 
			
		||||
        return super().get_context_data(**kwargs)
 | 
			
		||||
		Reference in New Issue
	
	Block a user