Example #1
0
def lang_delete(request):
    """ Function for deleting an associated with this human :py:class:`udata.models.LangSkill` instance.

    :param request.GET['id']: the id of :py:class:`udata.models.LangSkill` instance to be deleted
    :type request.GET['id']: int
    :param request.user.human: current human instance
    :type request.user.human: udata.models.Human

    .. todo:: Need to verify success of operation and give the failure message if the operation is failed.
    """
    id = request.GET.get('id', False)
    if id:
        lang = request.user.human.langskill_set.filter(id=id).first()
        cv_list = request.user.human.cv_set.all()
        lang.delete()
        message = 'The study element was deleted'
        m = Message(title=message,
                    success=True,
                    send=True,
                    human=request.user.human)
        m.save()
        m.parent = m.id
        m.save()
        for cv in cv_list:
            m_ids = cv.generate_messages(m.id)
            cv.generate_pdf(m_ids)
        return _m_response(m.id)
Example #2
0
def works(request):
    human = request.user.human
    id = request.GET.get('id', False)
    inst = request.GET.get('inst', False)
    function = request.GET.get('function', False)
    comments = request.GET.get('comments', None)
    begin_year = request.GET.get('begin_year', False)
    end_year = request.GET.get('end_year', 65535)
    cvs = request.GET.getlist('cvs[]', None)
    if end_year == '':
        end_year = 65535
    message = 'The work element was succesfull added'
    if id:
        work = human.work_set.language(human.lang).filter(id=id).first()
        work.edit(inst, function, comments, begin_year, end_year)
        message = 'The work element was succesfull edited'
    else:
        work = create_work(human, inst, function, begin_year, end_year,
                           comments)
    for cv in work.cv_set.all():
        cv.works.remove(work)
        cv.save()
    for cv_id in cvs:
        cv = human.cv_set.filter(id=cv_id).first()
        if cv:
            cv.works.add(work)
            cv.save()
    m = Message(title=message, success=True, send=True, human=human)
    m.save()
    m.parent = m.id
    m.save()
    for cv in request.user.human.cv_set.all():
        m_ids = cv.generate_messages(m.id)
        cv.generate_pdf(m_ids)
    return _m_response(m.id)
Example #3
0
def lang(request):
    id = request.GET.get('id', False)
    lang = request.GET.get('lang', None)
    read = request.GET.get('read', 1)
    write = request.GET.get('write', 1)
    speak = request.GET.get('speak', 1)
    if id:
        lskill = request.user.human.langskill_set.filter(id=id).first()
        message = 'The language skill "%s" was edit' % lang
    else:
        lskill = LangSkill()
        message = 'The language skill "%s" was added' % lang
    lskill.language = lang
    lskill.read = LangSkillVal.objects.get(id=read)
    lskill.write = LangSkillVal.objects.get(id=write)
    lskill.speak = LangSkillVal.objects.get(id=speak)
    lskill.human = request.user.human
    lskill.save()
    m = Message(title=message, success=True, human=request.user.human)
    m.save()
    m.parent = m.id
    m.send = True
    m.save()
    for cv in request.user.human.cv_set.all():
        m_ids = cv.generate_messages(m.id)
        cv.generate_pdf(m_ids)
    return _m_response(m.id)
Example #4
0
def studies_delete(request):
    """
    Delete the :py:class:`udata.models.Study` with given id if it's associated to current :py:class:`udata.models.Human`.

    :return: success statement ({'success': True})
    :rtype: JsonResponse
    :param request.GET['id']: The id of :py:class:`udata.models.Study` instance to delete
    :type request.GET['id']: int
    :param request.user.human: The current human instance
    :type request.user.human: udata.models.Human

    .. todo:: Need to give success: False response in case of invalid or inexistent `request.GET['id']` or of inexistent `request.user.human`.
    """
    id = request.GET.get('id', False)
    if id:
        study = request.user.human.study_set.filter(id=id).first()
        cv_list = list(study.cv_set.all())
        study.delete()
        message = 'The study element was deleted'
        m = Message(title=message,
                    success=True,
                    send=True,
                    human=request.user.human)
        m.save()
        m.parent = m.id
        m.save()
        for cv in cv_list:
            m_ids = cv.generate_messages(m.id)
            cv.generate_pdf(m_ids)
        return _m_response(m.id)
Example #5
0
def studies(request):
    """ Create or edit existing :py:class:`udata.models.Study` instance.
    The user need to be logged in and have associated :py:class:`udata.models.Human`.
    If we edit a study instance, at the end of this function we regenerate all pdfs of :py:class:`udata.models.CV` associated with it by calling :py:meth:`udata.models.CV.generate_pdf`

    :param request.user.human: The human for how we add or edit this study instance.
    :type request.user.human: udata.models.Human
    :param request.GET['id']: If the id is present, this meen we need to edit a :py:class:`udata.models.Study` instance with given id, if it's associated to current human.
    :type request.GET['id']: int
    :param request.GET['inst']: The name of institution
    :type request.GET['inst']: str
    :param request.GET['faculty']: The name of faculty
    :type request.GET['faculty']: str
    :param request.GET['begin_year']: The beggining year of studies. Not mandatory.
    :type request.GET['begin_year']: int
    :param request.GET['end_year']: The ending year of studies. Not mandatory.
    :type request.GET['end_year']: int
    """
    success = True
    human = request.user.human
    id = request.GET.get('id', False)
    inst = request.GET.get('inst', False)
    faculty = request.GET.get('faculty', False)
    begin_year = request.GET.get('begin_year', False)
    end_year = request.GET.get('end_year', 65535)
    cvs = request.GET.getlist('cvs[]', None)
    if end_year == '':
        end_year = 65535
    message = 'The study element was succesfull added'
    if id:
        study = human.study_set.language(human.lang).filter(id=id).first()
        study.inst = inst
        study.faculty = faculty
        study.begin_year = begin_year
        study.end_year = end_year
        message = 'The study element was succesfull edited'
        study.save()
    else:
        study = create_study(inst=inst,
                             faculty=faculty,
                             end_year=end_year,
                             begin_year=begin_year,
                             human=human)
    for cv in study.cv_set.all():
        cv.studies.remove(study)
        cv.save()
    for cv_id in cvs:
        cv = human.cv_set.filter(id=cv_id).first()
        if cv:
            cv.studies.add(study)
            cv.save()
    m = Message(title=message, success=True, send=True, human=human)
    m.save()
    m.parent = m.id
    m.save()
    for cv in request.user.human.cv_set.all():
        m_ids = cv.generate_messages(m.id)
        cv.generate_pdf(m_ids)
    return _m_response(m.id)
Example #6
0
def cv_send(request):
    id = request.GET.get('id', False)
    if id:
        cv = request.user.human.cv_set.filter(id=id).first()
        subject = request.GET.get('subject', None)
        text = request.GET.get('text', None)
        recipient = request.GET.get('recipient', None)
        lang = request.user.human.lang
        if cv and recipient and subject:
            cv.send_mail(lang, subject, text, recipient)
    m = Message(title='Your e-mail was sent',
                success=True,
                send=True,
                human=request.user.human)
    m.save()
    return _m_response(m.id)
Example #7
0
def abilities_delete(request):
    id = request.GET.get('id', False)
    if id:
        ability = request.user.human.ability_set.filter(id=id).first()
        cv_list = list(ability.cv_set.all())
        ability.delete()
        message = 'The ability element was deleted'
        m = Message(title=message,
                    success=True,
                    send=True,
                    human=request.user.human)
        m.save()
        m.parent = m.id
        m.save()
        for cv in cv_list:
            m_ids = cv.generate_messages(m.id)
            cv.generate_pdf(m_ids)
        return _m_response(m.id)
Example #8
0
def awards(request):
    human = request.user.human
    id = request.GET.get('id', False)
    title = request.GET.get('title', False)
    description = request.GET.get('description', None)
    year = request.GET.get('year', False)
    cvs = request.GET.getlist('cvs[]', None)
    message = 'The award element was succesfull added'
    if id:
        award = human.awards_set.language(human.lang).filter(id=id).first()
        award.title = title
        award.year = year
        award.description = description
        award.save()
        message = 'The award element was succesfull edited'
    else:
        award = Awards.objects.language(human.lang).create(
            human=human, year=year, title=title, description=description)
        award.save()
        for lang in ['en', 'ro', 'ru']:
            if lang != human.lang:
                award.translate(lang)
                award.title = title
                award.description = description
                award.save()
    m = Message(title=message, success=True, send=True, human=human)
    m.save()
    m.parent = m.id
    m.save()
    for cv in award.cv_set.all():
        cv.awards.remove(award)
        cv.save()
    for cv_id in cvs:
        cv = human.cv_set.filter(id=cv_id).first()
        if cv:
            cv.awards.add(award)
            cv.save()
    for cv in human.cv_set.all():
        m_ids = cv.generate_messages(m.id)
        cv.generate_pdf(m_ids)
    return _m_response(m.id)
Example #9
0
def human(request):
    """ Add a human instance. The user is need to be logged in.
    If the human instance exists - edit it. At the end - re-generate all CVs of this human by calling :py:meth:`udata.models.CV.generate_pdf`

    :param request.GET['name']: the name of human
    :type request.GET['name']: str
    :param request.GET['web']: the url of web-site if any
    :type request.GET['web']: str
    :param request.GET['email']: the e-mail
    :type request.GET['email']: str
    :param request.GET['phone']: the phone number
    :type request.GET['phone']: str
    :return: a JsonResponse dict with success statement

    .. todo:: Need to verify fails and response with corresponding message. For now it response allways `{'success': True}`"""

    name = request.GET.get('name', None)
    web = request.GET.get('web', None)
    email = request.GET.get('email', None)
    phone = request.GET.get('phone', None)
    if request.user.human:
        request.user.human.name = name
        request.user.human.web = web
        request.user.human.email = email
        request.user.human.phone = phone
        request.user.human.save()
        m = Message(title="Your general informations was edited",
                    success=True,
                    human=request.user.human)
        m.save()
        m.parent = m.id
        m.send = True
        m.save()
        for cv in request.user.human.cv_set.all():
            m_ids = cv.generate_messages(m.id)
            cv.generate_pdf(m_ids)
        return _m_response(m.id)
Example #10
0
def cv(request):
    human = request.user.human
    id = request.GET.get('id', None)
    title = request.GET.get('title', None)
    studies = request.GET.getlist('studies[]', None)
    works = request.GET.getlist('works[]', None)
    awards = request.GET.getlist('awards[]', None)
    abilities = request.GET.getlist('abilities[]', None)
    if id:
        cv = human.cv_set.filter(id=id).first()
        for study in cv.studies.all():
            cv.studies.remove(study)
        for work in cv.works.all():
            cv.works.remove(work)
        for award in cv.awards.all():
            cv.awards.remove(award)
        for ability in cv.abilities.all():
            cv.abilities.remove(ability)
    else:
        cv = CV(title=title,
                human=request.user.human,
                public=False,
                template=CVTemplate.objects.get(id=3))
        cv.save()
        for lang in ['ro', 'ru', 'en']:
            cv.translate(lang)
            cv.save()
    if not studies and not works and not awards and not abilities:
        studies = human.study_set.all()
        for study in studies:
            cv.studies.add(study)
        works = human.work_set.all()
        for work in works:
            cv.works.add(work)
        awards = human.awards_set.all()
        for award in awards:
            cv.awards.add(award)
        abilities = human.ability_set.all()
        for ability in abilities:
            cv.abilities.add(ability)
    if studies:
        studies = human.study_set.filter(id__in=studies).all()
        for study in studies:
            cv.studies.add(study)
    if works:
        works = human.work_set.filter(id__in=works).all()
        for work in works:
            cv.works.add(work)
    if awards:
        awards = human.awards_set.filter(id__in=awards).all()
        for award in awards:
            cv.awards.add(award)
    if abilities:
        abilities = human.ability_set.filter(id__in=abilities).all()
        for ability in abilities:
            cv.abilities.add(ability)
    cv.title = title
    cv.save()
    m = Message(title='The CV was edited',
                success=True,
                send=True,
                human=human)
    m.save()
    m.parent = m.id
    m.save()
    m_ids = cv.generate_messages(m.id)
    cv.generate_pdf(m_ids)
    return _m_response(m.id)