def contact(request):
    '''Creates a view for adding contact, and saves the new contact to database.'''
    contacts = Contact.objects.all()
    contracts = Contract.objects.all()
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            firstname = form.cleaned_data['firstname']
            lastname = form.cleaned_data['lastname']
            email = form.cleaned_data['email']
            options = request.POST.getlist('contract')
            try:
                contact = Contact()
                contact.firstname = firstname
                contact.lastname = lastname
                contact.email = email
                contract_dates = [str(x) for x in options]
                for cd in contract_dates:
                    if cd:
                        cr = Contract.objects.get(from_date = cd)
                        contact.contract = cr
                contact.save()
            except:
                pass

            return HttpResponseRedirect(reverse('index'))
        
    else:
        form = ContactForm()

    context = {'contacts' : contacts, 'contracts': contracts, 'form' :form}
    return render(request, 'contacts/contact.html', context )
示例#2
0
文件: views.py 项目: rwisecar/Pyphon
def call(request):
    """Returns TwiML instructions to Twilio's POST requests"""

    response = twiml.Response()
    phone_number = request.POST.get('phoneNumber', '').lstrip('1')

    if phone_number:
        """If the browser sent a phoneNumber param, we know this request
        is an outgoing call from the pyphone"""
        for c in '()-':
            phone_number = phone_number.replace(c, '')
        phone_number = '+1' + phone_number
        direction = 'outgoing'
        with response.dial(callerId=settings.TWILIO_NUMBER) as r:
            r.number(request.POST['phoneNumber'])
    else:
        """Otherwise we assume this request is an incoming call."""
        direction = 'incoming'
        with response.dial() as r:
            r.client('caller')
        phone_number = request.GET.get('From', '')

    try:
        contact = Contact.objects.get(number=phone_number)
    except ObjectDoesNotExist:
        contact = Contact(number=phone_number)
        contact.save()
    call = Call(
        contact=contact,
        direction=direction,
    )
    call.save()

    return HttpResponse(str(response))
    def handle(self, *args, **options):
        contact_data = list(csv.DictReader(open(args[0],'rb')))

        # Check first row for List entries and add new lists to db.
        # List entries are prefixed with "List: ", e.g. "List: master"
        list_lkup = get_list_lkup(contact_data[0])

        # Load Contact records
        updated = 0
        for row in contact_data:
            # Create/Update contact
            payload, list_memberships = process_row(row, list_lkup)
            try:
                contact = Contact.objects.get(email_address=payload['email_address'])
                contact.__dict__.update(payload)
            except Contact.DoesNotExist:
                contact = Contact(**payload)
            contact.status = 'active'
            contact.save()
            updated += 1

            # Update Contact's List entries
            lists_added_to = 0
            for contact_list in list_memberships:
                # If Contact/List combo already exists, it will violate
                # a uniqueness constraint and raise an IntegrityError
                try:
                    membership = ListMembership(contact=contact, contact_list=contact_list)
                    membership.save()
                    lists_added_to += 1
                except IntegrityError:
                    pass
            print "Created/Updated: %s with %s lists" % (contact, lists_added_to) 

        print "Created/Updated %s Contacts" % updated
示例#4
0
def contact(request):
    if request.method == 'POST':
        listing_id = request.POST['listing_id']
        listing = request.POST['listing']
        name = request.POST['name']
        email = request.POST['email']
        phone = request.POST['phone']
        message = request.POST['message']
        user_id = request.POST['user_id']
        realtor_email = request.POST['realtor_email']

        if request.user.is_authenticated:
            # user_id = request.POST['user_id']
            has_contacted = Contact.objects.all().filter(user_id=user_id,listing_id=listing_id)
            if has_contacted:
                messages.error(request,"You have already made an inquiry for this home")
                return redirect('/listings/'+listing_id)

        contact = Contact(listing=listing, listing_id=listing_id, name=name, email=email, phone=phone,
                          message=message, user_id=user_id)
        contact.save()

        # send email
        send_mail(
            'Property Listing Inquiry',
            'there has been inquiry for this house'+listing + '.Sign in to admin panel for more info',
            '*****@*****.**',
            [realtor_email,'*****@*****.**'],
            fail_silently=False
        )

        messages.success(request, "Your inquiry has been made successfully, Realtor will get to you soon")
        return redirect('/listings/' + listing_id)
示例#5
0
    def form_valid(self,form):
        new_company = form.save(commit=False)
        
        # get from request Contact data
        contact = Contact(phone_number=self.request.POST['phone_number'],
                          email=self.request.POST['email'],
                          street=self.request.POST['street'],
                          city=self.request.POST['city'],
                          postcode=self.request.POST['postcode'],
                          country=self.request.POST['country'],
                          website=self.request.POST['website'])
        contact.save()
        # write user's first and last names
        full_name = self.request.POST['full_user_name']
        register_user = self.request.user
        if len(full_name.split(' '))==2:
            print('name is twofold')
            register_user.first_name = full_name.split(' ')[0] 
            register_user.last_name = full_name.split(' ')[1]
            register_user.save()

        # connect the new company with Contact model
        new_company.contact = contact
        new_company.save()
        # connect data - company, user and contact
        current_user = UserProfile.objects.get(user=register_user)
        current_user.name = full_name
        new_company.userprofile_set.add(current_user)

        contact.userprofile_set.add(current_user)
        return super(AddCompany, self).form_valid(form)
示例#6
0
def contact(request):
    data = location.sitemap()
    if request.method == "POST":
        full_name = request.POST["name"]
        email = request.POST["email"]
        phone = request.POST["phone_number"]
        subject = request.POST["msg_subject"]
        message = request.POST["message"]
        checkbox = request.POST["checkbox"]
        if checkbox == 'on':
            checkbox = True
        else:
            checkbox = False

        contact_form = Contact(full_name=full_name,
                               email=email,
                               phone=phone,
                               subject=subject,
                               message=message,
                               checkbox=checkbox)

        contact_form.save()
        messages.success(
            request,
            "Thank you for contacting us. A representative will respond to you shortly!"
        )
        return redirect("home")

    return render(request, 'pages/contact.html', data)
示例#7
0
 def handle(self, *args, **options):
     faker = Faker()
     # print(faker.name())
     # print(faker.email())
     for i in range(1000):
         contact = Contact(name=faker.name(), email=faker.email(), favorited=faker.boolean(), tags='')
         contact.save()
示例#8
0
def contact(request):
    if request.method == 'POST':
        listing_id = request.POST['listing_id']
        listing = request.POST['listing']
        name = request.POST['name']
        email = request.POST['email']
        message = request.POST['message']
        user_id = request.POST['user_id']
        phone = request.POST['phone']

        if request.user.is_authenticated:
            user_id = request.user.id
            has_contacted = Contact.objects.all().filter(listing_id=listing_id,
                                                         user_id=user_id)
            if has_contacted:
                messages.error(request, 'You have alreay made inquire')
                return redirect('/listings/' + listing_id)

        contact = Contact(listing_id=listing_id,
                          listing=listing,
                          name=name,
                          email=email,
                          message=message,
                          user_id=user_id,
                          phone=phone)
        contact.save()

        messages.success(request, 'Your request was submitted')
        return redirect('/listings/' + listing_id)
示例#9
0
    def handle(self, *args, **options):
        Contact.objects.all().delete()
        for i in range(50):
            contact_data = requests.get('https://randomuser.me/api/').json()
            contact_data = contact_data['results'][0]
            name = contact_data['name']['first'] + ' ' + contact_data['name']['last']
            age = contact_data['dob']['age']

            contact = Contact(name=name, age=age, image=None)
            contact.save()

            image_url = contact_data['picture']['large']

            image_response = requests.get(image_url)
            image_data = BytesIO()
            image_data.write(image_response.content)
            file_name = image_url.split('/')[-1]
            contact.image.save(file_name, files.File(image_data))
            contact.save()

            print(str(round(i/50*100,2))+'%')






        




        print(name)
示例#10
0
 def test_can_create_contact_message(self):
     contact = Contact(book_id=1,
                       book="Test book title",
                       user_id=1,
                       message="Test message")
     contact.save()
     self.assertEqual(contact.message, "Test message")
示例#11
0
class ContactsDetailViewTestCase(TestCase):
    def setUp(self):
        self.name = 'test'
        self.email = '*****@*****.**'
        self.url = "/contacts/1/"
        self.contact = Contact(name=self.name, email=self.email)
        self.user = User.objects.create(username="******")
        self.client = APIClient()
        self.client.force_authenticate(user=self.user)
        self.contact.save()

    def test_can_fetch_a_contact(self):
        response = self.client.get(self.url, format="json")
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data["name"], self.name)

    def test_can_update_a_contact(self):
        update = dict(name="test123", email="*****@*****.**")
        response = self.client.put(self.url, update, format="json")
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data["name"], update["name"])

    def test_can_delete_a_contact(self):
        response = self.client.delete(self.url, format='json', follow=True)
        self.assertEquals(response.status_code, status.HTTP_204_NO_CONTENT)
示例#12
0
def contact(request):
    if request.method == 'POST':
        listing_id = request.POST['listing_id']
        listing = request.POST['listing']
        name = request.POST['name']
        email = request.POST['email']
        phone = request.POST['phone']
        message = request.POST['message']
        user_id = request.POST['user_id']
        realtor_email = request.POST['realtor_email']

        if request.user.is_authenticated:
            user_id = request.user.id
            has_contacted = Contact.objects.all().filter(listing_id=listing_id, user_id=user_id,)

            if has_contacted:
                messages.error(request, 'You Already Submitted a Request for This Listing')
                return redirect('/listings/'+listing_id)

        contact = Contact(listing=listing, listing_id=listing_id, name=name, email=email,
                          phone=phone, message=message, user_id=user_id)

        contact.save()

        send_mail(
            'property Listing Enquiry',
            'There Has Been An Enquiry For ' + listing + 'Sign into Admin Panel For More',
            '*****@*****.**',
            [realtor_email, '*****@*****.**'],
            fail_silently=False

        )

        messages.success(request, 'Successfully Submitted Request')
        return redirect('/listings/'+listing_id)
示例#13
0
    def save(self, event = None):
        assert event
        contact = Contact(first_name = self.cleaned_data['first_name'],
                          middle_initial = self.cleaned_data['middle_initial'],
                          last_name = self.cleaned_data['last_name'],
                          title = self.cleaned_data['title'],
                          email = self.cleaned_data['email'],
                          phone1 = self.cleaned_data['phone1'],
                          addr1_row1 = self.cleaned_data['addr1_row1'],
                          addr1_row2 = self.cleaned_data['addr1_row2'],
                          addr1_city = self.cleaned_data['addr1_city'],
                          addr1_state = self.cleaned_data['addr1_state'],
                          addr1_zip = self.cleaned_data['addr1_zip'],
                          addr1_country = self.cleaned_data['addr1_country'])

        contact.save()

        registrant = Registrant(event = event,
                                contact = contact,
                                pending = True,
                                discount_code = self.cleaned_data['discount_code'])

        registrant.save()

        return registrant
示例#14
0
def contact(request):
    '''Creates a view for adding contact, and saves the new contact to database.'''
    contacts = Contact.objects.all()
    contracts = Contract.objects.all()
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            firstname = form.cleaned_data['firstname']
            lastname = form.cleaned_data['lastname']
            email = form.cleaned_data['email']
            options = request.POST.getlist('contract')
            try:
                contact = Contact()
                contact.firstname = firstname
                contact.lastname = lastname
                contact.email = email
                contract_dates = [str(x) for x in options]
                for cd in contract_dates:
                    if cd:
                        cr = Contract.objects.get(from_date=cd)
                        contact.contract = cr
                contact.save()
            except:
                pass

            return HttpResponseRedirect(reverse('index'))

    else:
        form = ContactForm()

    context = {'contacts': contacts, 'contracts': contracts, 'form': form}
    return render(request, 'contacts/contact.html', context)
示例#15
0
    def handle(self, *args, **options):
        Contact.objects.all().delete()

        # open the file containing the json
        with open('./contacts/management/commands/contacts.json', 'r') as file:
            # reading the text in the file
            text = file.read()
        # turning that json string into a python dictionary
        data = json.loads(text)
        # looping over the contact data inside that dictionary
        for contact_data in data['contacts']:
            # getting out the contact data into local variables
            first_name   = contact_data['first_name']
            last_name    = contact_data['last_name']
            birthday     = contact_data['birthday']
            email        = contact_data['email']
            phone_number = contact_data['phone_number']
            is_cell      = contact_data['is_cell']
            comments     = contact_data['comments']
            # create a contact from our data
            contact = Contact(first_name=first_name,
                                last_name=last_name,
                                birthday=birthday,
                                email=email,
                                phone_number=phone_number,
                                is_cell=is_cell,
                                comments=comments)
            # save the contact to the database
            contact.save()
示例#16
0
class ContactsSearchViewTestCase(TestCase):
    def setUp(self):
        self.url = "/search/?q={}"

        user = User.objects.create(username="******")
        self.client = APIClient()
        self.client.force_authenticate(user=user)

        self.first_contact = Contact(name="test abc", email="*****@*****.**")
        self.second_contact = Contact(name="admin", email="*****@*****.**")

        self.first_contact.save()
        self.second_contact.save()

    def test_can_search_by_name(self):
        q = "abc"
        response = self.client.get(self.url.format(q),
                                   format='json',
                                   follow=True)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data[0]["name"], self.first_contact.name)

    def test_can_search_by_email(self):
        q = "email"
        response = self.client.get(self.url.format(q),
                                   format='json',
                                   follow=True)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data[0]["email"], self.second_contact.email)
示例#17
0
def contact_view(request):
    if request.method == 'POST':
        listing_id = request.POST['listing_id']
        listing = request.POST['listing']
        name = request.POST['name']
        email = request.POST['email']
        phone = request.POST['phone']
        message = request.POST['phone']
        user_id = request.POST['user_id']
        realtor_email = request.POST['realtor_email']

        if request.user.is_authenticated:
            user_id = request.user.id
            has_contacted = Contact.objects.all().filter(listing_id=listing_id,
                                                         user_id=user_id)
            if has_contacted:
                messages.error(request, 'Siz oldin bu uy haqida soragansiz')
                return redirect('/listings/' + listing_id)

        contact = Contact(listing_id=listing_id,
                          listing=listing,
                          name=name,
                          email=email,
                          phone=phone,
                          message=message,
                          user_id=user_id)
        contact.save()

        messages.success(
            request,
            'Sizni habaringiz Yollandi tez orada siz bilan boglanamiz')
        return redirect('/listings/' + listing_id)
示例#18
0
def inquiry(request):
    if request.method == "POST":
        car_id = request.POST['car_id']
        car_title = request.POST['car_title']
        user_id = request.POST['user_id']
        first_name = request.POST['first_name']
        last_name = request.POST['last_name']
        customer_need = request.POST['customer_need']
        phone = request.POST['phone']
        city = request.POST['city']
        state = request.POST['state']
        email = request.POST['email']
        message = request.POST['message']

        if request.user.is_authenticated:
            user_id = request.user.id
            has_contacted = Contact.objects.all().filter(car_id = car_id, user_id = user_id)
            if has_contacted:
                messages.error(request,"You have already made enquiry about this car")
                return redirect('/cars/'+car_id)
        
        contact = Contact(
            car_id=car_id, car_title=car_title, user_id=user_id, 
            first_name=first_name, last_name=last_name, customer_need=customer_need, 
            city=city, state=state, email=email, message=message
            )

        contact.save()
        messages.success(request, "Contact Saved")
        return redirect('/cars/'+car_id)
示例#19
0
def parse_csv(data):
    """Parse CSV and try to add data.

    Only if not double

    Returns:
        [<total records quantity>, <imported records>, <doubles quantity>, <errors quantity>]
    """
    imported = 0
    doubles = 0
    errors = 0
    data_read = [row for row in data]
    for row in data_read:
        contact = Contact(
            name=row[0],
            company=row[1],
            email=row[2],
            phone=row[3],
            interest=row[4],
        )
        existing_contact = Contact.objects.filter(
            name=row[0],
            company=row[1],
            email=row[2],
            phone=row[3],
            interest=row[4],
        )
        if existing_contact.count() == 0:
            imported += 1
            contact.save()
        else:
            doubles += 1
    return [len(data_read), imported, doubles, errors]
示例#20
0
文件: tests.py 项目: rwisecar/Pyphon
 def test_most_recent_text_body(self):
     """test that most_recent_text_body helper function returns the right text body."""
     contact = Contact(name="test", number='+12345678910')
     contact.save()
     text = Text(body="this is a test", sender="Them", contact=contact)
     text.save()
     self.assertEqual(contact.most_recent_text_body(), text.body)
示例#21
0
def contact2(request):
    if request.method == 'POST':
        pet_id = request.POST['pet_id']
        pet = request.POST['pet']
        name = request.POST['name']
        email = request.POST['email']
        phone = request.POST['phone']
        message = request.POST['message']

        contact = Contact(pet_id=pet_id,
                          pet=pet,
                          name=name,
                          email=email,
                          phone=phone,
                          message=message)

        contact.save()
        #send an email function
        send_mail(
            'Hi! ' + name +
            ' Thank you for your message',  #subject person´s name
            'We´ll be in touch shortly!',  #message
            email,  #from email
            ['*****@*****.**'],  #to email
        )

        messages.success(
            request, 'Thank you for your message! We´ll be in touch shortly! ')
        return redirect('index')
示例#22
0
 def save(self, *args, **kwargs):
     if not self.id:
         contact = Contact(owner=self,
                           full_name=self.full_name,
                           mobile=self.mobile)
         super().save(*args, **kwargs)
         contact.save()
     super().save(*args, **kwargs)
示例#23
0
 def create(self, request, format=None):
     serializer = ContactSerializer(data=request.data)
     contact = Contact(name=request.data['name'],
                       phone_number=request.data['phone_number'],
                       image='/images/what.png')
     contact.save()
     return redirect('/')
     return Response({'detail': 'Contact created'})
def import_csv(imported_file):
    for i, v in enumerate(imported_file.splitlines()):
        if i == 0:
            continue
        else:
            v = v.split(',')
            contact = Contact(firstName=v[0], lastName=v[1], phone=v[2], email=v[3])
            contact.save()
示例#25
0
 def test_instance_deleted(self):
     c = Contact(code="1", name="contact1", email="*****@*****.**")
     c.save()
     c.delete()
     self.assertEqual(
         len(Contact.history.all()),
         2  # created + deleted audits
     )
示例#26
0
 def create(self, request):
     serializer = ContactSerializer
     new_contact = Contact(name=request.data['name'],
                           phone_number=request.data['number'],
                           pic=request.data['pic'])
     new_contact.save()
     return redirect('/')
     return Response({'detail': 'Contact Created'})
示例#27
0
    def test_can_fetch_all_contacts(self):
        name, email = "test", "*****@*****.**"
        contact = Contact(name=name, email=email)
        contact.save()

        response = self.client.get(self.url, format="json")
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data[0]["name"], name)
示例#28
0
def inquiry(request):
    if request.method == "POST":
        car_id = request.POST['car_id']
        car_title = request.POST['car_title']
        user_id = request.POST['user_id']
        first_name = request.POST['first_name']
        last_name = request.POST['last_name']
        customer_need = request.POST['customer_need']
        city = request.POST['city']
        state = request.POST['state']
        email = request.POST['email']
        phone = request.POST['phone']
        message = request.POST['message']

        # for sending error if user already making inquiry.
        if request.user.is_authenticated:
            user_id = request.user.id

            has_connected = Contact.objects.all().filter(car_id=car_id,
                                                         user_id=user_id)

            # if user_id is already exists
            if has_connected:
                messages.error(
                    request,
                    'You already make inquiry please wait until get first response'
                )
                return redirect('/cars/' + car_id)
        # save elements in contact model
        contact = Contact(car_id=car_id,
                          car_title=car_title,
                          user_id=user_id,
                          first_name=first_name,
                          last_name=last_name,
                          customer_need=customer_need,
                          city=city,
                          state=state,
                          email=email,
                          phone=phone,
                          message=message)
        # sending messages to admin whenever new inquiry posted .
        admin_info = User.objects.get(is_superuser=True)
        admin_email = admin_info.email
        send_mail(
            'New inquiry',  # subject
            'You have new inquiry for ' + car_title +
            '. Please login to your admin panel',  # message
            '*****@*****.**',  # admin gmail
            [admin_email],
            fail_silently=False,
        )
        # saving post to models
        contact.save()
        # inquiry posted successfully to admin by customer
        messages.success(request, "Your inquiry saved we will back you soon")
        # redirect to cars page
        return redirect('/cars/' + car_id)
示例#29
0
def addData(request):
    if request.method == "POST":
        name1 = request.POST["name"]
        number1 = request.POST["number"]
        address1 = request.POST["address"]
        newContact = Contact(name=name1, number=number1, address=address1)
        newContact.save()
        return HttpResponse(alert(f"Added ({name1},{number1},{address1})"))
    return HttpResponse("make post request")
示例#30
0
 def setUp(self):
     c = Contact(
         name='URLResolveTestCase',
         company='Стероиды и Ко',
         email='*****@*****.**',
         phone='+71234567890',
         interest=None,
     )
     c.save()
示例#31
0
 def test_queryset_deleted(self):
     c = Contact(code="1", name="contact1", email="*****@*****.**")
     c.save()
     Contact.objects.all().delete()
     self.assertEqual(
         len(Contact.history.all()),
         1  # created audit only
         # deleted audit is not created
         # use bulk_delete_with_history for deleted audits
     )
示例#32
0
 def test_new_text_redirects_on_success(self):
     """Test that creating a new contact successfully redirects."""
     user1 = User()
     user1.save()
     self.client.force_login(user1)
     jabba = Contact(name="Jabba", number="+9999999999")
     jabba.save()
     response = self.client.post(reverse_lazy('new_text'),
                                 {'number': "9999999999"})
     self.assertTrue(response.status_code == 302)
示例#33
0
 def update_person(self, request, pk, format=None):
     print("cheese and crackers")
     queryset = Contact.objects.all.get(pk=pk)
     serializer = ContactSerializer(queryset, data=request.data)
     contact = Contact(name=request.data['name'],
                       phone_number=request.data['phone_number'],
                       image='/images/what.png')
     contact.save()
     return redirect('/')
     return Response({'detail': 'Contact edited'})
    def test_contact_needed_detect_not_contacted_at_all(self):
        # GIVEN: new contact without last contact date
        contact = Contact(firstName='Test', lastName='Test', age=33, notificationsFrequency=24, gender=1, isActive=True)
        contact.save()

        # WHEN: run get_contact_needed
        results = StatsView.get_contact_needed()

        # THEN: expect the given contact in the results
        self.assertIn(contact, results)
示例#35
0
文件: tests.py 项目: rwisecar/Pyphon
 def test_most_recent_text_body_longer_body(self):
     """Test helper function returns truncated text body."""
     contact = Contact(name="test", number='+12345678910')
     contact.save()
     text = Text(body="this is a sample text for testing",
                 sender="Them",
                 contact=contact)
     text.save()
     truncated_text = "this is a sample tex..."
     self.assertEqual(contact.most_recent_text_body(), truncated_text)
示例#36
0
 def test_contact_queryset_returns_contact_attributes_in_json(self):
     """Test that a call to the contact api contains contact attributes."""
     user1 = User()
     user1.save()
     self.client.force_login(user1)
     jabba = Contact(name="Jabba", number="+2068675309")
     jabba.save()
     contacts = self.client.get('/api/contacts/list/')
     self.assertTrue("+2068675309" in contacts.content.decode())
     self.assertTrue("Jabba" in contacts.content.decode())
    def test_contact_needed_postponed_but_active_again(self):
        # GIVEN: new contact without last contact date and postponed in past
        contact = Contact(firstName='Test', lastName='Test', age=33, notificationsFrequency=24, gender=1, isActive=True,
                          postponed=timezone.now()-datetime.timedelta(days=1))
        contact.save()

        # WHEN: run get_contact_needed
        results = StatsView.get_contact_needed()

        # THEN: expect the given contact in the results
        self.assertIn(contact, results)
    def test_contact_needed_but_scheduled_not_detected(self):
        # GIVEN: new contact without last contact date but with scheduled message
        contact = Contact(firstName='Test', lastName='Test', age=33, notificationsFrequency=24, gender=1, isActive=True,
                          lastContact=timezone.now())
        contact.save()
        message = Message(type='SMS', recipientName='Test test', contact=contact, recipientPhone="1234", body="test",
                          sendAtDate=timezone.now(), state="QUEUED")
        message.save()

        # WHEN: run get_contact_needed
        results = StatsView.get_contact_needed()

        # THEN: expect the given contact NOT in the results
        self.assertNotIn(contact, results)
    def test_should_save_a_contact_belonging_to_a_category(self):
        category = Category(name="friend")
        category.save()

        self.assertEqual(1, len(Category.objects.filter()))
        contact = Contact()
        contact.name = "ben"
        contact.email_address = "brainychip.gmail.com"
        contact.category = category
        contact.save()

        self.assertEqual(contact.category, category)


        
示例#40
0
文件: views.py 项目: er34/JoomboCRM
def editformprocessor(request):
    logger.debug(request.POST['code'])
    if request.POST['code']:
        nc = Contact.objects.filter(owner=request.user).filter(code=request.POST['code'])[0]
    else:
        nc = Contact(code=GetNewCode(Contact.objects.filter(owner_id = request.user.id)), owner = request.user)
    nc.client = Client.objects.filter(owner_id = request.user.id).filter(code=request.POST['clientid'])[0]
    nc.fio = request.POST['fio']    
    nc.email = request.POST['email']  
    if (request.POST['birthday']):
        stdate = datetime.datetime.strptime(str(request.POST['birthday']), "%Y-%m-%d");
        nc.birthday = stdate    
    nc.position = request.POST['position']    
    nc.phone = request.POST['phone']    
    nc.save();
    return entry(request)
    def test_state_contact_needed_last_contact_present(self):
        # GIVEN: active contact with last contact older than notification frequency
        contact = Contact(firstName='Test',
                          lastName='Test',
                          lastContact=timezone.now() - datetime.timedelta(hours=36),
                          postponed=timezone.now() - datetime.timedelta(hours=24),
                          email='*****@*****.**',
                          phone='12341234',
                          age=33,
                          gender=1,
                          notificationsFrequency=24,
                          isActive=True,
                          notes='Test notes')
        contact.save()

        # THEN: state should be contact needed
        self.assertEqual(contact.state, 'CONTACT_NEEDED')
示例#42
0
def update_contacts(request):
    if request.method == 'POST':
        for i in range(int(request.POST['total_contacts'])):
            try:
                c = Contact()

                c.user = request.user
                c.name = request.POST['name' + str(i)]
                c.email = request.POST['email' + str(i)]

                c.save()
            except Exception:
                print 'none'

        return HttpResponseRedirect(reverse('dashboard'))
    else:
        return HttpResponseRedirect(reverse('accounts'))
    def test_state_disabled(self):
        # GIVEN: disabled contact
        contact = Contact(firstName='Test',
                          lastName='Test',
                          lastContact=timezone.now(),
                          postponed=timezone.now(),
                          email='*****@*****.**',
                          phone='12341234',
                          age=33,
                          gender=1,
                          notificationsFrequency=24,
                          isActive=False,
                          notes='Test notes')
        contact.save()

        # THEN: state should be disabled
        self.assertEqual(contact.state, 'DISABLED')
    def test_state_postponed_past(self):
        # GIVEN: active contact with postponed in past
        contact = Contact(firstName='Test',
                          lastName='Test',
                          lastContact=timezone.now(),
                          postponed=timezone.now() - datetime.timedelta(hours=24),
                          email='*****@*****.**',
                          phone='12341234',
                          age=33,
                          gender=1,
                          notificationsFrequency=24,
                          isActive=True,
                          notes='Test notes')
        contact.save()

        # THEN: state should not be postponed
        self.assertNotEqual(contact.state, 'POSTPONED')
 def readData(self, filePath):
     data = csv.DictReader(open(filePath , encoding='utf-8'))
     count = 0
     print('reading: %s' % filePath)
     for row in data:
         count += 1
         sys.stdout.write('.')
         sys.stdout.flush()
         contact = Contact()
         contact.given_name = row['GivenName']
         contact.surname = row['Surname']
         contact.street_address = row['StreetAddress']
         contact.city = row['City']
         contact.zip_code = row['ZipCode']
         contact.country = row['Country']
         contact.email_address = row['EmailAddress']
         contact.telephone_number = row['TelephoneNumber']
         contact.save()
     print('\nready: %d contacts read' % count)
    def test_state_planned_contact(self):
        # GIVEN: active contact with queued message
        contact = Contact(firstName='Test',
                          lastName='Test',
                          lastContact=timezone.now(),
                          postponed=timezone.now() - datetime.timedelta(hours=24),
                          email='*****@*****.**',
                          phone='12341234',
                          age=33,
                          gender=1,
                          notificationsFrequency=24,
                          isActive=True,
                          notes='Test notes')
        contact.save()
        message = Message(type='SMS', recipientName='Test test', contact=contact, recipientPhone="1234", body="test",
                          sendAtDate=timezone.now(), state="QUEUED")
        message.save()

        # THEN: state should be contact planned
        self.assertEqual(contact.state, 'CONTACT_PLANNED')
示例#47
0
文件: whatsappd.py 项目: josben/mc
def saveWhatsapp(phone, type_message, message):
    try:
        contact = ContactNumber.objects.get(phone=phone)
    except ContactNumber.DoesNotExist:
        # If number phone not exist
        contact = Contact(nickname=phone)
        contact.save()
        contact_number = ContactNumber(contact=contact,
                                       country_code='591',
                                       phone=phone)
        contact_number.save()

    print ('===========')
    print ('type_message')
    print ('===========')

#    if type_message is not 'image' and type_message is not 'video' and type_message is not 'audio':
    if type_message is 'text':
        whatsapp = MessageCenterReceived(contact=contact,
                                         message_received=message)
        whatsapp.save()
示例#48
0
    def test_creating_a_new_contact_and_save_it_to_db(self):
        #create a new contact
        contact = Contact()
        contact.name = 'Kostyantyn'
        contact.surname = 'Surename'
        contact.birthdate = timezone.now()
        contact.bio = 'My bio'
        
        contact.save()

        all_contacts = Contact.objects.all()
        self.assertEqual(len(all_contacts), 1)
        db_contact = all_contacts[0]
        
        self.assertEqual(db_contact.name, 'Kostyantyn')
        self.assertEqual(db_contact.surname, 'Surename')
        self.assertEqual(db_contact.birthdate, contact.birthdate)
        self.assertEqual(db_contact.bio, 'My bio')
        
        contactdetails = ContactDetail()
        contactdetails.jabber = 'jabber'
        contactdetails.email = '*****@*****.**'
        contactdetails.skype = 'skype'
        contactdetails.other = 'bla-bla-bla'
        
        contactdetails.save()
        contact.contactdetails = contactdetails
        contact.save()
        
        all_contacts = Contact.objects.all()
        self.assertEqual(len(all_contacts), 1)
        db_contact=all_contacts[0]
        
        self.assertEqual(db_contact.contactdetails.jabber, 'jabber')
        self.assertEqual(db_contact.contactdetails.email, '*****@*****.**')
        self.assertEqual(db_contact.contactdetails.skype, 'skype')
        self.assertEqual(db_contact.contactdetails.other, 'bla-bla-bla')
        
示例#49
0
def new(request):
    user_profile = request.user.userprofile_set.filter()[0]
    form_categories = Category.objects.filter(owner=user_profile)

    if request.method == "GET":
        current_user = request.user
        form = ContactForm(current_user=current_user)
        user_profile = request.user.userprofile_set.filter()[0]
        form_categories = Category.objects.filter(owner=user_profile)
        return render(request, 'contacts/new_contact_form.html', {'form':form,
                                                                  'title':"New Contact",
                                                                  'categories':form_categories})
    else:
        form = ContactForm(data=request.POST, current_user=request.user)

        if form.is_valid():
            try:
                user_profile = get_user_profile(request)
                age = form.cleaned_data['age']
                name = form.cleaned_data['name']
                public = form.cleaned_data['public']
                category_id = form.cleaned_data['category']
                category = Category.objects.filter(id=category_id)[0]
                contact = Contact(age=age, name=name, public=public, owner=user_profile, category=category)
                contact.save()
                messages.add_message(request, messages.SUCCESS, "Contact successfully created" )
                return redirect('/contacts/')
            except:
                messages.add_message(request, messages.ERROR, "Contact creation unsuccessful" )
                return render(request, 'contacts/new_contact_form.html', {'form':form,
                                                                          'title':"New Contact",
                                                                          'categories': form_categories})
        else:
            messages.add_message(request, messages.ERROR, "Contact creation unsuccessful" )
            return render(request, 'contacts/new_contact_form.html', {'form':form,
                                                                      'title':"New Contact",
                                                                      'categories': form_categories})
示例#50
0
def contact_edit(request, abonent_id, contact_id=0):
    if contact_id != '0' :
        message = u'Изменение контактной информации'
        new = False
        contact = Contact.objects.get(pk=contact_id)
    else:
        message = u'Добавление нового контакта'
        new = True
        contact = Contact()

    try:
        abonent = Abonent.objects.get(pk = abonent_id)
    except:
        raise Http404

    if request.method == 'POST':
        form = ContactModelForm(request.POST, instance=contact)
        if form.is_valid():
            form.save(commit=False)
            contact.abonent=abonent
            contact.save()
            return HttpResponseRedirect(reverse('contacts', args=[abonent_id]))
        else:
            print form.errors
    else:
        form = ContactModelForm(instance=contact)

    header = 'Контакт'
    breadcrumbs = [({'url':reverse('contacts', args=[abonent.pk]),'title':'Контакты'})]

    return render_to_response('generic/generic_edit.html', { 
                                'header' : header,
                                'form': form,
                                'breadcrumbs':breadcrumbs,
                                'abonent': abonent,
                                'extend': 'abonent/main.html', },
                                 context_instance = RequestContext(request))
示例#51
0
def issues(request):

    from contacts.models import Contact, ContactGroup

    grupos = ContactGroup.objects.all()

    if request.method == "POST":
        if 'file' in request.FILES:
            import xlrd
            
            from django.conf import settings

            file = request.FILES['file']
            
            wb = xlrd.open_workbook(file_contents=file.read())
            sh = wb.sheet_by_index(0)

            for rownum in range(1,sh.nrows):
                row = sh.row_values(rownum)           
                ctc = Contact()
                ctc.name = row[0]
                ctc.last_name = row[1]
                ctc.email = row[2]
                ctc.grupo = ContactGroup.objects.get(pk=row[3])
                ctc.save()
 
    form = UploadFileForm()
    
    return simple.direct_to_template(
        request,
        'issues.html',
        extra_context = {
            'grupos':grupos,
            'formMass':form,
        }
    )
示例#52
0
def view_contact_import(request):
    form = ImportContactsForm()
    message = ''
    errorList = []
    if request.method == 'POST':
        form = ImportContactsForm(request.POST,request.FILES)
        my_file = request.FILES['file']
        if form.is_valid():
            with open('/var/www/yellowpage/media/xls/'+my_file.name, 'wb+') as destination:
                for chunk in my_file.chunks():
                    destination.write(chunk)
            xls = xlrd.open_workbook('/var/www/yellowpage/media/xls/'+my_file.name)
            sheet = xls.sheet_by_index(0)
            completed = 0
            for row_index in range(1, sheet.nrows):
                try:
                    code = sheet.cell_value(row_index,0).capitalize()
                    #if str(code) == "":
                    #    
                    contact = Contact(code=code)
                    contact.surname = sheet.cell_value(row_index,1).capitalize()
                    contact.name = sheet.cell_value(row_index,2).capitalize()
                    contact.street = sheet.cell_value(row_index,3).capitalize()
                    contact.zip = str(sheet.cell_value(row_index,4))
                    contact.city = sheet.cell_value(row_index,5).capitalize()
                    contact.province = Province.objects.get(code=sheet.cell_value(row_index,6))
                    contact.email = sheet.cell_value(row_index,8)
                    contact.phone_number = sheet.cell_value(row_index, 7)
                    contact.birthdate = str(sheet.cell_value(row_index,12))
                    #Settore
                    sectorString = str(sheet.cell_value(row_index, 10))
                    professionString = str(sheet.cell_value(row_index, 9))
                    profession = Work.objects.filter(name=professionString)
                    if not profession:
                        sector = Sector.objects.filter(name=sectorString)
                        if not sector:
                            sector = Sector(name=sectorString)
                            sector.save()
                        #Professione
                        profession = Work(name=professionString, sector=Sector.objects.get(pk=sector.pk))
                        profession.save()
                    else:
                        profession = profession[0]
                    contact.work = Work.objects.get(name=profession.name)
                    contact.save()
                    completed += 1
                    #Certificato
                    cabinet = Cabinet.objects.get(pk=ContactCertFile.CABINET_ID)
                    current_user = request.user
                    file = ContactCertFile(contact=Contact.objects.get(pk=contact.pk))
                    uploadedFile = UploadedFile(title="Certificato Vuoto", cabinet=cabinet, file_ref="/cabinet/cert_empty.pdf", owner=current_user)
                    uploadedFile.save()
                    file.file = uploadedFile
                    file.expiry = str(sheet.cell_value(row_index,11))
                    file.save()
                except Exception as e:
                    print '%s (%s)' % (e.message, type(e))
                    errorList.append(sheet.cell_value(row_index,0).capitalize() + " " + e.message)
            message = 'Report Import: %d contatti importati correttamente. ' % completed

    return render_to_response('admin/contacts/view_contact_import.html',{'form':form, 'message':message, 'errorList': errorList}, context_instance=RequestContext(request))
示例#53
0
contacts = [
	{
		"firstName": "Alex",
		"lastName": "Iskander",
		"preferredName": "Alex",
		"email": "*****@*****.**",
		"groups": ["Christmas Party", "Greetings", "Friends", "Employees"]
	},
	{
		"firstName": "John",
		"lastName": "Doe",
		"preferredName": "Johnny",
		"email": "*****@*****.**",
		"groups": ["Credit Unions", "Friends"]
	},
	{
		"firstName": "Smeagol",
		"lastName": "Kentucky", 	# Uh... what?
		"preferredName": "Gollum",
		"email": "*****@*****.**",
		"groups": ["Greetings"]
	}
]

for c in contacts:
	contact = Contact(firstName=c["firstName"],lastName=c["lastName"],preferredName=c["preferredName"],email=c["email"])
	contact.save()
	for g in c["groups"]:
		gmap[g].contacts.add(contact)
		gmap[g].save()
def import_json(imported_file):
    for json_contact in json.loads(imported_file):
        contact = Contact(firstName=json_contact['firstName'], lastName=json_contact['lastName'],
                          phone=json_contact['phone'], email=json_contact['email'])
        contact.save()
def import_xml(imported_file):
    raw_xml = xmldict.xml_to_dict(imported_file)['root']['item']
    for item in raw_xml:
        contact = Contact(firstName=item['firstName']['#text'], lastName=item['lastName']['#text'],
                          phone=item['phone']['#text'], email=item['email']['#text'])
        contact.save()
示例#56
0
def index(request, form_class=ContactForm, template_name="form.html"):

    if request.method == "POST":
        form = form_class(request.POST)
        if form.is_valid():
            email = form.cleaned_data.get('email', None)
            first_name = form.cleaned_data.get('first_name', None)
            last_name = form.cleaned_data.get('last_name', None)
            
            if listed_in_email_block(email):
                # listed in the email blocks - it's a spam email we want to block
                # log the spam
                log_defaults = {
                    'event_id' : 130999,
                    'event_data': 'SPAM detected in email from  %s %s, %s.' \
                                    % (first_name, last_name, email),
                    'description': 'email spam detected',
                    'user': request.user,
                    'request': request,
                }
                EventLog.objects.log(**log_defaults)
                
                # redirect normally so they don't suspect
                return HttpResponseRedirect(reverse('form.confirmation'))
            
            address = form.cleaned_data.get('address', None)
            city = form.cleaned_data.get('city', None)
            state = form.cleaned_data.get('state', None)
            zipcode = form.cleaned_data.get('zipcode', None)
            country = form.cleaned_data.get('country', None)
            phone = form.cleaned_data.get('phone', None)
            
            url = form.cleaned_data.get('url', None)
            message = form.cleaned_data.get('message', None)

            contact_kwargs = {
                'first_name': first_name,
                'last_name': last_name,
                'message': message,
            } 
            contact = Contact(**contact_kwargs)
            contact.creator_id = 1 # TODO: decide if we should use tendenci base model
            contact.owner_id = 1 # TODO: decide if we should use tendenci base model
            contact.save()

            if address or city or state or zipcode or country:
                address_kwargs = {
                    'address': address,
                    'city': city,
                    'state': state,
                    'zipcode': zipcode,
                    'country': country,
                }
                obj_address = Address(**address_kwargs)
                obj_address.save() # saves object
                contact.addresses.add(obj_address) # saves relationship

            if phone:
                obj_phone = Phone(number=phone)
                obj_phone.save() # saves object
                contact.phones.add(obj_phone) # saves relationship

            if email:
                obj_email = Email(email=email)
                obj_email.save() # saves object
                contact.emails.add(obj_email) # saves relationship

            if url:
                obj_url = URL(url=url)
                obj_url.save() # saves object
                contact.urls.add(obj_url) # saves relationship

            site_name = get_setting('site', 'global', 'sitedisplayname')
            message_link = get_setting('site', 'global', 'siteurl')

            # send notification to administrators
            # get admin notice recipients
            recipients = get_notice_recipients('module', 'contacts', 'contactrecipients')
            if recipients:
                if notification:
                    extra_context = {
                    'reply_to': email,
                    'contact':contact,
                    'first_name':first_name,
                    'last_name':last_name,
                    'address':address,
                    'city':city,
                    'state':state,
                    'zipcode':zipcode,
                    'country':country,
                    'phone':phone,
                    'email':email,
                    'url':url,
                    'message':message,
                    'message_link':message_link,
                    'site_name':site_name,
                    }
                    notification.send_emails(recipients,'contact_submitted', extra_context)

            try: user = User.objects.filter(email=email)[0]
            except: user = None

            if user:
                event_user = user
                event_id = 125115
            else:
                event_user = AnonymousUser()
                event_id = 125114

            log_defaults = {
                'event_id' : event_id,
                'event_data': 'Contact Form (id:%d) submitted by %s' % (contact.pk, email),
                'description': '%s added' % contact._meta.object_name,
                'user': event_user,
                'request': request,
                'instance': contact,
            }
            EventLog.objects.log(**log_defaults)

            return HttpResponseRedirect(reverse('form.confirmation'))
        else:
            return render_to_response(template_name, {'form': form}, 
                context_instance=RequestContext(request))

    form = form_class()
    return render_to_response(template_name, {'form': form}, 
        context_instance=RequestContext(request))
e22 = Event.objects.get(pk=22)
e23 = Event.objects.get(pk=23)
e40 = Event.objects.get(pk=40)
e41 = Event.objects.get(pk=41)
e43 = Event.objects.get(pk=43)
e44 = Event.objects.get(pk=44)
e60 = Event.objects.get(pk=60)

ciacci = Contact()
ciacci.type = "C"
ciacci.status = "I"
ciacci.name = "MANILA"
ciacci.surname = "CIACCI"
ciacci.email = ""
ciacci.code = "CCCMNL00XX00E999"
ciacci.save()
print "created " + str(ciacci)
e21.consultant = ciacci
e44.consultant = ciacci
e21.save()
e44.save()
print "associated " + str(ciacci) + " to " + str(e21)
print "associated " + str(ciacci) + " to " + str(e44)
traino = Contact()
traino.type = "C"
traino.status = "I"
traino.name = "TRAINO"
traino.surname = "TRAINO"
traino.email = ""
traino.code = "TQRNXL00ZX00E999"
traino.save()
示例#58
0
def view_main(request):
    contact = Contact.objects.all().filter(owner=request.user)
    provinces = Province.objects.all()
    sectors = Sector.objects.all()
    ref_files = ContactRefFile.objects.filter(contact=contact)
    cert_files = ContactCertFile.objects.filter(contact=contact)
    form = ContactForm()
    today = datetime.datetime.now()
    events = Event.objects.all().filter(date__gte=today,is_public=True).order_by('date')
    iscrizioni = []
    #print contact
    if len(contact)>0:
        iscrizioni = EventSignup.objects.all().filter(contact=contact[0])
    signups = []
    for s in iscrizioni:
        signups.append(s.event)
    #print signups
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if contact and form.is_valid():
            up_contact = Contact.objects.get(code=contact[0].code)
            province = Province.objects.filter(id=form.cleaned_data["province"])[0]
            work = Work.objects.filter(id=form.cleaned_data["work"])[0]
            up_contact.name=form.cleaned_data["name"]
            up_contact.surname=form.cleaned_data["surname"]
            up_contact.street =  form.cleaned_data["street"]
            up_contact.province = province
            up_contact.birthdate =  form.cleaned_data["birthdate"]
            up_contact.city = form.cleaned_data["city"]
            up_contact.zip = form.cleaned_data["zip"]
            up_contact.civic = form.cleaned_data["civic"]
            up_contact.email = form.cleaned_data["email"]
            up_contact.sex = form.cleaned_data["sex"]
            up_contact.phone_number=form.cleaned_data["phone_number"]
            up_contact.work=work
            up_contact.save()
            messages.success(request, "Informazioni Aggiornate!!")
            return HttpResponseRedirect('/frontend/main')
        elif form.is_valid():
            province = Province.objects.filter(id=form.cleaned_data["province"])[0]
            work = Work.objects.filter(id=form.cleaned_data["work"])[0]

            my_contact = Contact(name=form.cleaned_data["name"], surname=form.cleaned_data["surname"], street=form.cleaned_data["street"], province=province,
                                 birthdate = form.cleaned_data["birthdate"],sex = form.cleaned_data["sex"], city=form.cleaned_data["city"], zip=form.cleaned_data["zip"], civic = form.cleaned_data["civic"], email=form.cleaned_data["email"], phone_number=form.cleaned_data["phone_number"], work=work, code = form.cleaned_data["code"], owner = request.user)
            my_contact.save()

    work_str = "0"
    event_files = []

    if contact:
        contact_entry = contact[0]
        work_str = str(contact_entry.work.id)

        # Search for event files
        files = []
        # print "### Searching for contact_id: %s" % contact_entry.code
        for signup in EventSignup.objects.filter(contact=contact_entry, presence=True):
            # print "### Searching for file for event: %s [%d]" % (signup, signup.event_id)
            for file in EventFile.objects.filter(event=signup.event):
                # print "### Found file: %s" % file
                files.append(file)

        # Not sure why EventSignup allow for duplicate signup per event, as result,
        # need to create a unique list of files per user
        # ToDo: Find out why EventSignup allow for duplicate signup and fix it if bug and remove the create of the unique list below
        event_files = set(files)

    return render_to_response(
        'frontend/main.html',
        {
            "contact": contact,
            "form": form,
            "provinces": provinces,
            "sectors": sectors,
            "events": events,
            "signups": signups,
            "work_str": work_str,
            "ref_files": ref_files,
            "event_files": event_files,
            "cert_files": cert_files
        },
        context_instance=RequestContext(request)
    )
 def test_should_save_an_invalid_model(self):
     contact = Contact()
     contact.save()
     self.assertTrue(Contact.objects.count(), 1)
 def test_should_save_partial_contact(self):
     contact = Contact()
     contact.name = "ben"
     contact.email_address = "brainychip.gmail.com"
     contact.save()
     self.assertEqual(Contact.objects.count(), 1)