示例#1
0
def user_add(request, *args, **kwargs):
    context = {'page': 'users'}

    if request.method == 'POST':
        form = PartnerForm(request.POST, instance=None)
        if form.is_valid():
            with transaction.atomic():
                user = User.objects.create(
                    username=form.cleaned_data.get('username'),
                    first_name=form.cleaned_data.get('first_name'),
                    last_name=form.cleaned_data.get('last_name'),
                    email=form.cleaned_data.get('email'),
                    is_active=form.cleaned_data.get('is_active'),
                    is_staff=form.cleaned_data.get('is_staff'),
                    is_superuser=form.cleaned_data.get('is_staff'))
                passwd = random_password(True)
                user.set_password(passwd)
                user.save()

                partner = Partner.objects.create(
                    user=user,
                    organization=form.cleaned_data.get('organization'),
                    can_upload=form.cleaned_data.get('can_upload'),
                    upload_location=form.cleaned_data.get('upload_location'),
                    can_validate=form.cleaned_data.get('can_validate'),
                    validation_location=form.cleaned_data.get(
                        'validation_location'))

            messages.success(
                request,
                _("New User account “{name}” created with "
                  "login `{username}` and password `{password}`").format(
                      name=partner, username=partner.username,
                      password=passwd))

            email_sent, x = send_new_account_email(partner=partner,
                                                   password=passwd,
                                                   creator=Partner.from_user(
                                                       request.user))
            if email_sent:
                messages.info(
                    request,
                    _("The password has been sent to {email}").format(
                        email=partner.email))

            return redirect('users')
        else:
            # django form validation errors
            logger.debug("django form errors")
            pass
    else:
        form = PartnerForm()

    context.update({'form': form})
    return render(request, kwargs.get('template_name', 'user_add.html'),
                  context)
示例#2
0
文件: admin.py 项目: yeleman/dmd
def user_passwd_reset(request, username, *args, **kwargs):
    partner = Partner.get_or_none(username)
    passwd = random_password(True)
    partner.user.set_password(passwd)
    partner.user.save()
    messages.success(request,
                     _("Password for User account “{name}” "
                       "(login `{username}`) has been reseted to `{password}`")
                     .format(name=partner, username=partner.username,
                             password=passwd))
    email_sent, x = send_reset_password_email(
        partner=partner, password=passwd,
        creator=Partner.from_user(request.user))
    if email_sent:
        messages.info(request,
                      _("The password has been sent to {email}")
                      .format(email=partner.email))

    return redirect('users')
示例#3
0
文件: admin.py 项目: yeleman/dmd
def user_add(request, *args, **kwargs):
    context = {'page': 'users'}

    if request.method == 'POST':
        form = PartnerForm(request.POST, instance=None)
        if form.is_valid():
            with transaction.atomic():
                user = User.objects.create(
                    username=form.cleaned_data.get('username'),
                    first_name=form.cleaned_data.get('first_name'),
                    last_name=form.cleaned_data.get('last_name'),
                    email=form.cleaned_data.get('email'),
                    is_active=form.cleaned_data.get('is_active'),
                    is_staff=form.cleaned_data.get('is_staff'),
                    is_superuser=form.cleaned_data.get('is_staff'))
                passwd = random_password(True)
                user.set_password(passwd)
                user.save()

                partner = Partner.objects.create(
                    user=user,
                    organization=form.cleaned_data.get('organization'),
                    can_upload=form.cleaned_data.get('can_upload'),
                    upload_location=form.cleaned_data.get('upload_location'),
                    can_validate=form.cleaned_data.get('can_validate'),
                    validation_location=form.cleaned_data.get(
                        'validation_location')
                    )

            messages.success(request,
                             _("New User account “{name}” created with "
                               "login `{username}` and password `{password}`")
                             .format(name=partner, username=partner.username,
                                     password=passwd))

            email_sent, x = send_new_account_email(
                partner=partner, password=passwd,
                creator=Partner.from_user(request.user))
            if email_sent:
                messages.info(request,
                              _("The password has been sent to {email}")
                              .format(email=partner.email))

            return redirect('users')
        else:
            # django form validation errors
            logger.debug("django form errors")
            pass
    else:
        form = PartnerForm()

    context.update({'form': form})
    return render(request,
                  kwargs.get('template_name', 'user_add.html'),
                  context)
示例#4
0
def user_passwd_reset(request, username, *args, **kwargs):
    partner = Partner.get_or_none(username)
    passwd = random_password(True)
    partner.user.set_password(passwd)
    partner.user.save()
    messages.success(
        request,
        _("Password for User account “{name}” "
          "(login `{username}`) has been reseted to `{password}`").format(
              name=partner, username=partner.username, password=passwd))
    email_sent, x = send_reset_password_email(partner=partner,
                                              password=passwd,
                                              creator=Partner.from_user(
                                                  request.user))
    if email_sent:
        messages.info(
            request,
            _("The password has been sent to {email}").format(
                email=partner.email))

    return redirect('users')
示例#5
0
文件: misc.py 项目: yeleman/dmd
def user_profile(request, username, *args, **kwargs):
    context = {'page': 'profile'}

    partner = Partner.get_or_none(username)
    if partner is None:
        raise Http404(_("Unable to find Partner with username `{username}`")
                      .format(username=username))

    context.update({'partner': partner})

    return render(request,
                  kwargs.get('template_name', 'public_profile.html'),
                  context)
示例#6
0
文件: admin.py 项目: yeleman/dmd
def user_edit(request, username, *args, **kwargs):
    context = {'page': 'users'}
    partner = Partner.get_or_none(username)

    if request.method == 'POST':
        form = PartnerForm(request.POST, instance=partner)
        if form.is_valid():
            with transaction.atomic():
                partner.user.first_name = form.cleaned_data.get('first_name')
                partner.user.last_name = form.cleaned_data.get('last_name')
                partner.user.email = form.cleaned_data.get('email')
                partner.user.is_active = form.cleaned_data.get('is_active')
                partner.user.is_staff = form.cleaned_data.get('is_staff')
                partner.user.is_superuser = \
                    form.cleaned_data.get('is_superuser', False)
                partner.user.save()

                partner.organization = form.cleaned_data.get('organization')
                partner.can_upload = form.cleaned_data.get('can_upload')
                partner.upload_location = \
                    form.cleaned_data.get('upload_location')
                partner.can_validate = form.cleaned_data.get('can_validate')
                partner.validation_location = \
                    form.cleaned_data.get('validation_location')
                partner.save()

            messages.success(request,
                             _("User account “{name}” has been updated.")
                             .format(name=partner))
            return redirect('users')
        else:
            # django form validation errors
            logger.debug("django form errors")
            pass
    else:
        form = PartnerForm(instance=partner)

    context.update({
        'form': form,
        'partner': partner})

    return render(request,
                  kwargs.get('template_name', 'user_edit.html'),
                  context)
示例#7
0
def user_edit(request, username, *args, **kwargs):
    context = {'page': 'users'}
    partner = Partner.get_or_none(username)

    if request.method == 'POST':
        form = PartnerForm(request.POST, instance=partner)
        if form.is_valid():
            with transaction.atomic():
                partner.user.first_name = form.cleaned_data.get('first_name')
                partner.user.last_name = form.cleaned_data.get('last_name')
                partner.user.email = form.cleaned_data.get('email')
                partner.user.is_active = form.cleaned_data.get('is_active')
                partner.user.is_staff = form.cleaned_data.get('is_staff')
                partner.user.is_superuser = \
                    form.cleaned_data.get('is_superuser', False)
                partner.user.save()

                partner.organization = form.cleaned_data.get('organization')
                partner.can_upload = form.cleaned_data.get('can_upload')
                partner.upload_location = \
                    form.cleaned_data.get('upload_location')
                partner.can_validate = form.cleaned_data.get('can_validate')
                partner.validation_location = \
                    form.cleaned_data.get('validation_location')
                partner.save()

            messages.success(
                request,
                _("User account “{name}” has been updated.").format(
                    name=partner))
            return redirect('users')
        else:
            # django form validation errors
            logger.debug("django form errors")
            pass
    else:
        form = PartnerForm(instance=partner)

    context.update({'form': form, 'partner': partner})

    return render(request, kwargs.get('template_name', 'user_edit.html'),
                  context)
示例#8
0
from django.core.management.base import BaseCommand
from optparse import make_option

from dmd.dhis_tools import get_dhis
from dmd.models.Entities import Entity
from dmd.models.Periods import MonthPeriod
from dmd.models.Indicators import Indicator
from dmd.models.DataRecords import DataRecord
from dmd.models.Partners import Partner
from dmd.utils import data_ident_for, chdir_dmd

DEBUG = True
NB_PREVIOUS_PERIODS = 3
logger = logging.getLogger(__name__)
dhisbot = Partner.get_or_none('dhisbot')


class Command(BaseCommand):

    option_list = BaseCommand.option_list + (
        make_option('-p',
                    help="Period (month) to fetch data for",
                    action='store',
                    dest='period'),
        make_option('-u',
                    help="Update data even if it exists",
                    action='store_true',
                    default=False,
                    dest='update'),
        make_option(
示例#9
0
    def handle(self, *args, **options):

        # make sure we're at project root
        chdir_dmd()

        yesterday = datetime.date.today() - datetime.timedelta(days=1)
        logger.info("Sending validation feedback for {}".format(yesterday))

        start = datetime.datetime(*yesterday.timetuple()[:6])
        end = datetime.datetime(*yesterday.timetuple()[:3],
                                hour=23,
                                minute=59,
                                second=59)

        dhis_bot = Partner.dhis_bot()

        records = DataRecord.objects \
            .exclude(created_by=dhis_bot) \
            .exclude(validated_by__isnull=True) \
            .filter(validated_on__gte=start,
                    validated_on__lte=end)

        def summary_for(partner):
            pqs = records.filter(created_by=partner)
            return {
                'partner': partner,
                'nb_validations': pqs.count(),
                'status': {
                    s['validation_status']: {
                        'name':
                        text_type(
                            DataRecord.VALIDATION_STATUSES.get(
                                s['validation_status'])),
                        'count':
                        pqs.filter(
                            validation_status=s['validation_status']).count(),
                        'all':
                        pqs.filter(validation_status=s['validation_status'])
                    }
                    for s in pqs.values('validation_status')
                }
            }

        feedbacks = [
            summary_for(Partner.objects.get(id=pid)) for pid in set(
                [r['created_by'] for r in records.values('created_by')]) if pid
        ]

        for ptnf in feedbacks:
            partner = ptnf['partner']

            if not partner.email:
                continue

            ptnf.update({'yesterday': yesterday})
            email_sent, x = send_validation_feedback_email(partner=partner,
                                                           summary=ptnf)
            if email_sent:
                logger.info("Sent feedback to {}".format(partner))
            else:
                logger.error("Unable to send feedback to {}".format(partner))

        logger.info("done.")
示例#10
0
 def auto_validate(self, on):
     self.record_validation(status=self.AUTO_VALIDATED, on=on,
                            by=Partner.validation_bot())
示例#11
0
 def auto_validated(self):
     return self.validated_by == Partner.validation_bot()
示例#12
0
from django.core.management.base import BaseCommand
from optparse import make_option

from dmd.dhis_tools import get_dhis
from dmd.models.Entities import Entity
from dmd.models.Periods import MonthPeriod
from dmd.models.Indicators import Indicator
from dmd.models.DataRecords import DataRecord
from dmd.models.Partners import Partner
from dmd.utils import data_ident_for, chdir_dmd

DEBUG = True
NB_PREVIOUS_PERIODS = 3
logger = logging.getLogger(__name__)
dhisbot = Partner.get_or_none('dhisbot')


class Command(BaseCommand):

    option_list = BaseCommand.option_list + (
        make_option('-p',
                    help="Period (month) to fetch data for",
                    action='store',
                    dest='period'),
        make_option('-u',
                    help="Update data even if it exists",
                    action='store_true',
                    default=False,
                    dest='update'),
        make_option('-i',