def create(self, validated_data): user = self.context.get('request').user employee = Employee.objects.create(user=user, **validated_data) logger.info(_('Create employee'), extra=get_extra( self.context.get('request'), object=employee) )
def create(self, validated_data): request = self.context.get('request') user = request.user feedback = Feedback.objects.create(user=user, **validated_data) logger.info(_('Make feedback'), extra=get_extra(request, object=feedback)) return feedback
def deposite(self, user, licenses, request): user_departments = Department.objects.filter(users=user) subscriptions = self.model.objects\ .filter(suspended=False)\ .filter(payment_date__gte=now())\ .filter(contract_expired_date__gte=now())\ .filter(Q(company=user.company) | Q(departments=user_departments))\ .order_by('-payment_date')\ .all() if not subscriptions: raise SubscriptionNotFound if sum(map(lambda s: s.assigned, subscriptions)) < licenses: raise SubscriptionNotFound for subscribe in subscriptions: if licenses == 0: break if subscribe.assigned >= licenses: subscribe.assigned -= licenses subscribe.save() logger.info(_('Deposit %d licenses' % licenses), extra=get_extra(request, object=subscribe)) break else: licenses -= subscribe.assigned logger.info(_('Deposit %d licenses' % subscribe.assigned), extra=get_extra(request, object=subscribe)) subscribe.assigned = 0 subscribe.save()
def update(self, instance, validated_data): password = validated_data.pop('password', None) for attr, value in validated_data.iteritems(): setattr(instance, attr, value) logger.info(_('Update user profile'), extra=get_extra(self.context.get('request'), object=instance)) if password: instance.set_password(password) logger.info(_('Update user password'), extra=get_extra(self.context.get('request'), object=instance)) update_session_auth_hash(self.context.get('request'), instance) instance.save() return instance
def update(self, instance, validated_data): employee = validated_data.pop('employee') # We dont give permission to modify email here if employee.get('is_reusable') == True: employee.pop('email') for attr, value in employee.iteritems(): setattr(instance.employee, attr, value) instance.employee.save() for attr, value in validated_data.iteritems(): setattr(instance, attr, value) instance.save() logger.info(_('Update employee relocation request'), extra=get_extra(self.context.get('request'), object=instance)) return instance
def create(self, validated_data): user = self.context.get('request').user employee_data = validated_data.pop('employee') if employee_data.get('is_reusable') == True: email = employee_data.pop('email') employee, created = Employee.objects.get_or_create(user=user, email=email, is_reusable=True, defaults=employee_data) if not created: for attr, value in employee_data.iteritems(): setattr(employee, attr, value) employee.save() logger.info(_('Update reusable employee'), extra=get_extra(self.context.get('request'), object=employee)) else: logger.info(_('Create reusable employee'), extra=get_extra(self.context.get('request'), object=employee)) else: employee = Employee.objects.create(user=user, **employee_data) logger.info(_('Create not reusable employee'), extra=get_extra(self.context.get('request'), object=employee)) relocation = EmployeeRelocation.objects.create(user=user, employee=employee, **validated_data) logger.info(_('Create employee relocation request'), extra=get_extra(self.context.get('request'), object=relocation)) return relocation
def create(self, validated_data): request = self.context.get('request') user = request.user relocations = EmployeeRelocation.objects.filter(user=user, status=EmployeeRelocation.STATUS_CHOICE.INITIAL) if not relocations: raise NotFound # raise PaymentRequired if user didn't have linceses Subscription.objects.withdrawal(user, len(relocations), request) self.send_email(relocations, user) for relocation in relocations: logger.info(_('Send relocation request'), extra=get_extra(request, object=relocation)) relocations.update(status=EmployeeRelocation.STATUS_CHOICE.RECEIVED) return relocations
def withdrawal(self, user, licenses, request): user_departments = Department.objects.filter(users=user) subscriptions = self.model.objects\ .filter(suspended=False)\ .filter(payment_date__gte=now())\ .filter(contract_expired_date__gte=now())\ .filter(Q(company=user.company) | Q(departments=user_departments))\ .order_by('payment_date')\ .all() exclude = [] subscription_have_company = False total_available_licenses = 0 for subscription in subscriptions: departments = filter(lambda d: d in user_departments, subscription.departments.all()) if subscription.company: subscription_have_company = True for department in departments: available_licenses = self.get_available_licenses(subscription, department) if subscription.assigned > available_licenses: exclude.append(subscription.pk) else: total_available_licenses += (available_licenses - subscription.assigned) subscriptions = subscriptions.exclude(pk__in=exclude) if not subscriptions: raise PaymentRequired if total_available_licenses < licenses and not subscription_have_company: raise PaymentRequired if sum(map(lambda s: s.licenses-s.assigned, subscriptions)) < licenses: raise PaymentRequired for subscribe in subscriptions: if licenses == 0: break available_licenses = self.get_available_licenses(subscribe)-subscribe.assigned if available_licenses >= licenses: subscribe.assigned += licenses subscribe.save() logger.info(_('Wwithdrawal %d licenses' % licenses), extra=get_extra(request, object=subscribe)) break else: subscribe.assigned += available_licenses subscribe.save() licenses -= available_licenses logger.info(_('Wwithdrawal %d licenses' % available_licenses), extra=get_extra(request, object=subscribe))
def save(self): super(PasswordResetConfirmSerializer, self).save() user = authenticate(username=self.user.email, password=self.set_password_form.cleaned_data['new_password1']) login(self.context.get('request'), user) logger.info(_('Password reset confirm'), extra=get_extra(self.context.get('request')))