Esempio n. 1
0
def save(request, contact_type, contact_id = None):

    if contact_id:
        person = Person.objects.get(id=contact_id)
    else:
        person = Person()

    person_form = PersonForm(instance=person)

    if request.method == 'POST':

        person_form = PersonForm(request.POST)

        if person_form.is_valid():
            person = person_form.save(commit=False)
            if contact_id:
                person.id = contact_id
            person.save()

            #if contact_id:
                #person.logs.create(log="Updated contact " + person.first_name + " " + #person.last_name,user=request.user)
            #else:
                #person.logs.create(log="Added contact " + person.first_name + " " + person.last_name,user=request.user)

        formset_list = {'email_formset' : EmailFormSet(instance=person,data=request.POST),
                    'phone_formset' : PhoneFormSet(instance=person,data=request.POST),
                    'im_formset' : InstantMessagingFormSet(instance=person,data=request.POST),
                    'address_formset' : AddressFormSet(instance=person,data=request.POST),
                    'website_formset' : WebsiteFormSet(instance=person,data=request.POST),}

        for formset in formset_list:
            #print formset_list[formset].is_valid()
            if formset_list[formset].is_valid():
                formset_list[formset].save()
                formset_list[formset] = type(formset_list[formset])(instance=person)

    else:
        formset_list = {'email_formset' : EmailFormSet(instance=person),
                    'phone_formset' : PhoneFormSet(instance=person),
                    'im_formset' : InstantMessagingFormSet(instance=person),
                    'address_formset' : AddressFormSet(instance=person),
                    'website_formset' : WebsiteFormSet(instance=person),}

    return render_to_response('contacts/save.html',
                               { 'form' : person_form,
                                 'person' : person,
                                 'formsets' : formset_list, },
                               context_instance=RequestContext(request)
                            )
def create_person(author):
    person_index_page = PersonIndexPage.objects.get()

    drupal_full_name = author["drupal_full_name"]

    author_name_corrected = (author["corrected_family_name"] != ""
                             or author["corrected_given_name"] != "")

    if author_name_corrected:
        given_name = author["corrected_given_name"]
        family_name = author["corrected_family_name"]
    else:
        given_name = author["given_name"]
        family_name = author["family_name"]

    person_exists = Person.objects.filter(
        drupal_full_name=drupal_full_name, ).exists()

    # Avoid duplicates
    if not person_exists:
        try:
            person = Person(given_name=given_name,
                            family_name=family_name,
                            drupal_full_name=drupal_full_name)
        except:
            print("Could not create person: ", drupal_full_name)

        person_index_page.add_child(instance=person)

        person_index_page.save()
    def handle(self, *args, **options):
        with open(options["file"]) as import_file:
            relationships = csv.DictReader(import_file)

            for relationship in relationships:

                contact_ids = extract_contact_ids_from(relationship)

                meeting_exists = Meeting.objects.filter(
                    civicrm_id=contact_ids["meeting_id"], ).exists()

                try:
                    meeting = Meeting.objects.get(
                        civicrm_id=contact_ids["meeting_id"])
                except ObjectDoesNotExist:
                    print(
                        f"Could not find meeting with CiviCRM ID { contact_ids['meeting_id'] }"
                    )
                    pass

                # try:
                #     clerk = Person.objects.get(civicrm_id=contact_ids["clerk_id"])
                # except ObjectDoesNotExist:
                #     print(
                #         f"Could not find person with CiviCRM ID { contact_ids['clerk_id'] }"
                #     )
                #     pass

                family_name, given_name = extract_given_and_family_name(
                    relationship["Contact A"])

                person_exists = Person.objects.filter(
                    given_name=given_name,
                    family_name=family_name,
                ).exists()

                if person_exists:
                    person = Person.objects.get(
                        given_name=given_name,
                        family_name=family_name,
                    )
                else:
                    person = Person(
                        given_name=given_name,
                        family_name=family_name,
                    )

                    # Get the only instance of Person Index Page
                    person_index_page = PersonIndexPage.objects.get()

                    # Add person to site page hiererchy
                    person_index_page.add_child(instance=person)
                    person_index_page.save()

                print(meeting)
                print(person)

                meeting_presiding_clerk = MeetingPresidingClerk(
                    meeting=meeting,
                    person=person,
                )

                meeting_presiding_clerk.save()

        self.stdout.write("All done!")
Esempio n. 4
0
def execute(srv, usr, pwd):

    # server = Server('srv1.test.ru')
    server = Server(srv)
    conn = Connection(server, auto_bind=True, user=usr, password=pwd)

    #'userAccountControl' can have these values: 512 	Enabled Account; 514 	Disabled Account;

    # conn.search('ou=АСУ,dc=test,dc=ru','(&(objectClass=person)(userAccountControl=66048))',SUBTREE, attributes =['cn','proxyAddresses','department','sAMAccountName', 'displayName', 'telephoneNumber', 'ipPhone', 'streetAddress','title','manager','objectGUID','company','lastLogon'])
    conn.search(
        "dc=test,dc=ru",
        "(&(objectCategory=Person)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))",
        SUBTREE,
        attributes=[
            "cn",
            "proxyAddresses",
            "department",
            "sAMAccountName",
            "displayName",
            "telephoneNumber",
            "ipPhone",
            "streetAddress",
            "title",
            "manager",
            "objectGUID",
            "company",
            "lastLogon",
        ],
    )

    # get or create default organization
    try:
        org = Organization.objects.get(name="Не указано")
    except:
        org = Organization(name="Не указано")
        org.save()

    # get or create default organization
    try:
        dep = Subdivision.objects.get(name="Не указано")
    except:
        dep = Subdivision(organization=org, name="Не указано")
        dep.save()

    for entry in conn.entries:
        print("")
        print(" -------------------------- ")
        print("entry.cn", entry.cn)
        # print('entry.objectGUID', entry.objectGUID)

        # search person in contact app
        try:
            displayName = entry.displayName
        except:
            displayName = entry.cn
        print("displayName", displayName)
        try:
            person_obj = Person.objects.get(ad_objectguid=entry.objectGUID)
        except:
            person_obj = None
        print("person_obj", person_obj)
        if person_obj:
            person_obj.name = displayName
            # person_obj.ad_objectguid = entry.objectGUID
            person_obj.save()
        else:
            person_obj = Person(name=displayName, ad_objectguid=entry.objectGUID)
            person_obj.save()
        print("Человек: ", person_obj)
        try:
            ldapinfo_obj = LdapInfo.objects.get(person=person_obj)
        except:
            ldapinfo_obj = None
        # add AD sAMAccountName
        if ldapinfo_obj:
            try:
                ldapinfo_obj.samaccountname = entry.sAMAccountName
                ldapinfo_obj.save()
            except:
                pass
        else:
            try:
                sAMAccountName = LdapInfo(person=person_obj, samaccountname=entry.sAMAccountName)
                sAMAccountName.save()
            except:
                pass
        # add AD lastLogon
        if ldapinfo_obj:
            try:
                ldapinfo_obj.lastlogon = convert_ad_timestamp(int(entry.lastLogon.value))
                ldapinfo_obj.save()
            except:
                pass
        else:
            try:
                lastLogon = LdapInfo(person=person_obj, lastlogon=convert_ad_timestamp(int(entry.lastLogon.value)))
                lastLogon.save()
            except:
                pass
        # delete all person phones in contact app
        phones = Phone.objects.filter(person=person_obj)
        if phones:
            phones.delete()
        # add phones to contact  from Active Directory user entry
        try:
            newphone = Phone(person=person_obj, number=entry.telephoneNumber)
            newphone.save()
        except:
            pass
        try:
            newphone = Phone(person=person_obj, number=entry.ipPhone)
            newphone.save()
        except:
            pass
        # delete all emails in contact app
        emails = Email.objects.filter(person=person_obj)
        if emails:
            emails.delete()
        # add emails to contact app from Active Directory user entry
        try:
            new_email = Email(person=person_obj, address=entry.proxyAddresses)
            new_email.save()
        except:
            pass
        # get organization
        try:
            entry_company = entry.company
        except:
            entry_company = None
        organization = None
        if entry_company:
            try:
                organization_obj = Organization.objects.get(name=entry.company)
            except:
                organization_obj = Organization(name=entry.company)
                organization_obj.save()
        else:
            organization_obj = org
        print("Организация: ", organization_obj.name)
        entry_company = None
        # get or create subdivision
        try:
            entry_subdiv = entry.department
        except:
            entry_subdiv = None
        subdiv = None
        if entry_subdiv:
            print("len entry.department %s: %s" % (entry.department, len(entry.department)))
            try:
                subdiv = Subdivision.objects.get(organization=organization_obj, name=entry.department)
            except:
                subdiv = Subdivision(organization=organization_obj, name=entry.department)
                subdiv.save()
        else:
            subdiv = dep
        print("Подразделение: ", subdiv.name)
        entry_subdiv = None
        # get person position
        try:
            position = entry.title
        except:
            position = None
        print("Должность", position)
        # create employee
        employee = None
        try:
            employee = Employee.objects.get(
                organization=organization_obj, subdivision=subdiv, person=person_obj, position=position
            )
            print("Найден работник")
        except:
            employee = Employee(organization=organization_obj, subdivision=subdiv, person=person_obj, position=position)
            employee.save()
            print("Создан работник")
Esempio n. 5
0
    def post(self, request):
        message_fr = "Merci pour votre vote Bonne chance pour la tombola RDV le 18 février 2021 sur 2M"
        message_ar = "شكرا لتصويتكم حظ موفق موعدنا يوم 18 فبراير 2021 على قناة 2M  "
        status = "success"

        data = request.data

        temp_person = Person.objects.all().filter(email=data["email"])


        config_demo = Config.objects.all().filter(type="demo", active=True)
        site_demo = False
        if config_demo.count() == 1:
            site_demo = True

        if temp_person.count() > 0: # and site_demo == False
            message_fr = "Vote non enregistré. Vous avez déjà voté pour votre candidat préféré."
            message_ar = "لم يتم تسجيل التصويت. لقد قمتم بالفعل بالتصويت لمرشحكم المفضل. "
            return Response({"status": "error", "message_fr": message_fr, "message_ar": message_ar, "uid_ref": "",
                             "site_demo": site_demo}, content_type="application/json", status=200)

        uid_ref = None
        candidat = Candidat.objects.all().filter(uid=data["candidat"])
        config_vote = Config.objects.all().filter(type="vote", active=True)
        if candidat.count() == 1 and config_vote.count() > 0:
            candidat = candidat[0]




            uid_ref = self.generateUID() + "-" + self.generateUID()
            person = Person()
            person.name = data["name"]
            person.email = data["email"]
            person.phone = str(data["phone"])
            person.uid = self.generateUID()
            person.uid_ref = uid_ref
            person.accept_reglement = True

            person.save()

            vote = Vote()
            vote.candidat = candidat
            vote.person = person
            vote.uid = self.generateUID()
            vote.project = candidat.project

            vote.save()

            candidat.total_votes = candidat.total_votes + 1
            candidat.save()
        else:
            if config_vote.count() == 0 :
                status = "error"
                message_fr = "Le vote est fermé, Merci pour votre visite."
                message_ar = "لقد تم إغلاق التصويت، شكرا لزيارتكم."
            else:
                status = "error"
                message_fr = "Candidat n'existe plus, Merci de réessayer plus tard"
                message_ar = "لم يعد المرشح موجودًا ، يرجى المحاولة مرة أخرى لاحقًا"


        return Response({ "status" : status, "message_fr" : message_fr, "message_ar" : message_ar, "uid_ref" : uid_ref, "site_demo" : site_demo}, content_type="application/json", status=200)
Esempio n. 6
0
    def handle(self, *args, **options):
        with open(options["file"]) as import_file:
            # Get index pages for use when saving entities
            meeting_index_page = MeetingIndexPage.objects.get()
            organization_index_page = OrganizationIndexPage.objects.get()
            person_index_page = PersonIndexPage.objects.get()

            authors = csv.DictReader(import_file)

            for author in authors:
                # Check for entity type among:
                # - Meeting
                # - Organization
                # - Person
                # with the condition to check for corrections to person names
                author_is_meeting = author["meeting_name"] != ""
                author_is_organization = author["organization_name"] != ""
                author_is_person = (author["family_name"] != ""
                                    or author["given_name"] != ""
                                    or author["corrected_family_name"] != ""
                                    or author["corrected_given_name"] != "")

                if author_is_meeting:
                    meeting_exists = Meeting.objects.filter(
                        title=author["meeting_name"], ).exists()

                    # Don't create duplicate meetings
                    if not meeting_exists:
                        meeting = Meeting(
                            title=author["meeting_name"],
                            drupal_full_name=author["drupal_full_name"],
                        )

                        meeting_index_page.add_child(instance=meeting)

                        meeting_index_page.save()
                elif author_is_organization:
                    organization_exists = Organization.objects.filter(
                        title=author["organization_name"], ).exists()

                    # Avoid duplicates
                    if not organization_exists:
                        organization = Organization(
                            title=author["organization_name"],
                            drupal_full_name=author["drupal_full_name"],
                        )

                        organization_index_page.add_child(
                            instance=organization)

                        organization_index_page.save()
                elif author_is_person:
                    author_name_corrected = (
                        author["corrected_family_name"] != ""
                        or author["corrected_given_name"] != "")

                    if author_name_corrected:
                        given_name = author["corrected_given_name"]
                        family_name = author["corrected_family_name"]
                    else:
                        given_name = author["given_name"]
                        family_name = author["family_name"]

                    person_exists = Person.objects.filter(
                        given_name=given_name,
                        family_name=family_name,
                    ).exists()

                    # Avoid duplicates
                    if not person_exists:
                        person = Person(
                            given_name=given_name,
                            family_name=family_name,
                            drupal_full_name=author["drupal_full_name"],
                        )

                        person_index_page.add_child(instance=person)

                        person_index_page.save()
                else:
                    print("unknown")

        self.stdout.write("All done!")
Esempio n. 7
0
def execute(srv, usr, pwd):

    #server = Server('srv1.test.ru')
    server = Server(srv)
    conn = Connection(server, auto_bind=True, user=usr, password=pwd)

    #'userAccountControl' can have these values: 512 	Enabled Account; 514 	Disabled Account;

    #conn.search('ou=АСУ,dc=test,dc=ru','(&(objectClass=person)(userAccountControl=66048))',SUBTREE, attributes =['cn','proxyAddresses','department','sAMAccountName', 'displayName', 'telephoneNumber', 'ipPhone', 'streetAddress','title','manager','objectGUID','company','lastLogon'])
    conn.search(
        'dc=test,dc=ru',
        '(&(objectCategory=Person)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))',
        SUBTREE,
        attributes=[
            'cn', 'proxyAddresses', 'department', 'sAMAccountName',
            'displayName', 'telephoneNumber', 'ipPhone', 'streetAddress',
            'title', 'manager', 'objectGUID', 'company', 'lastLogon'
        ])

    #get or create default organization
    try:
        org = Organization.objects.get(name="Не указано")
    except:
        org = Organization(name='Не указано')
        org.save()

    #get or create default organization
    try:
        dep = Subdivision.objects.get(name="Не указано")
    except:
        dep = Subdivision(organization=org, name="Не указано")
        dep.save()

    for entry in conn.entries:
        print('')
        print(' -------------------------- ')
        print('entry.cn', entry.cn)
        #print('entry.objectGUID', entry.objectGUID)

        #search person in contact app
        try:
            displayName = entry.displayName
        except:
            displayName = entry.cn
        print('displayName', displayName)
        try:
            person_obj = Person.objects.get(ad_objectguid=entry.objectGUID)
        except:
            person_obj = None
        print('person_obj', person_obj)
        if person_obj:
            person_obj.name = displayName
            #person_obj.ad_objectguid = entry.objectGUID
            person_obj.save()
        else:
            person_obj = Person(name=displayName,
                                ad_objectguid=entry.objectGUID)
            person_obj.save()
        print('Человек: ', person_obj)
        try:
            ldapinfo_obj = LdapInfo.objects.get(person=person_obj)
        except:
            ldapinfo_obj = None
        #add AD sAMAccountName
        if ldapinfo_obj:
            try:
                ldapinfo_obj.samaccountname = entry.sAMAccountName
                ldapinfo_obj.save()
            except:
                pass
        else:
            try:
                sAMAccountName = LdapInfo(person=person_obj,
                                          samaccountname=entry.sAMAccountName)
                sAMAccountName.save()
            except:
                pass
        #add AD lastLogon
        if ldapinfo_obj:
            try:
                ldapinfo_obj.lastlogon = convert_ad_timestamp(
                    int(entry.lastLogon.value))
                ldapinfo_obj.save()
            except:
                pass
        else:
            try:
                lastLogon = LdapInfo(person=person_obj,
                                     lastlogon=convert_ad_timestamp(
                                         int(entry.lastLogon.value)))
                lastLogon.save()
            except:
                pass
        #delete all person phones in contact app
        phones = Phone.objects.filter(person=person_obj)
        if phones:
            phones.delete()
        #add phones to contact  from Active Directory user entry
        try:
            newphone = Phone(person=person_obj, number=entry.telephoneNumber)
            newphone.save()
        except:
            pass
        try:
            newphone = Phone(person=person_obj, number=entry.ipPhone)
            newphone.save()
        except:
            pass
        #delete all emails in contact app
        emails = Email.objects.filter(person=person_obj)
        if emails:
            emails.delete()
        #add emails to contact app from Active Directory user entry
        try:
            new_email = Email(person=person_obj, address=entry.proxyAddresses)
            new_email.save()
        except:
            pass
        #get organization
        try:
            entry_company = entry.company
        except:
            entry_company = None
        organization = None
        if entry_company:
            try:
                organization_obj = Organization.objects.get(name=entry.company)
            except:
                organization_obj = Organization(name=entry.company)
                organization_obj.save()
        else:
            organization_obj = org
        print('Организация: ', organization_obj.name)
        entry_company = None
        #get or create subdivision
        try:
            entry_subdiv = entry.department
        except:
            entry_subdiv = None
        subdiv = None
        if entry_subdiv:
            print("len entry.department %s: %s" %
                  (entry.department, len(entry.department)))
            try:
                subdiv = Subdivision.objects.get(organization=organization_obj,
                                                 name=entry.department)
            except:
                subdiv = Subdivision(organization=organization_obj,
                                     name=entry.department)
                subdiv.save()
        else:
            subdiv = dep
        print('Подразделение: ', subdiv.name)
        entry_subdiv = None
        #get person position
        try:
            position = entry.title
        except:
            position = None
        print('Должность', position)
        #create employee
        employee = None
        try:
            employee = Employee.objects.get(organization=organization_obj,
                                            subdivision=subdiv,
                                            person=person_obj,
                                            position=position)
            print('Найден работник')
        except:
            employee = Employee(organization=organization_obj,
                                subdivision=subdiv,
                                person=person_obj,
                                position=position)
            employee.save()
            print('Создан работник')