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)
def archive(dataset, comment=False): """Archive a dataset""" if dataset.archived: log.warning('Dataset %s already archived, bumping date', dataset) dataset.archived = datetime.now() dataset.save() if comment: log.info('Posting comment for dataset %s...', dataset) lang = current_app.config['DEFAULT_LANGUAGE'] title = current_app.config['ARCHIVE_COMMENT_TITLE'] user_id = current_app.config['ARCHIVE_COMMENT_USER_ID'] if user_id: with i18n.language(lang): msg = theme.render('comments/dataset_archived.txt') message = Message(content=msg, posted_by=user_id) discussion = Discussion(user=user_id, discussion=[message], subject=dataset, title=str(title)) discussion.save() else: log.warning('ARCHIVE_COMMENT_USER_ID not set, skipping comment') log.info('Archived dataset %s', dataset)
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)
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)
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)
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)
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)
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)
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)
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)
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)