예제 #1
0
 def custom_signup(self, request, user):
     try:
         Invitation = get_invitation_model()
         invitation = Invitation.objects.get(email=user.email)
         invitation.user_group.users.add(user)
     except Invitation.DoesNotExist:
         pass
예제 #2
0
파일: sharing.py 프로젝트: flenoir/bookswap
def invite_new_user(request, email):
    """
    invite new users to application
    """
    Invitation = get_invitation_model()
    invite = Invitation.create(email, inviter=request.user)
    invite.send_invitation(request)
    return render(request, "main.html")
예제 #3
0
파일: views.py 프로젝트: zalun/myally-help
def invite(request, cause_name, country):
    if not request.user.is_superuser:
        return JsonResponse(
            dict(success=False, errors=dict(form=["Access Denied"])))

    invite_form = InviteCoordinatorForm(request.POST)
    if not invite_form.is_valid():
        return JsonResponse(dict(success=False, errors=invite_forms.errors))

    cause = get_object_or_404(Cause, slug=cause_name)
    Invitation = get_invitation_model()
    invite = Invitation.create(email, inviter=request.user)
    invite.send_invitation(request)
    return JsonResponse(dict(success=True))
예제 #4
0
 def clean(self):
     super().clean()
     try:
         user = self.request.user
         Invitation = get_invitation_model()
         invite = Invitation.create(self.cleaned_data["email"],
                                    inviter=self.request.user)
         invite.send_invitation(self.request)
         invite_url = reverse('invitations:accept-invite',
                              args=[invite.key])
         invite_url = self.request.build_absolute_uri(invite_url)
         self.invite_url = invite_url
         return self.cleaned_data
     except:
         import sys
         raise ValidationError(sys.exc_info())
예제 #5
0
def post_user_signed_up_checkinvitation(request, user, *args, **kwargs):
    Invitation = get_invitation_model()
    try:
        invite = Invitation.objects.get(email=user.email)
    except:
        logger.info("User is not an invited user. Register as admin")
        """
        is_admin is true
        is_organisation_default is true
        userorganization is blank
        """
    else:
        """
        is_admin is true
        is_organisation_default is true
        userorganization is blank
        """
        try:
            inviter_user = User.objects.get(pk=invite.inviter_id)
        except:
            logger.critical(
                "Error setting up invited user - Inviter user not found")
        else:
            user.userorganization = inviter_user.userorganization
            user.is_admin = False
            user.is_team_member = True
            user.is_organisation_default = False
            try:
                user.save()
            except:
                logger.critical("Error updating invited users")
            else:
                try:
                    emailAddress = EmailAddress.objects.get(email=user.email)
                except:
                    emailAddress = EmailAddress()
                    emailAddress.user = user.pk
                    emailAddress.email = user.email
                    emailAddress.verified = True
                    emailAddress.primary = True
                    try:
                        emailAddress.save()
                    except:
                        logger.critical("Error setting up verified email")
                else:
                    logger.info("Invited users - email already verified.")
예제 #6
0
def invite(request, cause_name, country):
    if not request.user.is_superuser and not request.user.coordinator:
        return JsonResponse(
            dict(success=False, errors=dict(form=["Access Denied"])))

    invite_form = InviteTherapistForm(request.POST)
    if not invite_form.is_valid():
        return JsonResponse(dict(success=False, errors=invite_forms.errors))

    cause = get_object_or_404(Cause, slug=cause_name)
    Invitation = get_invitation_model()
    try:
        invite = Invitation.create(request.POST["email"], inviter=request.user)
    except IntegrityError:
        return JsonResponse(
            dict(success=False, errors=dict(form=["User already invited."])))

    invite.send_invitation(request)
    return JsonResponse(dict(success=True))
예제 #7
0
def helper_create_user_and_invite(request, email, role):
    Invitation = get_invitation_model()
    invite = Invitation.create(email)  #, inviter=request.user)
    #In here, we create a "starter" new_user that will later be modified and connected to auth after the invite
    new_user = User()
    new_user.email = email

    new_user.username = email  #get_random_string(64).lower() #required field, we enter jibberish for now
    new_user.invite_key = invite.key  #to later reconnect the new_user we've created to the invite
    new_user.invited_by = request.user
    new_user.set_unusable_password()
    new_user.save()

    role.user_set.add(new_user)

    #TODO: Think about doing this after everything else, incase something bombs
    invite.send_invitation(request)

    return new_user
예제 #8
0
def invitationsendview(request):
    template = "herdi/invitation_create.html"
    form = InvitationForm(request.POST or None)

    if request.method == "POST":
        if form.is_valid():
            Invitation = get_invitation_model()
            email = form.cleaned_data["email"]
            invite = Invitation.create(email, inviter=request.user)
            try:
                invite.send_invitation(request)
            except Exception as e:
                messages.add_message(request, messages.INFO, _("Error: " + e))
            else:
                messages.add_message(
                    request, messages.INFO,
                    _("Email sent to: " + email + " . We'll be in touch!"))
            return redirect("teacher_attendance")

    context = {
        "form": form,
    }
    return render(request, template, context)
예제 #9
0
from django.conf import settings
from invitations.utils import get_invitation_model

from .serializers import InvitationReadSerializer as DefaultInvitationReadSerializer
from .serializers import InvitationWriteSerializer as DefaultInvitationWriteSerializer
from .serializers import InvitationBulkWriteSerializer as DefaultInvitationBulkWriteSerializer
from .utils import import_callable

# Serializers
InvitationReadSerializer = import_callable(
    getattr(settings, 'INVITATION_SERIALIZER_READ', DefaultInvitationReadSerializer)
)
InvitationWriteSerializer = import_callable(
    getattr(settings, 'INVITATION_SERIALIZER_WRITE', DefaultInvitationWriteSerializer)
)
InvitationBulkWriteSerializer = import_callable(
    getattr(settings, 'INVITATION_SERIALIZER_WRITE_BULK', DefaultInvitationBulkWriteSerializer)
)

# Urls
API_BASE_URL = getattr(settings, 'INVITATION_API_BASE_URL', 'invitations')
ACCEPT_INVITE_URL = getattr(settings, 'INVITATION_ACCEPT_INVITE_URL', 'accept-invite')
SEND_URL = getattr(settings, 'INVITATION_SEND_URL', 'send')
CREATE_AND_SEND_URL = getattr(settings, 'INVITATION_CREATE_AND_SEND_URL', 'create-and-send')
SEND_MULTIPLE_URL = getattr(settings, 'INVITATION_SEND_MULTIPLE_URL', 'send-multiple')

# Get Invitation model
InvitationModel = get_invitation_model()
예제 #10
0
try:
    from django.urls import reverse
except ImportError:
    from django.core.urlresolvers import reverse
from django.utils import timezone
from django.utils.translation import ugettext as _
from django.contrib.auth.decorators import login_required

from .forms import GeoNodeInviteForm
from invitations import signals
from invitations.views import SendInvite
from invitations.utils import get_invitation_model
from invitations.adapters import get_invitations_adapter
from geonode.decorators import view_decorator

Invitation = get_invitation_model()


@view_decorator(login_required, subclass=True)
class GeoNodeSendInvite(SendInvite):
    template_name = 'invitations/forms/_invite.html'
    form_class = GeoNodeInviteForm

    def __init__(self, *args, **kwargs):
        super(SendInvite, self).__init__(*args, **kwargs)

    def form_valid(self, form):
        emails = form.cleaned_data["email"]
        invited = []

        invite = None
예제 #11
0
파일: views.py 프로젝트: MrezaGh/Hamkharj
class UserRecentActivities(DetailView):
    template_name = 'pages/user_recent_activities.html'
    registered_history_models = (
        ('Expenses', Expense, ('title', 'amount', 'description', 'expense_attachment', 'category', )),
        ('Categories', ExpenseCategory, ('title', 'group')),
        ('Friends', Friendship, ()),
        ('Groups', Group, ('title', 'description')),
        ('Invitations', get_invitation_model(), ()),
    )

    def get_object(self, queryset=None):\
        return self.request.user

    def get_user_history(self, model):
        user = self.get_object()
        history = model.history.filter(history_user_id=user.id).order_by('id', 'history_date')
        return list(history)

    def get_context_data(self, **kwargs):
        context = super(UserRecentActivities, self).get_context_data(**kwargs)

        activities = dict()
        for key, model, history_fields in self.registered_history_models:
            user_history = self.get_user_history(model)
            objects_map = {obj.id: obj for obj in model.objects.filter(id__in=[rec.id for rec in user_history])}
            history = list()
            last_record_obj_id = None
            for idx, record in enumerate(user_history):
                if record.id != last_record_obj_id:
                    history.append({'created': True, 'object': objects_map[record.id], 'datetime': record.history_date})
                    last_record_obj_id = record.id
                else:
                    modified_fields = list()
                    for field in history_fields:
                        old_val = getattr(user_history[idx - 1], field)
                        new_val = getattr(record, field)
                        if new_val != old_val:
                            modified_fields.append((field, old_val, new_val))
                    if key == 'Expenses':
                        expense = objects_map[record.id]

                        def get_expense_records_history(_expense, **filters):
                            return {rec.id: rec for rec in Record.history.filter(expense=_expense, **filters)}
                        old_expense_records_history = get_expense_records_history(
                            expense,
                            history_date__lt=record.history_date
                        )
                        new_expense_records_history = get_expense_records_history(
                            expense,
                            history_date__gte=record.history_date
                        )

                        for record_id in set(old_expense_records_history) & set(new_expense_records_history):
                            old_record = old_expense_records_history[record_id]
                            new_record = new_expense_records_history[record_id]
                            old_share, new_share = old_record.percent_of_share, new_record.percent_of_share
                            if old_share != new_share:
                                user = new_record.user
                                user_name = f'{user.first_name or ""} {user.last_name or ""}' or user.username
                                modified_fields.append((
                                    f'share of {user_name}',
                                    f'{old_share}%',
                                    f'{new_share}%'
                                ))
                    if modified_fields:
                        history.append({
                            'created': False,
                            'object': objects_map[record.id],
                            'modified_fields': modified_fields,
                            'datetime': record.history_date
                        })

            activities.update({key: list(reversed(history))})
        context.update(activities=activities)
        return context