Skip to content

Commit

Permalink
Merge 46e0116 into b009bab
Browse files Browse the repository at this point in the history
  • Loading branch information
gannetson committed Dec 1, 2021
2 parents b009bab + 46e0116 commit de4d156
Show file tree
Hide file tree
Showing 461 changed files with 28,652 additions and 2,856 deletions.
18 changes: 14 additions & 4 deletions bluebottle/activities/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
from bluebottle.activities.messages import ImpactReminderMessage
from bluebottle.activities.models import Activity, Contributor, Organizer, Contribution, EffortContribution
from bluebottle.bluebottle_dashboard.decorators import confirmation_form
from bluebottle.deeds.models import Deed
from bluebottle.collect.models import CollectContributor, CollectActivity
from bluebottle.deeds.models import Deed, DeedParticipant
from bluebottle.follow.admin import FollowAdminInline
from bluebottle.fsm.admin import StateMachineAdmin, StateMachineFilter
from bluebottle.funding.models import Funding, Donor, MoneyContribution
Expand All @@ -34,7 +35,9 @@ class ContributorAdmin(PolymorphicParentModelAdmin, StateMachineAdmin):
Donor,
Organizer,
DateParticipant,
PeriodParticipant
PeriodParticipant,
DeedParticipant,
CollectContributor
)
list_display = ['created', 'owner', 'type', 'activity', 'state_name']
list_filter = (PolymorphicChildModelFilter, StateMachineFilter,)
Expand Down Expand Up @@ -499,7 +502,8 @@ class ActivityAdmin(PolymorphicParentModelAdmin, StateMachineAdmin):
Funding,
PeriodActivity,
DateActivity,
Deed
Deed,
CollectActivity
)
date_hierarchy = 'transition_date'
readonly_fields = ['link', 'review_status', 'location_link']
Expand Down Expand Up @@ -583,6 +587,11 @@ class ActivityAdminInline(StackedPolymorphicInline):
extra = 0
can_delete = False

class CollectActivityInline(ActivityInlineChild):
readonly_fields = ['activity_link', 'start', 'end', 'state_name']
fields = readonly_fields
model = CollectActivity

class DeedInline(ActivityInlineChild):
readonly_fields = ['activity_link', 'start', 'end', 'state_name']
fields = readonly_fields
Expand All @@ -608,7 +617,8 @@ class PeriodInline(ActivityInlineChild):
FundingInline,
PeriodInline,
DateInline,
DeedInline
DeedInline,
CollectActivityInline
)

pagination_key = 'page'
Expand Down
24 changes: 24 additions & 0 deletions bluebottle/activities/migrations/0045_auto_20211102_1258.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Generated by Django 2.2.24 on 2021-11-02 11:58

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('activities', '0044_activity_office_location'),
]

operations = [
migrations.AlterField(
model_name='activity',
name='office_location',
field=models.ForeignKey(blank=True, help_text="Office is set on activity level because the initiative is set to 'global' or no initiative has been specified.", null=True, on_delete=django.db.models.deletion.SET_NULL, to='geo.Location', verbose_name='office'),
),
migrations.AlterField(
model_name='effortcontribution',
name='contribution_type',
field=models.CharField(choices=[('organizer', 'Activity Organizer'), ('deed', 'Deed particpant'), ('collect', 'Collect contributor')], max_length=20, verbose_name='Contribution type'),
),
]
5 changes: 4 additions & 1 deletion bluebottle/activities/permissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,10 @@ def has_permission(self, request, view):
(settings, _) = InitiativePlatformSettings.objects.get_or_create()

if request.method == 'POST':
return view.model.__name__.lower() in settings.activity_types
activity_type = view.model.__name__.lower()
if activity_type == 'collectactivity':
activity_type = 'collect'
return activity_type in settings.activity_types

return True

Expand Down
8 changes: 7 additions & 1 deletion bluebottle/activities/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
from rest_framework_json_api.serializers import PolymorphicModelSerializer, ModelSerializer

from bluebottle.activities.models import Contributor, Activity
from bluebottle.collect.serializers import CollectActivityListSerializer, CollectActivitySerializer, \
CollectContributorListSerializer
from bluebottle.deeds.serializers import (
DeedListSerializer, DeedSerializer, DeedParticipantListSerializer
)
Expand Down Expand Up @@ -40,6 +42,7 @@ class ActivityListSerializer(PolymorphicModelSerializer):
polymorphic_serializers = [
FundingListSerializer,
DeedListSerializer,
CollectActivityListSerializer,
DateActivityListSerializer,
PeriodActivityListSerializer,
]
Expand All @@ -53,6 +56,7 @@ class ActivityListSerializer(PolymorphicModelSerializer):
'initiative.location': 'bluebottle.geo.serializers.LocationSerializer',
'initiative.place': 'bluebottle.geo.serializers.GeolocationSerializer',
'goals': 'bluebottle.impact.serializers.ImpactGoalSerializer',
'collect_type': 'bluebottle.collect.serializers.CollectTypeSerializer',
}

class Meta(object):
Expand Down Expand Up @@ -83,6 +87,7 @@ class ActivitySerializer(PolymorphicModelSerializer):
polymorphic_serializers = [
FundingSerializer,
DeedSerializer,
CollectActivitySerializer,
DateActivitySerializer,
PeriodActivitySerializer,
]
Expand Down Expand Up @@ -177,7 +182,8 @@ class ContributorListSerializer(PolymorphicModelSerializer):
DonorListSerializer,
DateParticipantListSerializer,
PeriodParticipantListSerializer,
DeedParticipantListSerializer
DeedParticipantListSerializer,
CollectContributorListSerializer
]

included_serializers = {
Expand Down
11 changes: 9 additions & 2 deletions bluebottle/activities/tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
from bluebottle.files.tests.factories import ImageFactory

from bluebottle.deeds.tests.factories import DeedFactory, DeedParticipantFactory
from bluebottle.collect.tests.factories import CollectContributorFactory

from bluebottle.funding.tests.factories import FundingFactory, DonorFactory
from bluebottle.time_based.tests.factories import (
DateActivityFactory, PeriodActivityFactory, DateParticipantFactory, PeriodParticipantFactory,
Expand Down Expand Up @@ -1275,11 +1277,13 @@ def setUp(self):
DonorFactory.create_batch(2, user=self.user, status='succeeded')
DonorFactory.create_batch(2, user=self.user, status='new')
DeedParticipantFactory.create_batch(2, user=self.user)
CollectContributorFactory.create_batch(2, user=self.user)

DateParticipantFactory.create()
PeriodParticipantFactory.create()
DonorFactory.create()
DeedParticipantFactory.create()
CollectContributorFactory.create()

self.url = reverse('contributor-list')

Expand All @@ -1292,23 +1296,26 @@ def test_get(self):
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.json()

self.assertEqual(len(data['data']), 8)
self.assertEqual(len(data['data']), 10)

for contributor in data['data']:
self.assertTrue(
contributor['type'] in (
'contributors/time-based/date-participants',
'contributors/time-based/period-participants',
'contributors/collect/contributors',
'contributors/deeds/participant',
'contributors/donations',
)
)
self.assertTrue(contributor['type'])
self.assertTrue(
contributor['relationships']['activity']['data']['type'] in (
'activities/fundings',
'activities/deeds',
'activities/time-based/dates',
'activities/time-based/periods'
'activities/time-based/periods',
'activities/collects'
)
)

Expand Down
9 changes: 8 additions & 1 deletion bluebottle/activities/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

from geopy.distance import distance, lonlat

from bluebottle.activities.models import Activity, Contributor, Contribution
from bluebottle.activities.models import Activity, Contributor, Contribution, Organizer
from bluebottle.impact.models import ImpactGoal
from bluebottle.members.models import Member
from bluebottle.fsm.serializers import AvailableTransitionsField
Expand Down Expand Up @@ -102,6 +102,7 @@ class BaseActivitySerializer(ModelSerializer):
owner = AnonymizedResourceRelatedField(read_only=True)
permissions = ResourcePermissionField('activity-detail', view_args=('pk',))
transitions = AvailableTransitionsField(source='states')
contributor_count = serializers.SerializerMethodField()
is_follower = serializers.SerializerMethodField()
type = serializers.CharField(read_only=True, source='JSONAPIMeta.resource_name')
stats = serializers.OrderedDict(read_only=True)
Expand Down Expand Up @@ -129,6 +130,11 @@ def get_is_follower(self, instance):
user = self.context['request'].user
return bool(user.is_authenticated) and instance.followers.filter(user=user).exists()

def get_contributor_count(self, instance):
return instance.contributors.not_instance_of(Organizer).filter(
status__in=['accepted', 'succeeded', 'activity_refunded']
).count()

class Meta(object):
model = Activity
fields = (
Expand Down Expand Up @@ -159,6 +165,7 @@ class Meta(object):
'errors',
'required',
'matching_properties',
'contributor_count'
)

class JSONAPIMeta(object):
Expand Down
5 changes: 4 additions & 1 deletion bluebottle/activities/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
)
from bluebottle.files.models import RelatedImage
from bluebottle.files.views import ImageContentView
from bluebottle.collect.models import CollectContributor
from bluebottle.funding.models import Donor
from bluebottle.deeds.models import DeedParticipant
from bluebottle.time_based.models import DateParticipant, PeriodParticipant
Expand Down Expand Up @@ -87,7 +88,8 @@ def get_queryset(self):
Donor,
DateParticipant,
PeriodParticipant,
DeedParticipant
DeedParticipant,
CollectContributor,
).filter(
user=self.request.user
).exclude(
Expand Down Expand Up @@ -139,6 +141,7 @@ def get_queryset(self):
ContentType.objects.get_by_natural_key('assignments', 'assignment'),
ContentType.objects.get_by_natural_key('events', 'event'),
ContentType.objects.get_by_natural_key('deeds', 'deed'),
ContentType.objects.get_by_natural_key('collect', 'collectactivity'),
]
)

Expand Down
6 changes: 4 additions & 2 deletions bluebottle/analytics/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@ class PlatformTypes(DjangoChoices):
blank=True
)
engagement_target = models.PositiveIntegerField(
_("Engagement target"),
help_text=_('Target number of engaged users per year.'),
_("Engagement"),
help_text=_(
'Target for the number of people contributing to an activity or starting an activity per year.'
),
null=True,
blank=True
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ function replaceInlineActivityAddButton() {
}

window.onload = function() {
django.jQuery = jQuery;
replaceInlineActivityAddButton();
removeRedundantTabs();
addHashToInlinePaginator();
Expand Down
1 change: 1 addition & 0 deletions bluebottle/bluebottle_dashboard/static/jet/.node-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8.17.0
Loading

0 comments on commit de4d156

Please sign in to comment.