Exemple #1
0
 def list_users_for_super_admin(self, context: Context):
     try:
         if not context.user_is_super_admin:
             return None, NotAuthorizedError()
         users = UserProfile.objects.filter(
             is_deleted=False, accepts_terms_and_conditions=True)
         return users, None
     except Exception as e:
         capture_message(str(e), level="error")
         return None, CustomMassenergizeError(str(e))
Exemple #2
0
 def get_testimonial_info(self, context: Context,
                          args) -> (dict, MassEnergizeAPIError):
     try:
         testimonial = Testimonial.objects.filter(**args).first()
         if not testimonial:
             return None, InvalidResourceError()
         return testimonial, None
     except Exception as e:
         capture_message(str(e), level="error")
         return None, CustomMassenergizeError(e)
Exemple #3
0
    def update_event(self, context: Context, event_id,
                     args) -> (dict, MassEnergizeAPIError):
        try:
            image = args.pop('image', None)
            tags = args.pop('tags', [])
            events = Event.objects.filter(id=event_id)

            have_address = args.pop('have_address', False)
            if not have_address:
                args['location'] = None

            community = args.pop("community_id", None)
            if community:
                community = Community.objects.filter(pk=community).first()

            events.update(**args)

            event: Event = events.first()
            if not event:
                return None, CustomMassenergizeError(
                    f"No event with id: {event_id}")

            events.update(**args)

            if image:
                media = Media.objects.create(
                    file=image, name=f"ImageFor{args.get('name', '')}Event")
                event.image = media

            if community:
                event.community = community
            else:
                event.community = None

            event.save()

            if tags:
                event.tags.set(tags)

            return event, None
        except Exception as e:
            capture_message(str(e), level="error")
            return None, CustomMassenergizeError(e)
Exemple #4
0
    def list_communities_for_super_admin(self, context):
        try:
            # if not context.user_is_community_admin and not context.user_is_community_admin:
            #   return None, CustomMassenergizeError("You are not a super admin or community admin")

            communities = Community.objects.filter(is_deleted=False)
            return communities, None
        except Exception as e:
            capture_exception(e)
            return None, CustomMassenergizeError(str(e))
Exemple #5
0
 def get_graphs(self, context, community_id):
     try:
         if not community_id:
             return [], None
         graphs = Graph.objects.filter(is_deleted=False,
                                       community__id=community_id)
         return graphs, None
     except Exception as e:
         capture_exception(e)
         return None, CustomMassenergizeError(str(e))
Exemple #6
0
 def decrease_value(self, goal_id, field_name):
     try:
         goals_to_decrease = Goal.objects.filter(id=goal_id)
         goals_to_decrease.update(**{field_name: F(field_name) - 1})
         if not goals_to_decrease:
             return None, InvalidResourceError()
         return goals_to_decrease.first(), None
     except Exception as e:
         capture_message(str(e), level="error")
         return None, CustomMassenergizeError(str(e))
Exemple #7
0
 def delete_action(self, context: Context,
                   action_id) -> (Action, MassEnergizeAPIError):
     try:
         #find the action
         action_to_delete = Action.objects.get(id=action_id)
         action_to_delete.is_deleted = True
         action_to_delete.save()
         return action_to_delete.first(), None
     except Exception as e:
         return None, CustomMassenergizeError(str(e))
Exemple #8
0
 def get_about_us_page_setting_info(self,
                                    args) -> (dict, MassEnergizeAPIError):
     try:
         page = AboutUsPageSettings.objects.filter(**args).first()
         if not page:
             return None, InvalidResourceError()
         return page, None
     except Exception as e:
         capture_message(str(e), level="error")
         return None, CustomMassenergizeError(e)
Exemple #9
0
 def get_graph_info(self, context: Context,
                    args) -> Tuple[dict, MassEnergizeAPIError]:
     try:
         graph = Graph.objects.filter(**args).first()
         if not graph:
             return None, InvalidResourceError()
         return graph, None
     except Exception as e:
         capture_message(str(e), level="error")
         return None, CustomMassenergizeError(e)
Exemple #10
0
    def create_goal(self, community_id, team_id, user_id,
                    args) -> (Goal, MassEnergizeAPIError):
        try:
            #create the goal
            new_goal = Goal.objects.create(**args)

            if community_id:
                community = Community.objects.filter(id=community_id).first()
                if not community:
                    return None, CustomMassenergizeError(
                        f"There is no community with id {community_id}")

                new_goal.save()
                community.goal = new_goal
                community.save()

            elif team_id:
                team = Team.objects.filter(id=team_id).first()
                if not team:
                    return None, CustomMassenergizeError(
                        f"There is no team with id {team_id}")

                new_goal.save()
                team.goal = new_goal
                team.save()

            elif user_id:
                user = UserProfile.objects.filter(id=user_id).first()
                if not user:
                    return None, CustomMassenergizeError(
                        f"There is no user with id {user_id}")
                new_goal.save()
                user.goal = new_goal
                user.save()

            else:
                return None, CustomMassenergizeError(
                    "Provide a community, team or user")

            return new_goal, None
        except Exception as e:
            capture_message(str(e), level="error")
            return None, CustomMassenergizeError(str(e))
Exemple #11
0
 def delete_policy(self, policy_id) -> (Policy, MassEnergizeAPIError):
   try:
     #find the policy
     policies_to_delete = Policy.objects.filter(id=policy_id)
     policies_to_delete.update(is_deleted=True)
     if not policies_to_delete:
       return None, InvalidResourceError()
     return policies_to_delete.first(), None
   except Exception as e:
     return None, CustomMassenergizeError(str(e))
Exemple #12
0
 def get_subscriber_info(self,
                         subscriber_id) -> (dict, MassEnergizeAPIError):
     try:
         subscriber = Subscriber.objects.get(id=subscriber_id)
         if not subscriber:
             return None, InvalidResourceError()
         return subscriber, None
     except Exception as e:
         capture_message(str(e), level="error")
         return None, CustomMassenergizeError(e)
Exemple #13
0
 def list_events_for_user(self, context: Context,
                          args) -> Tuple[list, MassEnergizeAPIError]:
     try:
         user = get_user_or_die(context, args)
         if not user:
             return [], None
         return EventAttendee.objects.filter(user=user), None
     except Exception as e:
         capture_message(str(e), level="error")
         return None, CustomMassenergizeError(e)
Exemple #14
0
 def list_events_for_super_admin(self, context: Context):
     try:
         if not context.user_is_super_admin:
             return None, NotAuthorizedError()
         events = Event.objects.filter(is_deleted=False).select_related(
             'image', 'community').prefetch_related('tags')
         return events, None
     except Exception as e:
         capture_message(str(e), level="error")
         return None, CustomMassenergizeError(str(e))
Exemple #15
0
  def update_testimonial(self, context: Context, args) -> Tuple[dict, MassEnergizeAPIError]:
    try:
      id = args.pop("id", None)
      testimonial = Testimonial.objects.filter(id=id)
      if not testimonial:
        return None, InvalidResourceError()
      
      image = args.pop('image', None)
      tags = args.pop('tags', [])
      action = args.pop('action', None)
      vendor = args.pop('vendor', None)
      community = args.pop('community', None)
      rank = args.pop('rank', None)
      testimonial.update(**args)
      new_testimonial = testimonial.first()

      # If no image passed, then we don't delete the existing one
      if image:
        media = Media.objects.create(file=image, name=f"ImageFor{args.get('name', '')}Event")
        new_testimonial.image = media
        
      if action:
        testimonial_action = Action.objects.filter(id=action).first()
        new_testimonial.action = testimonial_action
      else:
        new_testimonial.action = None

      if vendor:
        testimonial_vendor = Vendor.objects.filter(id=vendor).first()
        new_testimonial.vendor = testimonial_vendor
      else:
        new_testimonial.vendor = None

      if community:
        testimonial_community = Community.objects.filter(id=community).first()
        new_testimonial.community = testimonial_community
      else:
        new_testimonial.community = None

      if rank:
        new_testimonial.rank = rank
      
      tags_to_set = []
      for t in tags:
        tag = Tag.objects.filter(pk=t).first()
        if tag:
          tags_to_set.append(tag)
      if tags_to_set:
        new_testimonial.tags.set(tags_to_set)

      new_testimonial.save()
      return new_testimonial, None
    except Exception as e:
      capture_message(str(e), level="error")
      return None, CustomMassenergizeError(e)
Exemple #16
0
    def message_admin(self, context: Context,
                      args) -> (list, MassEnergizeAPIError):
        try:

            community_id = args.pop("community_id", None)
            subdomain = args.pop("subdomain", None)
            user_name = args.pop("user_name", None)
            title = args.pop("title", None)
            email = args.pop("email", None) or context.user_email
            body = args.pop("body", None)
            uploaded_file = args.pop("uploaded_file", None)

            community, err = get_community(community_id, subdomain)
            if err:
                return None, err

            new_message = Message.objects.create(user_name=user_name,
                                                 email=email,
                                                 title=title,
                                                 body=body,
                                                 community=community)
            new_message.save()
            user, err = get_user(context.user_id, email)
            if err:
                return None, err
            if user:
                new_message.user = user
                new_message.email = user.email
                new_message.user_name = new_message.user_name or user.preferred_name

            if uploaded_file:
                media = Media.objects.create(
                    name=f"Messages: {new_message.title} - Uploaded File",
                    file=uploaded_file)
                media.save()
                new_message.uploaded_file = media

            new_message.save()

            send_slack_message(
                SLACK_COMMUNITY_ADMINS_WEBHOOK_URL, {
                    "name": user_name,
                    "email": email,
                    "subject": title,
                    "message": body,
                    "url":
                    f"https://admin{ '-dev' if context.is_dev else '' }.massenergize.org/admin/edit/{new_message.id}/message",
                    "community": community.name
                })

            return new_message, None

        except Exception as e:
            print(e)
            return None, CustomMassenergizeError(e)
Exemple #17
0
    def list_community_admin(self, context: Context,
                             args) -> (list, MassEnergizeAPIError):
        try:
            # if not context.user_is_community_admin and not context.user_is_super_admin:
            #   return None, CustomMassenergizeError("You must be a community admin or super admin")

            community_id = args.pop("community_id", None)
            subdomain = args.pop("subdomain", None)

            if community_id:
                community_admin_group = CommunityAdminGroup.objects.filter(
                    community__id=community_id).first()
            elif subdomain:
                community_admin_group = CommunityAdminGroup.objects.filter(
                    community__subdomain=subdomain).first()
            else:
                return None, CustomMassenergizeError(
                    "Please provide a community_id or subdomain")

            if not community_admin_group:
                if community_id:
                    community = Community.objects.filter(
                        pk=community_id).first()
                else:
                    community = Community.objects.filter(
                        subdomain=subdomain).first()

                if community:
                    comm_admin = CommunityAdminGroup.objects.create(
                        name=f"{community.name}-Admin-Group",
                        community=community)
                    comm_admin.save()
                    community_admin_group = comm_admin

                else:
                    return None, CustomMassenergizeError(
                        "No community exists with that ID or subdomain")

            return community_admin_group, None
        except Exception as e:
            capture_message(str(e), level="error")
            return None, CustomMassenergizeError(e)
Exemple #18
0
 def copy(self, request):
   context: Context = request.context
   args: dict = context.args
   args = rename_field(args, 'vendor_id', 'id')
   vendor_id = args.pop('id', None)
   if not vendor_id:
     return CustomMassenergizeError("Please Provide Vendor Id")
   vendor_info, err = self.service.copy_vendor(vendor_id)
   if err:
     return err
   return MassenergizeResponse(data=vendor_info)
Exemple #19
0
 def delete_subscriber(self,
                       subscriber_id) -> (Subscriber, MassEnergizeAPIError):
     try:
         #find the subscriber
         subscribers_to_delete = Subscriber.objects.filter(id=subscriber_id)
         subscribers_to_delete.update(is_deleted=True)
         if not subscribers_to_delete:
             return None, InvalidResourceError()
         return subscribers_to_delete.first(), None
     except Exception as e:
         return None, CustomMassenergizeError(str(e))
Exemple #20
0
 def create_policy(self, community_id, args) -> (dict, MassEnergizeAPIError):
   try:
     new_policy = Policy.objects.create(**args)
     new_policy.save()
     if community_id:
       community = Community.objects.get(id=community_id)
       community.policies.add(new_policy)
       community.save()
     return new_policy, None
   except Exception as e:
     return None, CustomMassenergizeError(e)
Exemple #21
0
 def delete_vendor_view(request) -> None:
     context: Context = request.context
     args: dict = context.args
     args = rename_field(args, 'vendor_id', 'id')
     vendor_id = args.pop('id', None)
     if not vendor_id:
         return CustomMassenergizeError("Please Provide Vendor Id")
     vendor_info, err = self.service.delete_vendor(vendor_id)
     if err:
         return MassenergizeResponse(error=str(err), status=err.status)
     return MassenergizeResponse(data=vendor_info)
Exemple #22
0
    def list_teams_for_super_admin(self, context: Context):
        try:
            if not context.user_is_super_admin:
                return None, NotAuthorizedError()
            teams = Team.objects.filter(is_deleted=False).select_related(
                'logo', 'primary_community')
            return teams, None

        except Exception as e:
            capture_message(str(e), level="error")
            return None, CustomMassenergizeError(str(e))
Exemple #23
0
 def get_home_page_setting_info(self, context,
                                args) -> Tuple[dict, MassEnergizeAPIError]:
     try:
         args['community'] = get_community_or_die(context, args)
         home_page_setting = HomePageSettings.objects.filter(**args).first()
         if not home_page_setting:
             return None, InvalidResourceError()
         return home_page_setting, None
     except Exception as e:
         capture_message(str(e), level="error")
         return None, CustomMassenergizeError(e)
Exemple #24
0
    def leave_team(self, team_id, user_id) -> (Team, MassEnergizeAPIError):
        try:
            team = Team.objects.get(id=team_id)
            user = UserProfile.objects.get(id=user_id)
            teamMembers = TeamMember.objects.filter(team=team, user=user)
            teamMembers.delete()

            return team, None
        except Exception as e:
            capture_message(str(e), level="error")
            return None, CustomMassenergizeError(str(e))
Exemple #25
0
 def list_testimonials_for_super_admin(self, context: Context):
     try:
         if not context.user_is_super_admin:
             return None, NotAuthorizedError()
         events = Testimonial.objects.filter(
             is_deleted=False).select_related(
                 'image', 'community', 'vendor').prefetch_related('tags')
         return events, None
     except Exception as e:
         print(e)
         return None, CustomMassenergizeError(str(e))
Exemple #26
0
 def delete_tag_collection(
         self, tag_collection_id) -> Tuple[dict, MassEnergizeAPIError]:
     try:
         tag_collections = TagCollection.objects.filter(
             id=tag_collection_id)
         if not tag_collections:
             return None, InvalidResourceError()
         tag_collections.delete()
     except Exception as e:
         capture_message(str(e), level="error")
         return None, CustomMassenergizeError(e)
Exemple #27
0
 def list_actions_for_super_admin(self, context: Context):
     try:
         # if not context.user_is_super_admin:
         #   return None, CustomMassenergizeError("Insufficient Privileges")
         actions = Action.objects.select_related(
             'image', 'community').prefetch_related(
                 'tags', 'vendors').filter(is_deleted=False)
         return actions, None
     except Exception as e:
         capture_message(str(e), level="error")
         return None, CustomMassenergizeError(str(e))
Exemple #28
0
    def list_completed_actions(self, context: Context,
                               args) -> Tuple[dict, MassEnergizeAPIError]:
        try:

            if not context.user_is_logged_in:
                return [], CustomMassenergizeError("sign_in_required")

            user = get_user_or_die(context, args)
            household_id = args.get("household_id", None)

            if household_id:
                todo = UserActionRel.objects.filter(
                    status="DONE", user=user, real_state_unit__id=household_id)
            else:
                todo = UserActionRel.objects.filter(status="DONE", user=user)

            return todo, None
        except Exception as e:
            capture_message(str(e), level="error")
            return None, CustomMassenergizeError(str(e))
Exemple #29
0
    def update_vendor(self, context: Context,
                      args) -> (dict, MassEnergizeAPIError):
        try:
            vendor_id = args.pop('vendor_id', None)
            vendor = Vendor.objects.get(id=vendor_id)
            if not vendor:
                return None, InvalidResourceError()

            print(vendor)

            have_address = args.pop('have_address', False)
            if not have_address:
                args['location'] = None

            communities = args.pop('communities', [])
            if communities:
                vendor.communities.set(communities)

            onboarding_contact_email = args.pop('onboarding_contact_email',
                                                None)
            if onboarding_contact_email:
                vendor.onboarding_contact_email = onboarding_contact_email

            key_contact = args.pop('key_contact', {})
            if key_contact:
                if vendor.key_contact:
                    vendor.key_contact.update(key_contact)
                else:
                    vendor.key_contact = args.pop('key_contact', key_contact)

            image = args.pop('image', None)
            if image:
                logo = Media(name=f"Logo-{slugify(vendor.name)}", file=image)
                logo.save()
                vendor.logo = logo

            if onboarding_contact_email:
                onboarding_contact = UserProfile.objects.filter(
                    email=onboarding_contact_email).first()
                if onboarding_contact:
                    vendor.onboarding_contact = onboarding_contact

            tags = args.pop('tags', [])
            if tags:
                vendor.tags.set(tags)

            vendor.save()

            updated = Vendor.objects.filter(id=vendor_id).update(**args)
            return vendor, None

        except Exception as e:
            print(e)
            return None, CustomMassenergizeError(e)
Exemple #30
0
 def complete_imported_user(self, context: Context,
                            args) -> Tuple[dict, MassEnergizeAPIError]:
     try:
         email_address = args['email']
         profile = UserProfile.objects.filter(email=email_address).first()
         if profile.accepts_terms_and_conditions:
             return MassenergizeResponse(data={"completed": False}), None
         return MassenergizeResponse(data={"completed": True}), None
     except Exception as e:
         capture_message(str(e), level="error")
         return None, CustomMassenergizeError(e)