示例#1
0
def fetch_startup_service(owner, context):
    """get the startup that assign to the requested user and get the custom leader that added by user
    
    Arguments:
        owner {OBEJCET} -- requested user
        context {DICT} -- a dictionary of context to add it some more context
    
    Returns:
        OBJECT -- returns the determined startup
    """
    db_startup = get_startup_service(owner=owner)
    the_time = JalaliDateTime.now().to_gregorian()
    try:
        user_mentor = get_startup_service(owner=owner,
                                          rahbar__mentor_user=True)
    except:
        user_mentor = None

    context.update({
        'the_time': the_time,
        'user_mentor': user_mentor,
        'db_startup': db_startup,
    })

    return db_startup
示例#2
0
def team_instance_service(user, context, trak_info):
    """get the requested user info / startup/ team members if available
    
    Arguments:
        user {OBJECT} -- requsted user
        context {DICT} -- a dictionary to assign more contextes
    
    Returns:
        TUPLE -- returns tuple of context valuse to use the in page
    """
    teams = TeamMember.objects.filter(
        pk__in=user.userprofile.team_member.all())
    leader_form = LeaderUserForm(instance=user)
    userprofile_form = LeaderForm(instance=user.userprofile)
    db_startup = get_startup_service(owner=user)
    form_start = StartUpForm5(instance=db_startup)

    status = f"وارد مرحله تیم استارت اپ {db_startup.title} شد"
    status_of_user(trak_info, status, 'import-team-step')
    context.update({
        'teams': teams,
        'leader_form': leader_form,
        'userprofile_form': userprofile_form,
        'form_start': form_start,
        'db_startups': db_startup
    })
    return db_startup
示例#3
0
def create_event_service(form, owner, track_info):
    """create new event with type of investor and get the user throw Investor user id

    Arguments:
        form {POST Method} -- get entered values
        owner {OBJECT} -- requested user to define the maker
        track_info {DICT} -- dictionary contains of user id and ip to update status_of_user

    Returns:
        BOOLEAN -- returns True if everything goes well
    """
    the_event = models.TheEvent.objects.create(owner=owner, th_type='investor')

    if form.getlist('investor[]'):
        for person_id in form.getlist('investor[]'):
            if not person_id:
                continue
            user_inv = Investors.objects.filter(
                user__pk=int(person_id)).first()
            event = models.CreateEvent.objects.create_by_model(
                instance=user_inv)
            the_event.c_event.add(event)
            the_event.save()
            for x in range(len(form.getlist(f'startup-{person_id}'))):
                if not re.search(r'\d',
                                 form.getlist(f'startup-{person_id}')[x],
                                 re.I):
                    continue

                # try:
                schedule, created = models.StartupTime.objects.get_or_create(
                    the_event=the_event,
                    the_date=datetime.fromtimestamp(
                        float(form.getlist('date_meeting')[x]) / 1000),
                    from_time=datetime.fromtimestamp(
                        float(form.getlist('meeting_time_s')[x]) / 1000),
                    to_time=datetime.fromtimestamp(
                        float(form.getlist('meeting_time_e')[x]) / 1000))
                models.StartupsEvent.objects.create(
                    event=event,
                    startup=get_startup_service(
                        pk=int(form.getlist(f'startup-{person_id}')[x])),
                    schedule=schedule)

                # except:
                #     pass

                try:
                    status = f"برای سرمایه گذار {event.investor.user.first_name} {event.investor.user.last_name} برای استارت اپ {startup} ایونت ساخت"
                    status_of_user(track_info, status, 'create-event-investor')
                    create_notification(event.investor.user,
                                        'create-event-investor', startup)
                    create_notification(startup.owner, 'create-event-investor',
                                        event.investor.user)
                except:
                    pass

    return True
示例#4
0
def edit_offerto_leader_get_create(form, the_event, track_info):
    """update or create the LeaderModel and CreateEvent records

    Arguments:
        form {POST Method} -- to get new entered values
        the_event {OBJECT} -- TheEvent objecte that got by id
        track_info {DICT} -- dictionary contains of user id and ip to update status_of_user

    Returns:
        BOOLEAN -- returns True if everything goes well
    """
    if form.getlist('leader[]'):
        create_event_id = (c_e for c_e in form.getlist('c_e_id'))
        for person_id in form.getlist('leader[]'):
            if not re.search(r'\d', person_id, re.I): continue
            leader_id = (c_e for c_e in form.getlist(f'lead_pk-{person_id}'))
            user_leader = get_user_service(pk=int(person_id))
            try:
                event = get_create_event_service(
                    pk=int(create_event_id.__next__()))
                event.content_object = user_leader
                event.save()
            except:
                event = models.CreateEvent.objects.create_by_model(
                    instance=user_leader)
            finally:
                the_event.c_event.add(event)
                the_event.save()

                for st in form.getlist(f'startup-{person_id}'):
                    if not re.search(r'\d', st, re.I): continue
                    start = get_startup_service(pk=int(st))
                    try:
                        leader = models.LeaderModel.objects.get(
                            pk=int(leader_id.__next__()))
                        leader.startup = start
                        leader.save()
                    except:
                        models.LeaderModel.objects.create(
                            event=event,
                            startup=start,
                        )

                    status = f"ملاقات {the_event.pk} با راهبر {user_leader.first_name} {user_leader.last_name} به استارتاپ {get_startup_service(pk=int(st)).title} تغییر کرد"
                    status_of_user(track_info, status, 'edit-offerto-leader')
                    create_notification(user_leader, 'edit-offerto-leader',
                                        start)
                    create_notification(start.owner, 'edit-offerto-leader',
                                        user_leader)
    return True
示例#5
0
def presentation_service(owner, track_info):
    """get the current users startup and a form with startup instance
    
    Arguments:
        owner {OBJECT} -- requested user
        track_info {DICT} -- dictionary contains of user id and ip to update status_of_user
    
    Returns:
        FORM -- returns startup instances as form
    """
    db_startup = get_startup_service(owner=owner)
    status = f"وارد صفحه پیج دک استارت اپ {db_startup.title} شد"
    status_of_user(track_info, status, 'import-presentation-step')
    startup_form = StartUpForm3(instance=db_startup)
    return startup_form, db_startup
示例#6
0
def upload_video_service(owner, track_info):
    """allow user to upload a vidoe to add more info about him/her startup
    
    Arguments:
        owner {OBJECT} -- requested user
        track_info {DICT} -- dictionary contains of user id and ip to update status_of_user
    
    Returns:
        FORM -- returns instance of startup form
    """
    db_startup = get_startup_service(owner=owner)
    status = f"وارد صفحه اپلود استارت اپ {db_startup.title} شد"
    status_of_user(track_info, status, 'import-upload-step')
    form = StartUpForm2(instance=db_startup)
    return db_startup, form
示例#7
0
def presentation_instance_file(id, th_file):
    """get the startup finance forecast/ peachdeck file if available
    
    Arguments:
        id {INT} -- the id of the chosen startup
        th_file {STRING} -- check if the file is for pdeck or finance forecast
    
    Returns:
        TUPLE -- returns db_startup objects and startup from 
    """
    db_startup = get_startup_service(pk=id)
    if th_file == 'mali':
        startup_form = StartUpForm6(instance=db_startup)
    elif th_file == 'pgdeck':
        startup_form = StartUpForm4(instance=db_startup)
    return db_startup, startup_form
示例#8
0
def time_event_startup(startup):
    """show the time of meeting if accepted
    
    Arguments:
        startup {INT} -- the id of selected startup
    
    Returns:
        OBJECT -- return the startup event
    """
    from theevent import models
    from startups.object import get_startup_service
    try:
        startups = get_startup_service(pk=startup)
        the_time = models.StartupsEvent.objects.filter(
            startup=startups).distinct()
    except:
        the_time = None
    return the_time
示例#9
0
def wants_to_meet_service(owner, track_info, ajax_data):
    """allow startup to reserve a time to meet coaches

    Arguments:
        owner {OBJECT} -- requested user that own a startup
        track_info {DICT} -- dictionary contains of user id and ip to update status_of_user
        ajax_data {DICT} -- a dictionary that contains create event id and TheEvent id and CoachEvent id to ensuer that every startup can only reserve 2 meeting every event

    Returns:
        DICT -- returns dictionary of data for ajax
    """
    data = {
        'meeting_id': ajax_data.get('c_id'),
        'coach_id': ajax_data.get('coach_id'),
        'the_event': ajax_data.get('th_pk'),
    }
    th_startup = get_startup_service(owner=owner)
    cat = get_create_event_service(pk=ajax_data.get('coach_id'))
    the_event = models.TheEvent.objects.get(pk=ajax_data.get('th_pk'))
    try:
        wants = models.WantsMeet.objects.get(the_event=the_event)
        wants.event_counter += 1
        wants.save()
    except:
        wants = models.WantsMeet.objects.create(the_event=the_event,
                                                startup=th_startup,
                                                c_event=cat)

    status = f"استارتاپ {th_startup.title} تمایل به رزرو وقت با مربی {cat.content_object.first_name} {cat.content_object.last_name} دارد"
    status_of_user(track_info, status, 'assigne-startup-to-leader')
    create_notification(th_startup.owner, 'assigne-startup-to-leader',
                        cat.content_object)
    create_notification(cat.content_object, 'assigne-startup-to-leader',
                        th_startup)

    coach = models.CoachEvent.objects.get(pk=ajax_data.get('c_id'))
    coach.startup = th_startup
    coach.th_time = 2
    coach.save()
    return data
示例#10
0
def offerto_leader_service(owner, form, track_info):
    """create an event with the type of leader
       - get the list of leaders ids and assgin CreateEvent by their model and id (GenericForeignKey)
         and then assgin them to TheEvent object
       - get the list of startups ids and create LeaderModel object with user model assgin to it(the choosen leader)
    
    Arguments:
        owner {OBJECT} -- requested user (the maker of this event)
        form {POST Method} -- to get ids from the maker
    
    Returns:
        BOOLEAN -- returns True if everything goes well
    """
    the_event = models.TheEvent.objects.create(owner=owner, th_type='leader')
    if form.getlist('leader[]'):
        for person_id in form.getlist('leader[]'):
            if not re.search(r'\d', person_id, re.I): continue
            user_leader = get_user_service(pk=int(person_id))
            event = models.CreateEvent.objects.create_by_model(
                instance=user_leader, )
            the_event.c_event.add(event)
            the_event.save()
            for st in form.getlist(f'startup-{person_id}'):
                if not re.search(r'\d', st, re.I):
                    continue
                startup = get_startup_service(pk=int(st))
                models.LeaderModel.objects.create(
                    event=event,
                    startup=startup,
                )
                status = f"استارتاپ {startup.title} به راهبر {user_leader} پیشنهاد داده شد"
                status_of_user(track_info, status, 'assigne-startup-to-leader')
                create_notification(startup.owner, 'assigne-startup-to-leader',
                                    user_leader)
                create_notification(user_leader, 'assigne-startup-to-leader',
                                    startup)
        return True
示例#11
0
def finish_service(user, session, track_info):
    """when user reach to this stage the status of startup will be change to pending
       and some emails will be sent to startups owner, leader, team members, accelerator
    
    Arguments:
        user {OBJECT} -- requested user
        session {SESSION} -- to get user phone if it's deleted for the next stage
        track_info {DICT} -- dictionary contains of user id and ip to update status_of_user
    
    Returns:
        BOOLEAN -- returns True if everything goes well
    """

    the_startup = get_startup_service(owner=user)
    if the_startup.status in ('pending', 'not_complete'):
        the_startup.status = 'pending'
        the_startup.save()
    to = the_startup.owner.email
    if not "email_sent" in session:
        template = 'email/active_email.html'
        the_message = f"""
مدیر محترم تیم {user.first_name} {user.last_name} 
از اینکه طرح خود را در سامانه 100استارت‌آپ ثبت کردید متشکریم، شما می‌توانید وضعیت تیم خود را از سامانه پیگیری نمایید.
"""
        sub = 'ثبت استارت آپ'

        Thread(target=send_email,
               args=(track_info, ),
               kwargs={
                   "to": [to],
                   'first_name': user.first_name,
                   'last_name': user.last_name,
                   'template': template,
                   'sub': sub,
                   'the_messages': the_message
               }).start()
        for x in TeamMember.objects.filter(startup=the_startup):
            if not x.t_email:
                continue
            sub = 'عضویت در استارت اپ'
            the_message = """سلام
استارتاپ شما در سامانه 100استارت‌آپ به ثبت رسیده است، امیدواریم با همراهی هم، بتوانیم مسیر موفقیت را به سرعت طی کنیم."""
            Thread(target=send_email,
                   args=(track_info, ),
                   kwargs={
                       "to": [x.t_email],
                       'first_name': x.t_first_name,
                       'last_name': x.t_last_name,
                       'is_team': True,
                       'template': template,
                       'sub': sub,
                       'the_messages': the_message
                   }).start()
        if the_startup.rahbar:
            sub = 'راهبر پیشنهادی استارت اپ'
            the_message = f"""راهبر گرامی، {the_startup.rahbar.first_name} {the_startup.rahbar.last_name} 
تیم {the_startup.title}طرح خود را در سامانه 100استارت‌آپ ثبت نموده‌است،
و شما بعنوان راهبر می‌توانید وضعیت این تیم را از سامانه پیگیری نمایید.
امیدواریم با کمک های شما مسیر سخت موفقیت هموار شود.
ممنون از همراهیتان
"""
            Thread(target=send_email,
                   args=(track_info, ),
                   kwargs={
                       "to": [the_startup.rahbar.email],
                       'is_team': True,
                       'first_name': the_startup.rahbar.first_name,
                       'last_name': the_startup.rahbar.last_name,
                       'template': template,
                       'sub': sub,
                       'the_messages': the_message
                   }).start()
        elif the_startup.rahbar_asli:
            sub = 'راهبر پیشنهادی استارت اپ'
            the_message = f"""شتابدهنده محترم {the_startup.rahbar_asli.first_name} {the_startup.rahbar_asli.last_name} 
تیم {the_startup.title} طرح خود را در سامانه 100استارت‌آپ ثبت نموده‌است،
و شما بعنوان شتابدهنده می‌توانید وضعیت این تیم را از سامانه پیگیری نمایید.
ممنون از همراهیتان"""
            Thread(target=send_email,
                   args=(track_info, ),
                   kwargs={
                       "to": [the_startup.rahbar_asli.email],
                       'is_team': True,
                       'first_name': the_startup.rahbar_asli.first_name,
                       'last_name': the_startup.rahbar_asli.last_name,
                       'template': template,
                       'sub': sub,
                       'the_messages': the_message
                   }).start()
        session['email_sent'] = True
        status = "پایان ثبت استارت اپ و ارسال ایمیل"
        status_of_user(track_info, status, 'import-finish-step')
    return True
示例#12
0
def edit_get_create_event(the_event, form, track_info):
    """get the id of CreateEvent object and StartupEvent and StartupTime if there is instances and update it else create new

    Arguments:
        the_event {OBJECT} -- to add new CreateEvents to TheEvent object
        form {POST Method} -- to get entred values
        track_info {DICT} -- dictionary contains of user id and ip to update status_of_user

    Returns:
        BOOLEAN -- returns True if everything goes well
    """
    create_event_id = (c_e for c_e in form.getlist('c_e_id'))
    if form.getlist('investor[]'):
        for person_id in form.getlist('investor[]'):
            if not person_id: continue
            startup_event = (s_e for s_e in form.getlist('startup_event_id'))
            the_date = (s_d for s_d in form.getlist('date_meeting'))
            from_time = (f_t for f_t in form.getlist('meeting_time_s'))
            to_time = (t_t for t_t in form.getlist('meeting_time_e'))
            startuptime_id = (sut for sut in form.getlist('startuptime'))
            user_inv = Investors.objects.filter(user__pk=int(person_id))
            try:
                event = get_create_event_service(
                    pk=int(create_event_id.__next__()))
                event.content_object = user_inv
                event.save()
            except:
                event = models.CreateEvent.objects.create_by_model(
                    instance=user_inv)
            finally:
                the_event.c_event.add(event)
                the_event.save()

            for startup_id in form.getlist(f'startup-{person_id}'):
                if not re.search(r'\d', startup_id, re.I): continue
                startup = get_startup_service(pk=int(startup_id))

                try:
                    times = models.StartupTime.objects.get(
                        pk=startuptime_id.__next__())
                    times.the_date = datetime.fromtimestamp(
                        float(the_date.__next__()) / 1000)
                    times.from_time = datetime.fromtimestamp(
                        float(from_time.__next__()) / 1000)
                    times.to_time = datetime.fromtimestamp(
                        float(to_time.__next__()) / 1000)
                    times.save()

                except:
                    models.StartupTime.objects.create(
                        the_event=the_event,
                        the_date=datetime.fromtimestamp(
                            float(the_date.__next__()) / 1000),
                        from_time=datetime.fromtimestamp(
                            float(from_time.__next__()) / 1000),
                        to_time=datetime.fromtimestamp(
                            float(to_time.__next__()) / 1000),
                    )
                finally:
                    try:
                        start_events = models.models.StartupsEvent.objects.get(
                            pk=int(startup_event.__next__()))
                        start_events.schedule = times
                        start_events.save()
                    except:
                        start_events = models.models.StartupsEvent.objects.create(
                            event=event, schedule=times, startup=startup)

                    try:
                        status = f"برای سرمایه گذار {event.investor.user.first_name} {event.investor.user.last_name} یک ایونت برای استارت اپ {startup} بروزرسانی کرد"
                        status_of_user(track_info, status)
                        create_notification(event.investor.user,
                                            'create-event-investor', startup)
                        create_notification(startup.owner,
                                            'create-event-investor',
                                            event.investor.user)

                    except:
                        pass
    return True