def autorita_ok(cls, piano, tipologia, contatto=True): _res = False _has_tipologia = False if piano.soggetto_proponente and \ piano.autorita_competente_vas.all().count() > 0 and \ piano.autorita_istituzionali.all().count() >= 0 and \ piano.altri_destinatari.all().count() >= 0 and \ piano.soggetti_sca.all().count() >= 0: for _c in piano.soggetti_sca.all(): _tipologia = _c.tipologia if contatto else \ Contatto.attore(_c.user, tipologia=TIPOLOGIA_ATTORE[tipologia]) if _tipologia.upper() == tipologia.upper(): _has_tipologia = True break if not _has_tipologia: for _c in piano.autorita_istituzionali.all(): _tipologia = _c.tipologia if contatto else \ Contatto.attore(_c.user, tipologia=TIPOLOGIA_ATTORE[tipologia]) if _tipologia.upper() == tipologia.upper(): _has_tipologia = True break if not _has_tipologia: for _c in piano.altri_destinatari.all(): _tipologia = _c.tipologia if contatto else \ Contatto.attore(_c.user, tipologia=TIPOLOGIA_ATTORE[tipologia]) if _tipologia.upper() == tipologia.upper(): _has_tipologia = True break _res = _has_tipologia return _res
def resolve_attore(self, info, **args): organization = info.context.session.get('organization', None) token = info.context.session.get('token', None) _attore = None if token: _attore = Contatto.attore(self, token=token) elif organization: _attore = Contatto.attore(self, organization=organization) return _attore
def __call__(self, request): if not request.user.is_authenticated or \ not request.user.is_active or \ request.user.is_anonymous: self.redirect_to_login(request) else: token = request.session[ 'token'] if 'token' in request.session else None if token: try: _t = Token.objects.get(key=token) if _t.is_expired(): if not request.user.is_superuser: return self.redirect_to_login(request) except BaseException: traceback.print_exc() organization = request.session[ 'organization'] if 'organization' in request.session else None if not organization: if not request.user.is_superuser: return self.redirect_to_login(request) else: try: Organization.objects.get(code=organization) except BaseException: traceback.print_exc() if not request.user.is_superuser: return self.redirect_to_login(request) attore = request.session[ 'attore'] if 'attore' in request.session else None if not attore: try: if token: attore = Contatto.attore(request.user, token=token) elif organization: attore = Contatto.attore(request.user, organization=organization) request.session['attore'] = attore except BaseException: traceback.print_exc() if not attore: if not request.user.is_superuser: return self.redirect_to_login(request) # ------------------------ response = self.get_response(request) # ------------------------ # Code to be executed for each request/response after # the view is called. return response
def is_actor_for_token(token, actor): _attore = None if token and \ (isinstance(token, str) or isinstance(token, Token)): token = Token.objects.get(key=token) _attore = Contatto.attore(token.user, token=token.key) if _attore is None: return False else: return (_attore.lower() == actor.lower())
def is_actor_for_organization(user_info, actor): _user = user_info[0] _organization = user_info[1] _attore = None if _user and \ _organization and isinstance(_organization, Organization): _attore = Contatto.attore(_user, organization=_organization.code) if _attore is None: return False else: return (_attore == actor)
def mutate_and_get_payload(cls, root, info, **input): try: _data = input.get('contatto') # Ente (M) if 'ente' in _data: _ente = _data.pop('ente') _ente = Organization.objects.get(usermembership__member=info.context.user, code=_ente['code']) _data['ente'] = _ente if rules.test_rule('strt_users.is_RUP_of', info.context.user, _data['ente']): # Tipologia (M) if 'tipologia' in _data: _tipologia = _data.pop('tipologia') if _tipologia and _tipologia in TIPOLOGIA_CONTATTO: _data['tipologia'] = _tipologia _contatto = Contatto() nuovo_contatto = update_create_instance(_contatto, _data) return cls(nuovo_contatto=nuovo_contatto) else: return GraphQLError(_("Forbidden"), code=403) except BaseException as e: tb = traceback.format_exc() logger.error(tb) return GraphQLError(e, code=500)
def resolve_attore(self, info, **args): organization = info.context.session.get('organization', None) token = info.context.session.get('token', None) return Contatto.attore(self, organization, token)
def resolve_contact_type(self, info, **args): return Contatto.tipologia_contatto(self)
def mutate_and_get_payload(cls, root, info, **input): try: _data = input.get('contatto') # Ente (M) if 'ente' in _data: _ente = _data.pop('ente') if is_RUP(info.context.user): _ente = Organization.objects.get(code=_ente['code']) else: _ente = Organization.objects.get(usermembership__member=info.context.user, code=_ente['code']) _data['ente'] = _ente if info.context.user and not info.context.user.is_anonymous: # Tipologia (M) if 'tipologia' in _data: _tipologia = _data.pop('tipologia') if _tipologia and _tipologia in TIPOLOGIA_CONTATTO: _data['tipologia'] = _tipologia _contatto = Contatto() nuovo_contatto = update_create_instance(_contatto, _data) if nuovo_contatto.user is None: # #### # Creating a Temporary User to be associate to this 'Contatto' # ### first_name = nuovo_contatto.nome.split(' ')[0] if len(nuovo_contatto.nome.split(' ')) > 0 \ else nuovo_contatto.nome last_name = nuovo_contatto.nome.split(' ')[1] if len(nuovo_contatto.nome.split(' ')) > 1 \ else nuovo_contatto.nome fiscal_code = codicefiscale.encode( surname=last_name, name=first_name, sex='M', birthdate=datetime.datetime.now(timezone.get_current_timezone()).strftime('%m/%d/%Y'), birthplace=nuovo_contatto.ente.name if nuovo_contatto.ente.type.code == 'C' else settings.DEFAULT_MUNICIPALITY ) nuovo_contatto.user, created = AppUser.objects.get_or_create( fiscal_code=fiscal_code, defaults={ 'first_name': nuovo_contatto.nome, 'last_name': None, 'email': nuovo_contatto.email, 'is_staff': False, 'is_active': True } ) _new_role_type = MembershipType.objects.get( code=settings.TEMP_USER_CODE, organization_type=nuovo_contatto.ente.type ) _new_role_name = '%s-%s-membership' % (fiscal_code, nuovo_contatto.ente.code) _new_role, created = UserMembership.objects.get_or_create( name=_new_role_name, defaults={ 'member': nuovo_contatto.user, 'organization': nuovo_contatto.ente, 'type': _new_role_type } ) _new_role.save() nuovo_contatto.save() return cls(nuovo_contatto=nuovo_contatto) else: return GraphQLError(_("Forbidden"), code=403) except BaseException as e: tb = traceback.format_exc() logger.error(tb) return GraphQLError(e, code=500)