Пример #1
0
class User(JsonObject):
    """ Represent a user account """
    username = StringProperty()
    url = StringProperty()
    createdAt = DateTimeProperty()
    updatedAt = DateTimeProperty()
    default = BooleanProperty(default=False)

    @property
    def model_id(self):
        """ Use as a unique identifier """
        return "{}@{}".format(self.username, self.url)

    @property
    def password(self):
        """ Read password directly in a OS based secured area """
        return keyring.get_password(SERVICE_IDENTIFIER, self.model_id)

    @password.setter
    def password(self, value):
        """ Store password directly in a OS based secured area """
        if value:
            keyring.set_password(SERVICE_IDENTIFIER, self.model_id, value)
        else:
            if keyring.get_password(SERVICE_IDENTIFIER, self.model_id):
                keyring.delete_password(SERVICE_IDENTIFIER, self.model_id)

    def __eq__(self, other):
        return (self.url == other.url and
                self.username == other.username)

    def __str__(self):
        return '{}@{}'.format(self.username, self.url)
Пример #2
0
class Sprint(JsonObject):
    """ Spring model """
    id_ = IntegerProperty(name='id')
    state = StringProperty(name='state')
    name = StringProperty(name='name')
    start_date = DateTimeProperty(name='startDate')
    end_date = DateTimeProperty(name='endDate')
    complete_date = DateTimeProperty(name='completeDate')
    origin_board_id = IntegerProperty(name='originBoardId')
Пример #3
0
class ReportsForm(JsonObject):
    time = DateTimeProperty()
    completion_time = DateTimeProperty()
    start_time = DateTimeProperty()
    duration = IntegerProperty()
    submission_time = DateTimeProperty()
    xmlns = StringProperty()
    app_id = StringProperty()
    user_id = StringProperty()
    username = StringProperty()
 def make_rows(self, es_results, with_checkbox):
     submissions = [
         res['_source']
         for res in self.es_results.get('hits', {}).get('hits', [])
     ]
     for form in submissions:
         data = calculate_form_data(self, form)
         row = [
             DateTimeProperty().wrap(
                 form["form"]["meta"]["timeEnd"]).strftime("%Y-%m-%d"),
             self._get_case_name_html(data.get('case'), with_checkbox),
             self._get_service_type_html(form, data.get('service_type'),
                                         with_checkbox),
             data.get('location_name'),
             get_property(data.get('case'), "card_number", EMPTY_FIELD),
             data.get('location_parent_name'),
             get_property(data.get('case'), "phone_number", EMPTY_FIELD),
             data.get('amount_due')
         ]
         if with_checkbox:
             checkbox = mark_safe(
                 '<input type="checkbox" class="selected-element" '
                 'data-formid="%(form_id)s" '
                 'data-caseid="%(case_id)s" data-servicetype="%(service_type)s"/>'
             )
             row.append(checkbox %
                        dict(form_id=data.get('form_id'),
                             case_id=data.get('case_id'),
                             service_type=data.get('service_type')))
         else:
             row.append(self.display_status)
         yield row
Пример #5
0
class Version(JsonObject):
    """ Version model """
    id_ = IntegerProperty(name='id')
    project_id = IntegerProperty(name='projectId')
    name = StringProperty()
    description = StringProperty()
    archived = BooleanProperty()
    released = BooleanProperty()
    release_date = DateTimeProperty(name='releaseDate')
Пример #6
0
class OPMCase(CommCareCase):
    opened_on = DateTimeProperty(datetime(2010, 1, 1))
    block_name = StringProperty("Sahora")
    type = StringProperty("pregnancy")
    closed = BooleanProperty(default=False)
    closed_on = DateTimeProperty()
    awc_name = StringProperty("Atri")
    owner_id = StringProperty("Sahora")

    def __init__(self, forms=None, **kwargs):
        super(OPMCase, self).__init__(**kwargs)
        self._id = "z640804p375ps5u2yx7"
        self._fake_forms = forms if forms is not None else []

    def get_forms(self):
        return self._fake_forms

    class Meta:
        # This is necessary otherwise tests get sad
        app_label = "opm"
Пример #7
0
    def rows(self):
        def form_data_link(instance_id):
            return "<a class='ajax_dialog' href='%(url)s'>%(text)s</a>" % {
                "url": reverse('render_form_data',
                               args=[self.domain, instance_id]),
                "text": _("View Form")
            }

        submissions = [
            res['_source']
            for res in self.es_results.get('hits', {}).get('hits', [])
        ]

        for form in submissions:
            uid = form["form"]["meta"]["userID"]
            username = form["form"]["meta"].get("username")
            try:
                if username not in ['demo_user', 'admin']:
                    full_name = get_cached_property(CouchUser,
                                                    uid,
                                                    'full_name',
                                                    expiry=7 * 24 * 60 * 60)
                    name = '"%s"' % full_name if full_name else ""
                else:
                    name = ""
            except (ResourceNotFound, IncompatibleDocument):
                name = "<b>[unregistered]</b>"

            init_cells = [
                form_data_link(form["_id"]),
                (username or _('No data for username')) +
                (" %s" % name if name else ""),
                DateTimeProperty().wrap(
                    safe_index(form, self.time_field.split('.'))).strftime(
                        "%Y-%m-%d %H:%M:%S"),
                xmlns_to_name(self.domain,
                              form.get("xmlns"),
                              app_id=form.get("app_id")),
            ]

            def cell(field):
                return form["form"].get(field)

            init_cells.extend([cell(field) for field in self.other_fields])
            yield init_cells
 def make_rows(self, es_results, with_checkbox):
     submissions = [
         res['_source']
         for res in self.es_results.get('hits', {}).get('hits', [])
     ]
     for form in submissions:
         data = calculate_form_data(self, form)
         try:
             status_data = McctStatus.objects.get(
                 domain=self.domain, form_id=data.get('form_id'))
             reason = status_data.reason
         except McctStatus.DoesNotExist:
             reason = None
         row = [
             DateTimeProperty().wrap(
                 form["form"]["meta"]["timeEnd"]).strftime(
                     "%Y-%m-%d %H:%M"),
             self._get_case_name_html(data.get('case'), with_checkbox),
             self._get_service_type_html(form, data.get('service_type'),
                                         with_checkbox),
             data.get('location_name'),
             get_property(data.get('case'), "card_number", EMPTY_FIELD),
             data.get('location_parent_name'),
             get_property(data.get('case'), "phone_number", EMPTY_FIELD),
             data.get('amount_due'), REJECTION_REASON_DISPLAY_NAMES[reason]
             if reason is not None else '', form["form"]["meta"]["username"]
         ]
         if with_checkbox:
             checkbox = mark_safe(
                 '<input type="checkbox" class="selected-element" '
                 'data-formid="%(form_id)s" '
                 'data-caseid="%(case_id)s" data-servicetype="%(service_type)s"/>'
             )
             row.append(checkbox %
                        dict(form_id=data.get('form_id'),
                             case_id=data.get('case_id'),
                             service_type=data.get('service_type')))
         else:
             row.insert(8, self.display_status)
         yield row