mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-04-20 17:01:46 +00:00
Compare commits
10 Commits
53b09e47b8
...
f35ce88acc
| Author | SHA1 | Date | |
|---|---|---|---|
|
f35ce88acc
|
|||
|
ee5468fdd7
|
|||
|
1ce6ec3284
|
|||
|
677f352524
|
|||
|
8b3102b136
|
|||
|
e2b1dc1d05
|
|||
|
c9ba228bd2
|
|||
|
9f4cd41d23
|
|||
|
2049d0f76d
|
|||
|
29db3b5a0c
|
@@ -134,6 +134,9 @@ class SecureAPIRequest(generic.View):
|
|||||||
results = []
|
results = []
|
||||||
query = reduce(operator.and_, queries)
|
query = reduce(operator.and_, queries)
|
||||||
objects = self.models[model].objects.filter(query)
|
objects = self.models[model].objects.filter(query)
|
||||||
|
# Returning unactivated or unapproved users when they are elsewhere filtered out of the default queryset leads to some *very* unexpected results
|
||||||
|
if model == "profile":
|
||||||
|
objects = objects.filter(is_active=True, is_approved=True)
|
||||||
for o in objects:
|
for o in objects:
|
||||||
name = o.display_name if hasattr(o, 'display_name') else o.name
|
name = o.display_name if hasattr(o, 'display_name') else o.name
|
||||||
data = {
|
data = {
|
||||||
|
|||||||
@@ -154,8 +154,9 @@ class AssociateAdmin(VersionAdmin):
|
|||||||
|
|
||||||
@admin.register(models.Profile)
|
@admin.register(models.Profile)
|
||||||
class ProfileAdmin(UserAdmin, AssociateAdmin):
|
class ProfileAdmin(UserAdmin, AssociateAdmin):
|
||||||
list_display = ('username', 'name', 'is_approved', 'is_staff', 'is_superuser', 'is_supervisor', 'number_of_events')
|
list_display = ('username', 'name', 'is_approved', 'is_superuser', 'is_supervisor', 'number_of_events', 'last_login')
|
||||||
list_display_links = ['username']
|
list_display_links = ['username']
|
||||||
|
list_filter = UserAdmin.list_filter + ('is_approved',)
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
(None, {'fields': ('username', 'password')}),
|
(None, {'fields': ('username', 'password')}),
|
||||||
(_('Personal info'), {
|
(_('Personal info'), {
|
||||||
|
|||||||
@@ -76,7 +76,8 @@ class Profile(AbstractUser):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def users_awaiting_approval_count(cls):
|
def users_awaiting_approval_count(cls):
|
||||||
return Profile.objects.filter(models.Q(is_approved=False)).count()
|
# last_login = None ensures we only pick up genuinely new users, not those that have been deactivated for inactivity
|
||||||
|
return Profile.objects.filter(is_approved=False, last_login=None).count()
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|||||||
@@ -165,11 +165,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 text-right">
|
<div class="col-12 text-right">
|
||||||
{% button 'edit' url='ec_edit' pk=object.pk %}
|
{% button 'edit' url='pt_edit' pk=object.pk %}
|
||||||
{% button 'view' url='event_detail' pk=object.pk text="Event" %}
|
{% button 'view' url='event_detail' pk=object.pk text="Event" %}
|
||||||
{% include 'partials/review_status.html' with perm=perms.RIGS.review_eventchecklist review='ec_review' %}
|
{% include 'partials/review_status.html' with perm=perms.RIGS.review_power review='pt_review' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 text-right">
|
<div class="col-12 text-right">
|
||||||
{% include 'partials/last_edited.html' with target="eventchecklist_history" %}
|
{% include 'partials/last_edited.html' with target="powertestrecord_history" %}
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -148,9 +148,9 @@ class ModelComparison:
|
|||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def item_changes(self):
|
def item_changes(self):
|
||||||
from RIGS.models import EventAuthorisation
|
|
||||||
from training.models import TrainingLevelQualification, TrainingItemQualification
|
|
||||||
if self.follow and self.version.object is not None:
|
if self.follow and self.version.object is not None:
|
||||||
|
from RIGS.models import EventAuthorisation
|
||||||
|
from training.models import TrainingLevelQualification, TrainingItemQualification
|
||||||
item_type = ContentType.objects.get_for_model(self.version.object)
|
item_type = ContentType.objects.get_for_model(self.version.object)
|
||||||
old_item_versions = self.version.parent.revision.version_set.exclude(content_type=item_type).exclude(content_type=ContentType.objects.get_for_model(TrainingItemQualification)) \
|
old_item_versions = self.version.parent.revision.version_set.exclude(content_type=item_type).exclude(content_type=ContentType.objects.get_for_model(TrainingItemQualification)) \
|
||||||
.exclude(content_type=ContentType.objects.get_for_model(TrainingLevelQualification))
|
.exclude(content_type=ContentType.objects.get_for_model(TrainingLevelQualification))
|
||||||
@@ -161,12 +161,14 @@ class ModelComparison:
|
|||||||
# Build some dicts of what we have
|
# Build some dicts of what we have
|
||||||
item_dict = {} # build a list of items, key is the item_pk
|
item_dict = {} # build a list of items, key is the item_pk
|
||||||
for version in old_item_versions: # put all the old versions in a list
|
for version in old_item_versions: # put all the old versions in a list
|
||||||
if version is None or version._object_version is None:
|
if version._model is None:
|
||||||
logging.warning(f"Something was null when it really shouldn't be! {old_item_versions}")
|
continue
|
||||||
compare = ModelComparison(old=version._object_version.object, **comparisonParams)
|
compare = ModelComparison(old=version._object_version.object, **comparisonParams)
|
||||||
item_dict[version.object_id] = compare
|
item_dict[version.object_id] = compare
|
||||||
|
|
||||||
for version in new_item_versions: # go through the new versions
|
for version in new_item_versions: # go through the new versions
|
||||||
|
if version._model is None:
|
||||||
|
continue
|
||||||
try:
|
try:
|
||||||
compare = item_dict[version.object_id] # see if there's a matching old version
|
compare = item_dict[version.object_id] # see if there's a matching old version
|
||||||
compare.new = version._object_version.object # then add the new version to the dictionary
|
compare.new = version._object_version.object # then add the new version to the dictionary
|
||||||
|
|||||||
Reference in New Issue
Block a user