def create(self, validated_data): user = validated_data.pop('user') user_company = validated_data.pop('user_company') acct = Account.objects.create_user(**validated_data) acct.user_company = user_company acct.user_created_by = user acct.access_level = validated_data['access_level'] acct.position = validated_data['position'] acct.auth_amount = validated_data['auth_amount'] acct.save() log( user=user, company=user_company, not_action='user created', obj=acct, notification=True, extra={ 'account_id':acct.id, 'account_username':acct.username, 'account_first_name':acct.first_name, 'account_last_name':acct.last_name, } ) registration_email.delay(acct.email, '*****@*****.**') for uc in user_company.wease_company.all(): if uc.id != acct.id and uc.new_user_email: user_email.delay(uc, acct, subj='New WeASe member added', tmp='registration/user_added_email.html') for optiz in user_company.company_assigned_to.all(): if optiz.new_user_email: user_email.delay(optiz, acct, subj='New WeASe member added', tmp='registration/user_added_email.html') return acct
def update(self, instance, validated_data): user = validated_data.pop('user') req = self.context.get('request') instance.is_active = validated_data.get('is_active', instance.is_active) instance.username = validated_data.get('username', instance.username) instance.email = validated_data.get('email', instance.email) instance.first_name = validated_data.get('first_name', instance.first_name) instance.last_name = validated_data.get('last_name', instance.last_name) instance.tagline = validated_data.get('tagline', instance.tagline) instance.optiz = validated_data.get('optiz', instance.optiz) instance.lang = validated_data.get('lang', instance.lang) instance.position = validated_data.get('position', instance.position) instance.access_level = validated_data.get('access_level', instance.access_level) instance.auth_amount = validated_data.get('auth_amount', instance.auth_amount) instance.street_addr1 = validated_data.get('street_addr1', instance.street_addr1) instance.street_addr2 = validated_data.get('street_addr2', instance.street_addr2) instance.city = validated_data.get('city', instance.city) instance.post_code = validated_data.get('post_code', instance.post_code) instance.country = validated_data.get('country', instance.country) instance.phone_main = validated_data.get('phone_main', instance.phone_main) instance.phone_mobile = validated_data.get('phone_mobile', instance.phone_mobile) instance.user_pic = validated_data.get('user_pic', instance.user_pic) instance.request_email = validated_data.get('request_email', instance.request_email) instance.refused_email = validated_data.get('refused_email', instance.refused_email) instance.offer_email = validated_data.get('offer_email', instance.offer_email) instance.order_email = validated_data.get('order_email', instance.order_email) instance.approval_email = validated_data.get('approval_email', instance.approval_email) instance.validated_email = validated_data.get('validated_email', instance.validated_email) instance.canceled_email = validated_data.get('canceled_email', instance.canceled_email) instance.new_user_email = validated_data.get('new_user_email', instance.new_user_email) instance.info_change_email = validated_data.get('info_change_email', instance.info_change_email) instance.user_updated_by = user instance.save() password = validated_data.get('password', None) confirm_password = validated_data.get('confirm_password', None) if password and confirm_password and password == confirm_password: instance.set_password(password) instance.save() update_session_auth_hash(self.context.get('request'), instance) log( user=user, company=instance.user_company, not_action='user updated', obj=instance, notification=False, extra={ 'account_id':instance.id, 'account_first_name':instance.first_name, 'account_last_name':instance.last_name, } ) if instance.info_change_email: user_email.delay(instance, obj=None, subj='WeASe profile updated', tmp='registration/user_update.html') return instance