def save(self, *args, **kwargs): "Form processor" profile = None if self.invitation: # Create DjangoUser django_user = django_auth.User( username=self.cleaned_data['username'], password='') django_user.set_password(self.cleaned_data['password']) django_user.save() # Crate profile try: profile = django_user.get_profile() except: profile = User() profile.user = django_user profile.name = django_user.username profile.default_group = self.invitation.default_group profile.save() # Create contact try: contact_type = ContactType.objects.get( Q(name='Person') | Q(slug='person')) except: contact_type = ContactType.objects.all()[0] try: # Check if contact has already been created (e.g. by a signals contact = profile.get_contact() if not contact: contact = Contact() except: contact = Contact() contact.name = self.cleaned_data['name'] contact.contact_type = contact_type contact.related_user = profile contact.save() # Set email try: emailfield = contact_type.fields.filter(field_type='email')[0] email = ContactValue( value=self.invitation.email, field=emailfield, contact=contact) email.save() except: pass # Add quick start widget widget = Widget(user=profile, perspective=profile.get_perspective(), module_name='treeio.core', widget_name='widget_welcome') widget.save() return profile
def save(self, *args, **kwargs): "Form processor" profile = None if self.invitation: # Create DjangoUser django_user = django_auth.User(username=self.cleaned_data['username'], password='') django_user.set_password(self.cleaned_data['password']) django_user.save() # Crate profile try: profile = django_user.get_profile() except: profile = User() profile.user = django_user profile.name = django_user.username profile.default_group = self.invitation.default_group profile.save() # Create contact try: contact_type = ContactType.objects.get(Q(name='Person') | Q(slug='person')) except: contact_type = ContactType.objects.all()[0] try: # Check if contact has already been created (e.g. by a signals contact = profile.get_contact() if not contact: contact = Contact() except: contact = Contact() contact.name = self.cleaned_data['name'] contact.contact_type = contact_type contact.related_user = profile contact.save() # Set email try: emailfield = contact_type.fields.filter(field_type='email')[0] email = ContactValue(value=self.invitation.email, field=emailfield, contact=contact) email.save() except: pass # Add quick start widget widget = Widget(user=profile, perspective=profile.get_perspective(), module_name='treeio.core', widget_name='widget_welcome') widget.save() return profile
def parse_contacts(self, contacts): "Break down CSV file into fields" for row in contacts: # Tidy up keys (iterkeys strip()) try: type = row['type'] except Exception: pass # Set type to default type try: name = row['name'] except Exception: try: firstname = row['firstname'] surname = row['surname'] name = firstname + " " + surname except Exception: continue contact_type = ContactType.objects.filter(name=type) if contact_type: contact_type = contact_type[0] # Create a new contact if it doesn't exist contact_exists = Contact.objects.filter(name=name, contact_type__name=type, trash=False) # TODO: If one does exist then append the data on that contact if not contact_exists: contact = Contact() contact.name = name contact.contact_type = contact_type contact.auto_notify = False contact.save() fields = contact_type.fields.filter(trash=False) for field in fields: if field.name in row: x = row[field.name] if field.field_type == 'email': x = self.verify_email(x) if field.field_type == 'url': x = self.verify_url(x) if x: contact_value = ContactValue() contact_value.field = field contact_value.contact = contact contact_value.value = x contact_value.save()
def save(self, request, contact_type=None): "Process form and create DB objects as required" if self.instance: contact = self.instance else: contact = Contact() contact.contact_type = contact_type contact.name = unicode(self.cleaned_data['name']) if 'parent' in self.cleaned_data: contact.parent = self.cleaned_data['parent'] if 'related_user' in self.cleaned_data: contact.related_user = self.cleaned_data['related_user'] contact.save() if self.instance: contact.contactvalue_set.all().delete() for field in contact.contact_type.fields.all(): for form_name in self.cleaned_data: if re.match(str("^" + field.name + "___\d+$"), form_name): if isinstance(self.fields[form_name], forms.FileField): value = ContactValue(field=field, contact=contact, value=self._handle_uploaded_file(form_name)) if isinstance(self.fields[form_name], forms.ImageField): self._image_resize(value.value) else: if field.field_type == 'picture' and isinstance(self.fields[form_name], forms.ChoiceField): if self.cleaned_data[form_name] != 'delete': value = ContactValue(field=field, contact=contact, value=self.cleaned_data[form_name]) else: value = ContactValue(field=field, contact=contact, value=self.cleaned_data[form_name]) value.save() return contact
def save(self, request, contact_type=None): "Process form and create DB objects as required" if self.instance: contact = self.instance else: contact = Contact() contact.contact_type = contact_type contact.name = unicode(self.cleaned_data['name']) if 'parent' in self.cleaned_data: contact.parent = self.cleaned_data['parent'] if 'related_user' in self.cleaned_data: contact.related_user = self.cleaned_data['related_user'] contact.save() if self.instance: contact.contactvalue_set.all().delete() for field in contact.contact_type.fields.all(): for form_name in self.cleaned_data: if re.match(str("^" + field.name + "___\d+$"), form_name): if isinstance(self.fields[form_name], forms.FileField): value = ContactValue( field=field, contact=contact, value=self._handle_uploaded_file(form_name)) if isinstance(self.fields[form_name], forms.ImageField): self._image_resize(value.value) else: if field.field_type == 'picture' and isinstance( self.fields[form_name], forms.ChoiceField): if self.cleaned_data[form_name] != 'delete': value = ContactValue( field=field, contact=contact, value=self.cleaned_data[form_name]) else: value = ContactValue( field=field, contact=contact, value=self.cleaned_data[form_name]) value.save() return contact
def parse_contacts(self, contacts): "Break down CSV file into fields" for row in contacts: # Tidy up keys (iterkeys strip()) try: type = row['type'] except Exception: pass # Set type to default type try: name = row['name'] except Exception: try: firstname = row['firstname'] surname = row['surname'] name = firstname + " " + surname except Exception: continue contact_type = ContactType.objects.filter(name=type) if contact_type: contact_type = contact_type[0] # Create a new contact if it doesn't exist contact_exists = Contact.objects.filter( name=name, contact_type__name=type, trash=False) # TODO: If one does exist then append the data on that contact if not contact_exists: contact = Contact() contact.name = name contact.contact_type = contact_type contact.auto_notify = False contact.save() fields = contact_type.fields.filter(trash=False) for field in fields: if field.name in row: x = row[field.name] if field.field_type == 'email': x = self.verify_email(x) if field.field_type == 'url': x = self.verify_url(x) if x: contact_value = ContactValue() contact_value.field = field contact_value.contact = contact contact_value.value = x contact_value.save()
def _do_sync(data, user): "Run updates" resource_id = data.info.application.id.raw contact_type = _get_contact_type(user) for item in data.result: item_id = None if 'id' in item.raw: item_id = item.id.raw dups = _find_duplicates(resource_id, item, user) if dups: for contact in dups: transaction.commit() try: fields = contact.contact_type.fields contact.add_nuvius_resource(resource_id, item_id) if item.name.raw: contact.name = item.name.raw if item.email: fs = fields.filter(field_type='email') if fs: for iemail in item.email: values = contact.contactvalue_set.filter( field__in=fs, value=iemail.raw) if not values: value = ContactValue(contact=contact, field=fs[0], value=iemail.raw) value.save() if item.phone: fs = fields.filter(field_type='phone') if fs: for iphone in item.phone: values = contact.contactvalue_set.filter( field__in=fs, value=iphone.raw) if not values: value = ContactValue(contact=contact, field=fs[0], value=iphone.raw) value.save() if item.address: fs = fields.filter(name='address') if fs: for iaddress in item.address: values = contact.contactvalue_set.filter( field__in=fs, value__icontains=iaddress.raw) if not values: value = ContactValue(contact=contact, field=fs[0], value=iaddress.raw) value.save() if item.website: fs = fields.filter(name='website') if fs: for iwebsite in item.website: values = contact.contactvalue_set.filter( field__in=fs, value__icontains=iwebsite.raw) if not values: value = ContactValue(contact=contact, field=fs[0], value=iwebsite.raw) value.save() contact.auto_notify = False contact.save() transaction.commit() except KeyboardInterrupt: transaction.rollback() break except: transaction.rollback() else: if contact_type and item.name.raw: transaction.commit() try: contact = Contact(contact_type=contact_type) contact.add_nuvius_resource(resource_id, item_id) contact.name = item.name.raw contact.auto_notify = False contact.set_user(user) contact.save() fields = contact_type.fields if item.email: fs = fields.filter(field_type='email') if fs: for iemail in item.email: value = ContactValue(contact=contact, field=fs[0], value=iemail.raw) value.save() if item.phone: fs = fields.filter(field_type='phone') if fs: for iphone in item.phone: value = ContactValue(contact=contact, field=fs[0], value=iphone.raw) value.save() if item.address: fs = fields.filter(name='address') if fs: for iaddress in item.address: value = ContactValue(contact=contact, field=fs[0], value=iaddress.raw) value.save() if item.website: fs = fields.filter(name='website') if fs: for iwebsite in item.website: value = ContactValue(contact=contact, field=fs[0], value=iwebsite.raw) value.save() transaction.commit() except KeyboardInterrupt: transaction.rollback() break except: transaction.rollback() _clean_missing(resource_id, data.result, user)
def _do_sync(data, user): "Run updates" resource_id = data.info.application.id.raw contact_type = _get_contact_type(user) for item in data.result: item_id = None if 'id' in item.raw: item_id = item.id.raw dups = _find_duplicates(resource_id, item, user) if dups: for contact in dups: transaction.commit() try: fields = contact.contact_type.fields contact.add_nuvius_resource(resource_id, item_id) if item.name.raw: contact.name = item.name.raw if item.email: fs = fields.filter(field_type='email') if fs: for iemail in item.email: values = contact.contactvalue_set.filter( field__in=fs, value=iemail.raw) if not values: value = ContactValue( contact=contact, field=fs[0], value=iemail.raw) value.save() if item.phone: fs = fields.filter(field_type='phone') if fs: for iphone in item.phone: values = contact.contactvalue_set.filter( field__in=fs, value=iphone.raw) if not values: value = ContactValue( contact=contact, field=fs[0], value=iphone.raw) value.save() if item.address: fs = fields.filter(name='address') if fs: for iaddress in item.address: values = contact.contactvalue_set.filter( field__in=fs, value__icontains=iaddress.raw) if not values: value = ContactValue( contact=contact, field=fs[0], value=iaddress.raw) value.save() if item.website: fs = fields.filter(name='website') if fs: for iwebsite in item.website: values = contact.contactvalue_set.filter( field__in=fs, value__icontains=iwebsite.raw) if not values: value = ContactValue( contact=contact, field=fs[0], value=iwebsite.raw) value.save() contact.auto_notify = False contact.save() transaction.commit() except KeyboardInterrupt: transaction.rollback() break except: transaction.rollback() else: if contact_type and item.name.raw: transaction.commit() try: contact = Contact(contact_type=contact_type) contact.add_nuvius_resource(resource_id, item_id) contact.name = item.name.raw contact.auto_notify = False contact.set_user(user) contact.save() fields = contact_type.fields if item.email: fs = fields.filter(field_type='email') if fs: for iemail in item.email: value = ContactValue( contact=contact, field=fs[0], value=iemail.raw) value.save() if item.phone: fs = fields.filter(field_type='phone') if fs: for iphone in item.phone: value = ContactValue( contact=contact, field=fs[0], value=iphone.raw) value.save() if item.address: fs = fields.filter(name='address') if fs: for iaddress in item.address: value = ContactValue( contact=contact, field=fs[0], value=iaddress.raw) value.save() if item.website: fs = fields.filter(name='website') if fs: for iwebsite in item.website: value = ContactValue( contact=contact, field=fs[0], value=iwebsite.raw) value.save() transaction.commit() except KeyboardInterrupt: transaction.rollback() break except: transaction.rollback() _clean_missing(resource_id, data.result, user)