Couple of interface tweeks

This commit is contained in:
Tris Forster 2023-02-28 16:56:22 +11:00
parent 7d4f959146
commit f840ee3d8b
8 changed files with 28 additions and 21 deletions

View File

@ -61,7 +61,8 @@ class Ensemble(models.Model):
ordering = ('slug', ) ordering = ('slug', )
def active_projects(self): def active_projects(self):
return self.projects.filter(active=True, event_date__gte=timezone.now()) #return self.projects.filter(active=True, event_date__gte=timezone.now())
return self.projects.active().current()
def has_admin(self, user): def has_admin(self, user):
if not user.is_authenticated: if not user.is_authenticated:
@ -132,6 +133,8 @@ class Project(models.Model):
@property @property
def rough_date(self): def rough_date(self):
if not self.event_date:
return "No timescale"
in_past, s = rough_date(self.event_date) in_past, s = rough_date(self.event_date)
if in_past: if in_past:
return f"{s} ago" return f"{s} ago"

View File

@ -11,6 +11,7 @@
<script src="{% static 'interface/js/interface.js' %}"></script> <script src="{% static 'interface/js/interface.js' %}"></script>
<title>{% block title %}Polyphonic{% endblock %}</title> <title>{% block title %}Polyphonic{% endblock %}</title>
{% block media %}{% endblock %} {% block media %}{% endblock %}
<style>{% block style %}{% endblock %}</style>
</head> </head>
<body> <body>

View File

@ -23,12 +23,12 @@
<h3 class="title">Projects for {{ensemble.name }}</h3> <h3 class="title">Projects for {{ensemble.name }}</h3>
<p>{{ ensemble.details|markdown }}</p> <p>{{ ensemble.details|markdown }}</p>
<h4>Administrators</h4> <p>
<ul> Administrators:
{% for admin in ensemble.admins.all %} {% for admin in ensemble.admins.all %}
<li><a href="mailto:{{ admin.email }}">{% firstof admin.get_full_name admin.get_username %}</a></li> <a href="mailto:{{ admin.email }}">{% firstof admin.get_full_name admin.get_username %}</a>
{% endfor %} {% endfor %}
</ul> </p>
{% include 'interface/project_items.html' %} {% include 'interface/project_items.html' %}

View File

@ -19,22 +19,18 @@
<div class="card"> <div class="card">
<div class="card-content"> <div class="card-content">
<div class="media"> <div class="media">
<div class="media-left"> <div class="media-left">
<figure class="image is-48x48"> <figure class="image is-48x48">
<img src="https://bulma.io/images/placeholders/96x96.png" alt="Placeholder image"> <img src="https://www.gravatar.com/avatar/{{ ensemble.email }}?d=mp" alt="Placeholder image">
</figure> </figure>
</div> </div>
<div class="media-content"> <div class="media-content" style="min-height: 60px">
<a href="{% url 'ensemble_detail' ensemble.slug %}"> <a href="{% url 'ensemble_detail' ensemble.slug %}">
<p class="title is-4">{{ ensemble.name }}</p> <p class="title is-4">{{ ensemble.name }}</p>
</a> </a>
</div> </div>
</div> </div>
{% if ensemble.details %}
<div class="content">
{{ ensemble.details | markdown }}
</div>
{% endif %}
</div> </div>
<div class="card-footer"> <div class="card-footer">
{% with projects=ensemble.active_projects.count %} {% with projects=ensemble.active_projects.count %}

View File

@ -14,7 +14,7 @@
<li><a href="{% url 'ensemble_list' %}">Ensembles</a></li> <li><a href="{% url 'ensemble_list' %}">Ensembles</a></li>
<li><a href="{% url 'project_list' %}">Projects</a></li> <li><a href="{% url 'project_list' %}">Projects</a></li>
{% if request.user.is_authenticated %} {% if request.user.is_authenticated %}
<li><a href="{% url 'work_list' %}">Library</a></li> <!--li><a href="{% url 'work_list' %}">Library</a></li-->
<li><a href="{% url 'collection_list' %}">Collections</a></li> <li><a href="{% url 'collection_list' %}">Collections</a></li>
{% endif %} {% endif %}
</ul> </ul>

View File

@ -12,14 +12,17 @@
<p class="card-header-icon" style="color: black;">{{ project.rough_date }}</p> <p class="card-header-icon" style="color: black;">{{ project.rough_date }}</p>
</header> </header>
</a> </a>
<div class="card-content"> <div class="card-content" style="height: 100px; overflow: hidden">
<div class="content" style="height: 100px; overflow: hidden"> <div class="content">
{{ project.description | markdown }} {{ project.description | markdown }}
{% if not ensemble %}
<div class="has-text-centered"><i><small>With {{ project.ensemble }}</small></i></div>
{% endif %}
</div> </div>
</div> </div>
{% if not ensemble %}
<div class="card-footer">
<a class="card-footer-item" href="{% url 'ensemble_detail' project.ensemble.slug %}">{{ project.ensemble }}</a>
</div>
{% endif %}
</div> </div>
</div> </div>
{% empty %} {% empty %}

View File

@ -25,5 +25,9 @@ class PlaylistAddForm(forms.Form):
def save(self): def save(self):
self.instance.works.add(self.cleaned_data['work']) self.instance.works.add(self.cleaned_data['work'])
class ProjectEnsembleChoiceField(forms.ModelChoiceField):
def label_from_instance(self, obj):
return f"{obj.ensemble.name} - {obj.name}"
class ProjectSelectForm(BaseForm): class ProjectSelectForm(BaseForm):
project = forms.ModelChoiceField(queryset=Project.objects.all()) project = ProjectEnsembleChoiceField(queryset=Project.objects.all())

View File

@ -253,7 +253,7 @@ class WorkAddToProject(CollectionMixin, FormView):
def get_form(self): def get_form(self):
f = super(WorkAddToProject, self).get_form() f = super(WorkAddToProject, self).get_form()
qs = f.fields['project'].queryset qs = f.fields['project'].queryset.select_related('ensemble')
# Limit to projects for ensembles where we are an admin and they haven't occured yet # Limit to projects for ensembles where we are an admin and they haven't occured yet
qs = qs.for_user(self.request.user).current() qs = qs.for_user(self.request.user).current()
@ -262,7 +262,7 @@ class WorkAddToProject(CollectionMixin, FormView):
work = self.get_object() work = self.get_object()
qs = qs.exclude(pk__in=work.projects.all()) qs = qs.exclude(pk__in=work.projects.all())
f.fields['project'].queryset = qs f.fields['project'].queryset = qs.order_by('ensemble__name', 'name')
return f return f
def form_valid(self, form): def form_valid(self, form):