def form_valid(self, form): context = self.get_context_data() contract = context['contract'] appointment = form.save() appointment.contract = contract appointment.created_by = self.request.user appointment.save() #Update states projects = contract.project_set.all() for project in projects: state = ProjectState( project=project, state="photographer", user=self.request.user, ) state.save() projects.update(current_state="photographer") #Notifications users = [] for user in TrackUser.objects.filter(groups__name__in=("management",)): users.append(user) #Photographer users.append(appointment.photographer) self.send_notification( message="%(user)s created a new appointment" % {'user': self.request.user.get_full_name()}, users=users, ) return super(PhotoshootContractMixin, self).form_valid(form)
def form_valid(self, form): context = self.get_context_data() contract = context['contract'] #Shoot is over --> set to inactive self.object = form.save() self.object.active = False self.object.save() #Update states projects = contract.project_set.all() for project in projects: state = ProjectState( project=project, state="production", user=self.request.user, ) state.save() projects.update(current_state="production", notes=self.request.POST['description']) #Notifications users = [] for user in TrackUser.objects.filter(groups__name__in=("management", "production")): users.append(user) self.send_notification( message="%(user)s uploaded pictures for contract %(contract)d" % { 'user': self.object.photographer, 'contract': self.object.contract.contract_number, }, users=users, ) return super(PhotoshootDoneView, self).form_valid(form)
def form_valid(self, form): self.object = form.save() # Update amount paid self.object.contract.amount_paid += self.object.amount #Check if total amount due is fulfilled if self.object.contract.amount_paid >= self.object.contract.total_cost: self.object.contract.is_paid = True self.object.contract.date_is_paid = datetime.now users = [] for user in TrackUser.objects.filter(groups__name__in=("management",)): users.append(user) self.send_notification( users=users, message="A Contract has been fully paid.", ) self.object.contract.project_set.all().update(current_state="finished") for project in self.object.contract.project_set.all(): state = ProjectState( project=project, state="production", user=self.request.user, ) state.save() self.object.contract.save() return super(InsertPayment, self).form_valid(form)
def form_valid(self, form): context = self.get_context_data() contractproject_form = context['contractproject_form'] existing_client = self.request.POST.get('existing_client') if existing_client != "on": client_contact_form = context['client_contact_form'] new_client_form = context['new_client_form'] if new_client_form.is_valid() and client_contact_form.is_valid() and contractproject_form.is_valid(): new_client_form.instance.account_manager = self.request.user client = new_client_form.save() role = self.request.POST["role"] notes = self.request.POST["notes"] client_contact = client_contact_form.save() # Create a new contact contact_person = ContactPerson( client=client, user=client_contact, role=role, notes=notes ) contact_person.save() self.object = form.save(commit=False) self.object.client = client self.object.save() else: return self.render_to_response(self.get_context_data(form=form)) if contractproject_form.is_valid(): if existing_client: self.object = form.save() contractproject_form.instance = self.object contractproject_form.save() # add options projects = self.object.project_set.all() for project in projects: product = project.product options = self.request.POST.getlist(product.slug + "_option") flow = product.flow.splitlines() try: position = flow.index(settings.FLOW_OPTIONS_PLACEHOLDER) for option in options: #insert options after the placeholder flow.insert(position + 1, option) #Remove placeholder flow.pop(position) except ValueError: pass #Convert back to TextField workflow = "" for todo in flow: workflow += todo + "\n" project.flow = workflow project.save() #Create states state = ProjectState( project=project, user=self.request.user, notes="Sales created contract", ) state.save() else: return self.render_to_response(self.get_context_data(form=form)) users = [] for user in TrackUser.objects.filter(groups__name__in=("management",)): users.append(user) self.send_notification( message="%(user)s created a contract" % {'user': self.request.user.get_full_name()}, users=users, ) """ Create folders on Google drive """ file_user = TrackUser.objects.get(pk=settings.USER_ID_GOOGLE_OAUTH) drive_service = build('drive', 'v2', http=file_user.credentials.authorize(httplib2.Http())) folder_body = { "title": "%(contract)d-%(client)s-%(city)s" % { "contract": self.object.contract_number, "client": self.object.client, "city": self.object.shoot_city }, "parents": [{"id": self.object.client.country.drive_folder_id}], "mimeType": "application/vnd.google-apps.folder" } folder = drive_service.files().insert(body=folder_body).execute() #Save folder in Contract self.object.drive_folder_id = folder['id'] self.object.save() sub_folders = ['Combi', 'Compressed', 'Other', 'Panos', 'Poi'] for sub_folder in sub_folders: sub_folder_body = { "title": sub_folder, "parents": [{"id": folder['id']}], "mimeType": "application/vnd.google-apps.folder" } drive_service.files().insert(body=sub_folder_body).execute() return super(CreateContract, self).form_valid(form)