Exemple #1
0
 def save(self, *args, **kwargs):
     if not self.pk:
         if get_current_user() and get_current_user().is_authenticated():
             self.created_by = get_current_user().get_profile()
         self.expires = datetime.datetime.now() + datetime.timedelta(days=7)
         parent = self._meta.parents.keys()[0]
         subclasses = parent._meta.get_all_related_objects()
         for klass in subclasses:
             if isinstance(klass, RelatedObject) and klass.field.primary_key and klass.opts == self._meta:
                 self._class = klass.get_accessor_name()
                 break
     return super(Application, self).save(*args, **kwargs)
Exemple #2
0
def log_and_message(obj, flag, custom_message=None):

    user = get_current_user()
    opts = obj.__class__._meta

    if not custom_message:

        if flag == ADDITION:
            message = _('The %(name)s "%(obj)s" was added successfully.') % {'name': force_unicode(opts.verbose_name), 'obj': force_unicode(obj)}
        elif flag == CHANGE:
            message = _('The %(name)s "%(obj)s" was changed successfully.') % {'name': force_unicode(opts.verbose_name), 'obj': force_unicode(obj)}
        elif flag == DELETION:
            message=_('The %(name)s "%(obj)s" was deleted successfully.') % {'name': force_unicode(opts.verbose_name), 'obj': force_unicode(obj)}

    else:
        message = custom_message

    LogEntry.objects.log_action(
        user.id,
        ContentType.objects.get_for_model(obj.__class__).id,
        obj._get_pk_val(),
        force_unicode(obj),
        flag,
        change_message=message,
        )

    user.message_set.create(message=message)
Exemple #3
0
 def get_absolute_url(self):
     person = get_current_user().get_profile()
     if person == self:
         try:
             return reverse('kg_user_profile')
         except:
             pass
     return reverse('kg_user_detail', kwargs={'username': self.user.username})
Exemple #4
0
 def delete_account(self, ua):
     if not ua.date_deleted:
         ua.date_deleted = datetime.datetime.now()
         ua.save()
     for project in ua.project_list():
         project.users.remove(ua.user)
         project.save()
     log(get_current_user(), ua.user, 3, 'Deleted account on %s' % ua.machine_category)
Exemple #5
0
 def deactivate(self):
     self.is_active = False
     try:
         self.deleted_by = get_current_user().get_profile()
     except:
         pass
     self.date_deleted = datetime.datetime.today()
     self.users.clear()
     self.save()
Exemple #6
0
    def clean_old(self):
        person = get_current_user().get_profile()
        
        from django.contrib.auth import authenticate
        user = authenticate(username=person.user.username, password=self.cleaned_data['old'])
        if user is None:
            raise forms.ValidationError(u'Your old password was incorrect')

        return self.cleaned_data['old']
Exemple #7
0
 def delete_account(self, ua):
     if not ua.date_deleted:
         ua.date_deleted = datetime.datetime.now()
         ua.save()
     from karaage.projects.utils import remove_user_from_project
     for project in ua.project_list():
         
         remove_user_from_project(ua.user, project)
     log(get_current_user(), ua.user, 3, 'Deleted account on %s' % ua.machine_category)
Exemple #8
0
 def activate(self):
     if self.is_active == True:
         return
     self.is_active = True
     self.is_approved = True
     self.date_approved = datetime.datetime.today()
     try:
         self.approved_by = get_current_user().get_profile()
     except:
         pass
     self.save()
Exemple #9
0
    def create_new_user(self, data, hashed_password=None):
        """Creates a new user (not active)

        Keyword arguments:
        data -- a dictonary of user data
        hashed_password --
    
        """
        # Make sure username isn't taken in Datastore
        random_passwd = User.objects.make_random_password()
        user = User.objects.create_user(data['username'], data['email'], random_passwd)
        
        if hashed_password:
            user.password = hashed_password
        else:
            from karaage.datastores import create_password_hash
            user.password = create_password_hash(data['password1'])
            
        user.is_active = False
        user.save()
    
        #Create Person
        person = Person.objects.create(
            user=user,
            first_name=data['first_name'],
            last_name=data['last_name'],
            institute=data['institute'],
            position=data.get('position', ''),
            department=data.get('department', ''),
            title=data.get('title', ''),
            address=data.get('address', ''),
            country=data.get('country', ''),
            website=data.get('website', ''),
            fax=data.get('fax', ''),
            comment=data.get('comment', ''),
            telephone=data.get('telephone', ''),
            mobile=data.get('mobile', ''),
            supervisor=data.get('supervisor', ''),
            is_systemuser=data.get('is_systemuser', ''),
            saml_id=data.get('saml_id', None),
            )
        
        try:
            current_user = get_current_user()
            if current_user.is_anonymous():
                current_user = person.user
        except:
            current_user = person.user

        log(current_user, person, 1, 'Created')
        
        return person
Exemple #10
0
def add_edit_project(request, project_id=None):

    if project_id is None:
        project = None
        flag = 1
    else:
        project = get_object_or_404(Project, pk=project_id)
        flag = 2

    if request.method == 'POST':
        form = ProjectForm(request.POST, instance=project)
        
        if form.is_valid():
            project = form.save(commit=False)
            if project_id is not None:
                # if project is being edited, project_id cannot change, so we
                # should always use the value supplied on the URL.
                project.pid = project_id
            elif not project.pid:
                # if project was being created, did the user give a project_id
                # we should use? If not, then we have to generate one
                # ourselves.
                project.pid = get_new_pid(project.institute)
            project.save()
            project.activate()
            form.save_m2m()
            if flag == 1:
                messages.success(request, "Project '%s' created succesfully" % project)
                log(get_current_user(), project, 1, 'Created')
            else:
                messages.success(request, "Project '%s' edited succesfully" % project)
                log(get_current_user(), project, 2, 'Edited')

            return HttpResponseRedirect(project.get_absolute_url())
    else:
        form = ProjectForm(instance=project)

    return render_to_response('projects/project_form.html', locals(), context_instance=RequestContext(request))
Exemple #11
0
def send_bounced_warning(person):
    """Sends an email to each project leader for person
    informing them that person's email has bounced"""
    context = CONTEXT.copy()
    context['person'] = person

    for project in person.project_set.all():
        if project.is_active:
            context['project'] = project
            for leader in project.leaders.all():
                context['receiver'] = leader

                to_email = leader.email
                subject = render_to_string('requests/emails/bounced_email_subject.txt', context)
                body = render_to_string('requests/emails/bounced_email_body.txt', context)
                send_mail(subject.replace('\n', ''), body, settings.ACCOUNTS_EMAIL, [to_email])
                active_user = get_current_user()
                log(active_user, leader, 2, 'Sent email about bounced emails from %s' % person)
Exemple #12
0
    def delete_user(self, person):
        """ Sets Person not active and deletes all UserAccounts"""
        person.user.is_active = False
        person.expires = None
        person.user.save()
    
        deletor = get_current_user()
    
        person.date_deleted = datetime.datetime.today()
        person.deleted_by = deletor.get_profile()
        person.save(update_datastore=False)

        from karaage.datastores import delete_account

        for ua in person.useraccount_set.filter(date_deleted__isnull=True):
            delete_account(ua)

        log(deletor, person, 3, 'Deleted')
Exemple #13
0
    def activate_user(self, person):
        """ Activates a user """
        try:
            current_user = get_current_user()
            if current_user.is_anonymous():
                current_user = person.user
        except:
            current_user = person.user

        person.date_approved = datetime.datetime.today()

        person.approved_by = current_user.get_profile()
        person.deleted_by = None
        person.date_deleted = None
        person.user.is_active = True
        person.user.save()

        log(current_user, person, 1, 'Activated')

        return person
Exemple #14
0
    def create_account(self, person, default_project):
        """Creates a UserAccount (if needed) and activates user.

        Keyword arguments:
        person_id -- Person id
        project_id -- Project id
        
        """
        ua = UserAccount.objects.create(
            user=person, username=person.username,
            machine_category=self.machine_category,
            default_project=default_project,
            date_created=datetime.datetime.today())
    
        if default_project is not None:
            from karaage.projects.utils import add_user_to_project
            add_user_to_project(person, default_project)
    
        log(get_current_user(), ua.user, 1, 'Created account on %s' % self.machine_category)

        return ua