Couple of interface tweeks
This commit is contained in:
parent
7d4f959146
commit
f840ee3d8b
@ -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"
|
||||||
|
|||||||
@ -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>
|
||||||
|
|
||||||
|
|||||||
@ -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' %}
|
||||||
|
|
||||||
|
|||||||
@ -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 %}
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -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 %}
|
||||||
|
|||||||
@ -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())
|
||||||
@ -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):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user