def successful_contribution(self, tx_id): """Create a contribution object.""" from marketing.mails import successful_contribution self.last_contribution_date = timezone.now() self.next_contribution_date = timezone.now() + timedelta( 0, int(self.real_period_seconds)) self.num_tx_processed += 1 contribution_kwargs = {'tx_id': tx_id, 'subscription': self} contribution = Contribution.objects.create(**contribution_kwargs) grant = self.grant value_usdt = self.get_converted_amount() if value_usdt: self.amount_per_period_usdt = value_usdt grant.amount_received += Decimal(value_usdt) if self.num_tx_processed == self.num_tx_approved and value_usdt: grant.monthly_amount_subscribed -= self.get_converted_monthly_amount( ) self.active = False self.save() grant.updateActiveSubscriptions() grant.save() successful_contribution(self.grant, self, contribution) return contribution
def successful_contribution(self, tx_id): """Create a contribution object.""" from marketing.mails import successful_contribution self.last_contribution_date = timezone.now() self.next_contribution_date = timezone.now() + timedelta( 0, round(self.real_period_seconds)) self.save() contribution_kwargs = {'tx_id': tx_id, 'subscription': self} contribution = Contribution.objects.create(**contribution_kwargs) grant = self.grant value_usdt = self.value_usdt if value_usdt: grant.amount_received += value_usdt grant.save() successful_contribution(self.grant, self, contribution) return contribution
def record_contribution_activity(contribution): from dashboard.models import Activity from marketing.mails import new_supporter, thank_you_for_supporting, successful_contribution from grants.tasks import update_grant_metadata try: event_name = 'new_grant_contribution' subscription = contribution.subscription grant = subscription.grant metadata = { 'id': subscription.id, 'value_in_token': str(subscription.amount_per_period), 'value_in_usdt_now': str(round(subscription.amount_per_period_usdt, 2)), 'token_name': subscription.token_symbol, 'title': subscription.grant.title, 'grant_url': subscription.grant.url, 'num_tx_approved': round(subscription.num_tx_approved), 'category': 'grant', } kwargs = { 'activity_type': event_name, 'grant': grant, 'subscription': subscription, 'profile': subscription.contributor_profile, 'metadata': metadata } activity = Activity.objects.create(**kwargs) if subscription.comments and activity: Comment.objects.create(profile=subscription.contributor_profile, activity=activity, comment=subscription.comments) successful_contribution(grant, subscription, contribution) new_supporter(grant, subscription) thank_you_for_supporting(grant, subscription) update_grant_metadata.delay(grant.pk) except Exception as e: logger.error( f"error in record_contribution_activity: {e} - {contribution}")
def successful_contribution(self, kwargs): """Create a contribution object.""" from marketing.mails import successful_contribution self.last_contribution_date = timezone.now() self.next_contribution_date = timezone.now() + timezone.timedelta(seconds=self.real_period_seconds) self.save() contribution_kwargs = { 'tx_id': kwargs.tx_id, 'gas_price': kwargs.gas_price, 'nonce': kwargs.nonce, 'subscription': self } contribution = Contribution.objects.create(**contribution_kwargs) grant = self.grant grant.amount_received = (grant.amount_received + convert_amount(self.amount_per_period, self.token_symbol, "USDT", timezone.now())) grant.save() successful_contribution(self.grant, self) return contribution
def create_contribution(self, tx_id, is_successful_contribution=True): from marketing.mails import successful_contribution from grants.tasks import update_grant_metadata now = timezone.now() self.last_contribution_date = now self.next_contribution_date = now self.num_tx_processed += 1 contribution = Contribution() contribution.success = False contribution.tx_cleared = False contribution.subscription = self contribution.split_tx_id = self.split_tx_id contribution.split_tx_confirmed = self.split_tx_confirmed if tx_id: contribution.tx_id = tx_id contribution.save() grant = self.grant value_usdt = self.get_converted_amount(False) if value_usdt: self.amount_per_period_usdt = value_usdt grant.amount_received += Decimal(value_usdt) if self.num_tx_processed == self.num_tx_approved and value_usdt: grant.monthly_amount_subscribed -= self.get_converted_monthly_amount( ) self.active = False self.save() grant.updateActiveSubscriptions() grant.save() if is_successful_contribution: successful_contribution(self.grant, self, contribution) update_grant_metadata.delay(self.pk) return contribution