def save(self, *args, **kwargs): if not self.instance.id: if not self.request_user.is_anonymous(): self.instance.creator = self.request_user self.instance.creator_username = self.request_user.username self.instance.status = True self.instance.status_detail = 'active' if not self.request_user.is_anonymous(): self.instance.owner = self.request_user self.instance.owner_username = self.request_user.username for field_key in self.fields.keys(): if self.fields[field_key].widget.needs_multipart_form: value = self.cleaned_data[field_key] if value and hasattr(value, 'name'): value = default_storage.save(join("corporate_memberships", str(uuid4()), value.name), value) setattr(self.instance, field_key, value) super(CorpProfileForm, self).save(*args, **kwargs) # update authorized domain if needed if self.corpmembership_app.authentication_method == 'email': update_authorized_domains(self.instance, self.cleaned_data['authorized_domain']) return self.instance
def save(self, *args, **kwargs): if not self.instance.id: if not self.request_user.is_anonymous(): self.instance.creator = self.request_user self.instance.creator_username = self.request_user.username self.instance.status = True self.instance.status_detail = 'active' if not self.request_user.is_anonymous(): self.instance.owner = self.request_user self.instance.owner_username = self.request_user.username super(CorpProfileForm, self).save(*args, **kwargs) # update authorized domain if needed if self.corpmembership_app.authentication_method == 'email': update_authorized_domains(self.instance, self.cleaned_data['authorized_domain']) return self.instance
def process_corp_membership(self, cmemb_data, **kwargs): """ Check if it's insert or update. If dry_run is False, do the import to the corpmembership. :param cmemb_data: a dictionary that includes the info of a corp_membership """ self.cmemb_data = cmemb_data self.cmemb_data['name'] = self.cmemb_data['company_name'] del self.cmemb_data['company_name'] self.field_names = cmemb_data.keys() # csv field names corp_memb_display = {} corp_memb_display['error'] = '' corp_memb_display['user'] = None status_detail = self.cmemb_data.get('status_detail', 'active') if status_detail == 'archived': status_detail = 'archive' if not status_detail in CorpMembership.VALID_STATUS_DETAIL: status_detail = 'active' self.cmemb_data['status_detail'] = status_detail expiration_dt = self.cmemb_data.get('expiration_dt', None) if expiration_dt: expiration_dt = dparser.parse(expiration_dt) error_msg = self.validate_fields(self.cmemb_data, self.key) # don't process if we have missing value of required fields if error_msg: corp_memb_display['error'] = error_msg corp_memb_display['action'] = 'skip' if not self.dry_run: self.summary_d['invalid'] += 1 else: #if self.key == 'name': [corp_profile] = CorpProfile.objects.filter( name=self.cmemb_data['name'])[:1] or [None] if corp_profile: corp_membs = CorpMembership.objects.filter( corp_profile=corp_profile, status_detail=status_detail) # there might be multiple archives, pick the one that # matches with the expiration_dt if status_detail == 'archive' and expiration_dt: corp_membs = corp_membs.filter( expiration_dt__year=expiration_dt.year, expiration_dt__month=expiration_dt.month, expiration_dt__day=expiration_dt.day ) [corp_memb] = corp_membs.order_by('-id')[:1] or [None] else: corp_memb = None if corp_profile: if corp_memb: corp_memb_display['action'] = 'update' corp_memb_display['corp_profile_action'] = 'update' corp_memb_display['corp_memb_action'] = 'update' else: corp_memb_display['action'] = 'mixed' corp_memb_display['corp_profile_action'] = 'update' corp_memb_display['corp_memb_action'] = 'insert' else: corp_memb_display['action'] = 'insert' corp_memb_display['corp_profile_action'] = 'insert' corp_memb_display['corp_memb_action'] = 'insert' if not self.dry_run: if corp_memb_display['action'] == 'insert': self.summary_d['insert'] += 1 elif corp_memb_display['action'] == 'update': self.summary_d['update'] += 1 else: self.summary_d['update_insert'] += 1 # now do the update or insert self.do_import_corp_membership(corp_profile, corp_memb, corp_memb_display) # handle authorized_domain if 'authorized_domains' in self.field_names: update_authorized_domains(corp_profile, self.cmemb_data['authorized_domains']) # handle dues_rep if 'dues_rep' in self.field_names: self.update_dues_reps(corp_profile, self.cmemb_data['dues_rep']) return corp_memb_display.update({ 'company_name': self.cmemb_data.get('name', ''), 'email': self.cmemb_data.get('email', ''), 'address': self.cmemb_data.get('address', ''), 'address2': self.cmemb_data.get('address2', ''), 'city': self.cmemb_data.get('city', ''), 'state': self.cmemb_data.get('state', ''), 'zip': self.cmemb_data.get('zip', ''), 'status_detail': self.cmemb_data.get('status_detail', ''), }) return corp_memb_display
def process_corp_membership(self, cmemb_data, **kwargs): """ Check if it's insert or update. If dry_run is False, do the import to the corpmembership. :param cmemb_data: a dictionary that includes the info of a corp_membership """ self.cmemb_data = cmemb_data self.cmemb_data['name'] = self.cmemb_data['company_name'] del self.cmemb_data['company_name'] self.field_names = cmemb_data.keys() # csv field names corp_memb_display = {} corp_memb_display['error'] = '' corp_memb_display['user'] = None error_msg = self.validate_fields(self.cmemb_data, self.key) # don't process if we have missing value of required fields if error_msg: corp_memb_display['error'] = error_msg corp_memb_display['action'] = 'skip' if not self.dry_run: self.summary_d['invalid'] += 1 else: #if self.key == 'name': [corp_profile] = CorpProfile.objects.filter( name=self.cmemb_data['name'])[:1] or [None] if corp_profile: [corp_memb] = CorpMembership.objects.filter( corp_profile=corp_profile).exclude( status_detail='archive').order_by('-id')[:1] or [None] else: corp_memb = None if corp_profile: if corp_memb: corp_memb_display['action'] = 'update' corp_memb_display['corp_profile_action'] = 'update' corp_memb_display['corp_memb_action'] = 'update' else: corp_memb_display['action'] = 'mixed' corp_memb_display['corp_profile_action'] = 'update' corp_memb_display['corp_memb_action'] = 'insert' else: corp_memb_display['action'] = 'insert' corp_memb_display['corp_profile_action'] = 'insert' corp_memb_display['corp_memb_action'] = 'insert' if not self.dry_run: if corp_memb_display['action'] == 'insert': self.summary_d['insert'] += 1 elif corp_memb_display['action'] == 'update': self.summary_d['update'] += 1 else: self.summary_d['update_insert'] += 1 # now do the update or insert self.do_import_corp_membership(corp_profile, corp_memb, corp_memb_display) # handle authorized_domain if 'authorized_domains' in self.field_names: update_authorized_domains( corp_profile, self.cmemb_data['authorized_domains']) # handle dues_rep if 'dues_rep' in self.field_names: self.update_dues_reps(corp_profile, self.cmemb_data['dues_rep']) return corp_memb_display.update({ 'company_name': self.cmemb_data.get('name', ''), 'email': self.cmemb_data.get('email', ''), 'address': self.cmemb_data.get('address', ''), 'address2': self.cmemb_data.get('address2', ''), 'city': self.cmemb_data.get('city', ''), 'state': self.cmemb_data.get('state', ''), 'zip': self.cmemb_data.get('zip', ''), }) return corp_memb_display
def process_corp_membership(self, cmemb_data, **kwargs): """ Check if it's insert or update. If dry_run is False, do the import to the corpmembership. :param cmemb_data: a dictionary that includes the info of a corp_membership """ self.cmemb_data = cmemb_data self.cmemb_data['name'] = self.cmemb_data['company_name'] del self.cmemb_data['company_name'] self.field_names = cmemb_data.keys() # csv field names corp_memb_display = {} corp_memb_display['error'] = '' corp_memb_display['user'] = None status_detail = self.cmemb_data.get('status_detail', 'active') if status_detail == 'archived': status_detail = 'archive' if not status_detail in CorpMembership.VALID_STATUS_DETAIL: status_detail = 'active' self.cmemb_data['status_detail'] = status_detail expiration_dt = self.cmemb_data.get('expiration_dt', None) if expiration_dt: expiration_dt = dparser.parse(expiration_dt) error_msg = self.validate_fields(self.cmemb_data, self.key) # don't process if we have missing value of required fields if error_msg: corp_memb_display['error'] = error_msg corp_memb_display['action'] = 'skip' if not self.dry_run: self.summary_d['invalid'] += 1 else: #if self.key == 'name': [corp_profile] = CorpProfile.objects.filter( name=self.cmemb_data['name'])[:1] or [None] if corp_profile: corp_membs = CorpMembership.objects.filter( corp_profile=corp_profile, status_detail=status_detail) # there might be multiple archives, pick the one that # matches with the expiration_dt if status_detail == 'archive' and expiration_dt: corp_membs = corp_membs.filter( expiration_dt__year=expiration_dt.year, expiration_dt__month=expiration_dt.month, expiration_dt__day=expiration_dt.day) [corp_memb] = corp_membs.order_by('-id')[:1] or [None] else: corp_memb = None if corp_profile: if corp_memb: corp_memb_display['action'] = 'update' corp_memb_display['corp_profile_action'] = 'update' corp_memb_display['corp_memb_action'] = 'update' else: corp_memb_display['action'] = 'mixed' corp_memb_display['corp_profile_action'] = 'update' corp_memb_display['corp_memb_action'] = 'insert' else: corp_memb_display['action'] = 'insert' corp_memb_display['corp_profile_action'] = 'insert' corp_memb_display['corp_memb_action'] = 'insert' if not self.dry_run: if corp_memb_display['action'] == 'insert': self.summary_d['insert'] += 1 elif corp_memb_display['action'] == 'update': self.summary_d['update'] += 1 else: self.summary_d['update_insert'] += 1 # now do the update or insert self.do_import_corp_membership(corp_profile, corp_memb, corp_memb_display) # handle authorized_domain if 'authorized_domains' in self.field_names: update_authorized_domains( corp_profile, self.cmemb_data['authorized_domains']) # handle dues_rep if 'dues_rep' in self.field_names: self.update_dues_reps(corp_profile, self.cmemb_data['dues_rep']) return corp_memb_display.update({ 'company_name': self.cmemb_data.get('name', ''), 'email': self.cmemb_data.get('email', ''), 'address': self.cmemb_data.get('address', ''), 'address2': self.cmemb_data.get('address2', ''), 'city': self.cmemb_data.get('city', ''), 'state': self.cmemb_data.get('state', ''), 'zip': self.cmemb_data.get('zip', ''), 'status_detail': self.cmemb_data.get('status_detail', ''), }) return corp_memb_display
def process_corp_membership(self, cmemb_data, **kwargs): """ Check if it's insert or update. If dry_run is False, do the import to the corpmembership. :param cmemb_data: a dictionary that includes the info of a corp_membership """ self.cmemb_data = cmemb_data self.cmemb_data['name'] = self.cmemb_data['company_name'] del self.cmemb_data['company_name'] self.field_names = cmemb_data.keys() # csv field names corp_memb_display = {} corp_memb_display['error'] = '' corp_memb_display['user'] = None error_msg = self.validate_fields(self.cmemb_data, self.key) # don't process if we have missing value of required fields if error_msg: corp_memb_display['error'] = error_msg corp_memb_display['action'] = 'skip' if not self.dry_run: self.summary_d['invalid'] += 1 else: #if self.key == 'name': [corp_profile] = CorpProfile.objects.filter( name=self.cmemb_data['name'])[:1] or [None] if corp_profile: [corp_memb] = CorpMembership.objects.filter( corp_profile=corp_profile).exclude( status_detail='archive' ).order_by('-id')[:1] or [None] else: corp_memb = None if corp_profile: if corp_memb: corp_memb_display['action'] = 'update' corp_memb_display['corp_profile_action'] = 'update' corp_memb_display['corp_memb_action'] = 'update' else: corp_memb_display['action'] = 'mixed' corp_memb_display['corp_profile_action'] = 'update' corp_memb_display['corp_memb_action'] = 'insert' else: corp_memb_display['action'] = 'insert' corp_memb_display['corp_profile_action'] = 'insert' corp_memb_display['corp_memb_action'] = 'insert' if not self.dry_run: if corp_memb_display['action'] == 'insert': self.summary_d['insert'] += 1 elif corp_memb_display['action'] == 'update': self.summary_d['update'] += 1 else: self.summary_d['update_insert'] += 1 # now do the update or insert self.do_import_corp_membership(corp_profile, corp_memb, corp_memb_display) # handle authorized_domain if 'authorized_domains' in self.field_names: update_authorized_domains(corp_profile, self.cmemb_data['authorized_domains']) # handle dues_rep if 'dues_rep' in self.field_names: self.update_dues_reps(corp_profile, self.cmemb_data['dues_rep']) return corp_memb_display.update({ 'company_name': self.cmemb_data.get('name', ''), 'email': self.cmemb_data.get('email', ''), 'address': self.cmemb_data.get('address', ''), 'address2': self.cmemb_data.get('address2', ''), 'city': self.cmemb_data.get('city', ''), 'state': self.cmemb_data.get('state', ''), 'zip': self.cmemb_data.get('zip', ''), }) return corp_memb_display