def create_project(self): data = self.data user = data['user'] project = FoiProject( title=data['subject'], description=data['body'], status=FoiProject.STATUS_PENDING, public=data['public'], user=user, site=Site.objects.get_current(), reference=data.get('reference', ''), request_count=len(self.data['publicbodies']) ) save_obj_with_slug(project) project.publicbodies.add(*data['publicbodies']) if 'tags' in data and data['tags']: project.tags.add(*data['tags']) FoiProject.project_created.send(sender=project) publicbody_ids = [pb.pk for pb in data['publicbodies']] extra = { 'full_text': data.get('full_text', False) } create_project_requests.delay( project.id, publicbody_ids, **extra ) return project
def save(self, **kwargs): kwargs['commit'] = False crowdfunding = super(CrowdfundingRequestStartForm, self).save(**kwargs) crowdfunding.user = self.user crowdfunding.request = self.foirequest # Calculate amount needed crowdfunding.amount_needed = calculate_amount_needed( crowdfunding.amount_requested) save_obj_with_slug(crowdfunding) return crowdfunding
def create_project(self): data = self.data user = data['user'] project = FoiProject(title=data['subject'], description=data['body'], status=FoiProject.STATUS_PENDING, public=data['public'], user=user, site=Site.objects.get_current(), reference=data.get('reference', ''), request_count=len(self.data['publicbodies'])) save_obj_with_slug(project) project.publicbodies.add(*data['publicbodies']) if 'tags' in data and data['tags']: project.tags.add(*data['tags']) FoiProject.project_created.send(sender=project) publicbody_ids = [pb.pk for pb in data['publicbodies']] extra = {'full_text': data.get('full_text', False)} create_project_requests.delay(project.id, publicbody_ids, **extra) return project
def create_request(self, publicbody, sequence=0): data = self.data user = data['user'] now = timezone.now() request = FoiRequest( title=data['subject'], public_body=publicbody, user=data['user'], description=data['body'], public=data['public'], site=Site.objects.get_current(), reference=data.get('reference', ''), first_message=now, last_message=now, project=data.get('project'), project_order=data.get('project_order'), ) send_now = False if not user.is_active: request.status = 'awaiting_user_confirmation' request.visibility = FoiRequest.INVISIBLE else: # TODO add draft request.status = 'awaiting_response' request.determine_visibility() send_now = True request.secret_address = generate_unique_secret_address(user) foilaw = None if data.get('law_type'): law_type = data['law_type'] foilaw = publicbody.get_applicable_law(law_type=law_type) if foilaw is None: foilaw = publicbody.default_law request.law = foilaw request.jurisdiction = foilaw.jurisdiction if send_now: request.due_date = request.law.calculate_due_date() if data.get('blocked'): send_now = False request.is_blocked = True self.pre_save_request(request) save_obj_with_slug(request, count=sequence) if 'tags' in data and data['tags']: request.tags.add(*data['tags']) subject = '%s [#%s]' % (request.title, request.pk) message = FoiMessage( request=request, sent=False, is_response=False, sender_user=user, sender_email=request.secret_address, sender_name=user.display_name(), timestamp=now, status='awaiting_response', subject=subject, subject_redacted=redact_subject(subject, user=user) ) send_address = True if request.law: send_address = not request.law.email_only message.plaintext = construct_initial_message_body( request, text=data['body'], foilaw=foilaw, full_text=data.get('full_text', False), send_address=send_address) message.plaintext_redacted = redact_plaintext( message.plaintext, is_response=False, user=user ) message.recipient_public_body = publicbody message.recipient = publicbody.name message.recipient_email = publicbody.email FoiRequest.request_to_public_body.send(sender=request) message.save() FoiRequest.request_created.send( sender=request, reference=data.get('reference', '') ) if send_now: message.send() message.save() return request
def create_request(self, publicbody, sequence=0): data = self.data user = data['user'] now = timezone.now() request = FoiRequest( title=data['subject'], public_body=publicbody, user=data['user'], description=data['body'], public=data['public'], site=Site.objects.get_current(), reference=data.get('reference', ''), first_message=now, last_message=now, project=data.get('project'), project_order=data.get('project_order'), ) send_now = False if not user.is_active: request.status = 'awaiting_user_confirmation' request.visibility = FoiRequest.INVISIBLE else: # TODO add draft request.status = 'awaiting_response' request.determine_visibility() send_now = True request.secret_address = generate_unique_secret_address(user) foilaw = None if data.get('law_type'): law_type = data['law_type'] foilaw = publicbody.get_applicable_law(law_type=law_type) if foilaw is None: foilaw = publicbody.default_law request.law = foilaw request.jurisdiction = foilaw.jurisdiction if send_now: request.due_date = request.law.calculate_due_date() if data.get('blocked'): send_now = False request.is_blocked = True self.pre_save_request(request) save_obj_with_slug(request, count=sequence) if 'tags' in data and data['tags']: request.tags.add(*data['tags']) subject = '%s [#%s]' % (request.title, request.pk) message = FoiMessage(request=request, sent=False, is_response=False, sender_user=user, sender_email=request.secret_address, sender_name=user.display_name(), timestamp=now, status='awaiting_response', subject=subject, subject_redacted=redact_subject(subject, user=user)) send_address = bool(self.data.get('address')) message.plaintext = construct_initial_message_body( request, text=data['body'], foilaw=foilaw, full_text=data.get('full_text', False), send_address=send_address) message.plaintext_redacted = redact_plaintext_with_request( message.plaintext, request) message.recipient_public_body = publicbody message.recipient = publicbody.name message.recipient_email = publicbody.email FoiRequest.request_to_public_body.send(sender=request) message.save() FoiRequest.request_created.send(sender=request, reference=data.get('reference', '')) if send_now: message.send() message.save() return request