class QuotationMakePurchaseOrderResource(TimelineEntryBaseResource): quotation_reference = base_fields.CharField( attribute='quotation__reference', help_text=HELP_TEXT['quotation_make_purchase_order'] ['quotation_reference'], ) purchase_order_reference = base_fields.CharField( attribute='purchase_order__reference', help_text=HELP_TEXT['quotation_make_purchase_order'] ['purchase_order_reference'], ) customer_display = base_fields.CharField( attribute='purchase_order__current_revision__get_customer_display', help_text=HELP_TEXT['quotation_make_purchase_order'] ['customer_display'], null=True) quotation = fields.ReferenceField( to='invoicing.api.resources.DownPaymentInvoiceResource', attribute='quotation', help_text=HELP_TEXT['quotation_make_purchase_order']['quotation']) purchase_order = fields.ReferenceField( to='invoicing.api.resources.InvoiceResource', attribute='purchase_order', help_text=HELP_TEXT['quotation_make_purchase_order']['purchase_order']) class Meta(TimelineEntryBaseResource.Meta): resource_name = 'quotation_make_purchase_order' object_class = invoicing_entries.QuotationMakePurchaseOrder
class QuotationMakePurchaseOrderResource(NotificationBaseResource): quotation = fields.ReferenceField( to='invoicing.api.resources.DownPaymentInvoiceResource', attribute='quotation', help_text=HELP_TEXT['quotation_make_purchase_order']['quotation']) purchase_order = fields.ReferenceField( to='invoicing.api.resources.InvoiceResource', attribute='purchase_order', help_text=HELP_TEXT['quotation_make_purchase_order']['purchase_order']) class Meta(NotificationBaseResource.Meta): resource_name = 'quotation_make_purchase_order' object_class = invoicing_notifications.QuotationMakePurchaseOrder
class DownPaymentInvoiceCancelledResource(TimelineEntryBaseResource): down_payment_invoice = fields.ReferenceField( to='invoicing.api.resources.DownPaymentInvoiceResource', attribute='down_payment_invoice', help_text=HELP_TEXT['invoice_cancelled']['down_payment_invoice']) credit_note = fields.ReferenceField( to='invoicing.api.resources.CreditNoteResource', attribute='credit_note', help_text=HELP_TEXT['invoice_cancelled']['credit_note']) class Meta(TimelineEntryBaseResource.Meta): resource_name = 'down_payment_invoice_cancelled' object_class = invoicing_entries.DownPaymentInvoiceCancelled
class QuotationMakeDownPaymentInvoiceResource(NotificationBaseResource): quotation = fields.ReferenceField( to='invoicing.api.resources.DownPaymentInvoiceResource', attribute='quotation', help_text=HELP_TEXT['quotation_make_invoice']['quotation']) down_payment_invoice = fields.ReferenceField( to='invoicing.api.resources.DownPaymentInvoiceResource', attribute='down_payment_invoice', help_text=HELP_TEXT['quotation_make_invoice']['down_payment_invoice']) class Meta(NotificationBaseResource.Meta): resource_name = 'quotation_make_down_payment_invoice' object_class = invoicing_notifications.QuotationMakeDownPaymentInvoice
class PurchaseOrderMakeInvoiceResource(NotificationBaseResource): purchase_order = fields.ReferenceField( to='invoicing.api.resources.DownPaymentInvoiceResource', attribute='purchase_order', help_text=HELP_TEXT['purchase_order_make_invoice']['purchase_order']) invoice = fields.ReferenceField( to='invoicing.api.resources.InvoiceResource', attribute='invoice', help_text=HELP_TEXT['purchase_order_make_invoice']['invoice']) class Meta(NotificationBaseResource.Meta): resource_name = 'purchase_order_make_invoice' object_class = invoicing_notifications.PurchaseOrderMakeInvoice
class InvoiceCancelledResource(NotificationBaseResource): invoice = fields.ReferenceField( to='invoicing.api.resources.InvoiceResource', attribute='invoice', help_text=HELP_TEXT['invoice_cancelled']['invoice'] ) credit_note = fields.ReferenceField( to='invoicing.api.resources.CreditNoteResource', attribute='credit_note', help_text=HELP_TEXT['invoice_cancelled']['credit_note'] ) class Meta(NotificationBaseResource.Meta): resource_name = 'invoice_cancelled' object_class = invoicing_notifications.InvoiceCancelled
class LotteryResource(BaseResource): users = fields.ReferencedListField(of='apis.base.resources.UserResource', attribute='users', full=True, null=True) paper = fields.ReferenceField(to='apis.base.resources.PaperResource', attribute='paper', full=True, null=True) class Meta: queryset = Lottery.objects(is_online=True) allowed_methods = ('get', ) authentication = UserAuthentication() authorization = Authorization() filtering = {'period': ALL} def prepend_urls(self): return [ url(r"^(?P<resource_name>%s)/yesterday%s$" % (self._meta.resource_name, trailing_slash()), \ self.wrap_view('yesterday'), name="api_yesterday"), ] def yesterday(self, request, **kwargs): today = datetime.utcnow().replace(hour=0, minute=0, second=0, microsecond=0) yesterday = today - timedelta(days=1) params = dict(request.GET.dict().items() + { 'period__gte': yesterday, 'period__lt': today }.items()) return redirect(u'{}/api/v1/lottery/?{}'.format( SUB_DOMAIN or '', urlencode(params)))
class TimelineEntryBaseResource(TenantResource): module = base_fields.CharField( attribute='module', help_text=HELP_TEXT['timeline_entry']['module']) datetime = base_fields.DateTimeField( attribute='datetime', help_text=HELP_TEXT['timeline_entry']['datetime']) issuer_name = base_fields.CharField( attribute='issuer__get_full_name', help_text=HELP_TEXT['entity_saved']['contact'], null=True, ) issuer = fields.ReferenceField( to='core.api.resources.VosaeUserResource', attribute='issuer', blank=True, null=True, help_text=HELP_TEXT['timeline_entry']['issuer']) class Meta(TenantResource.Meta): object_class = TimelineEntry excludes = ('tenant', 'access_permission', 'see_permission') list_allowed_methods = ('get', ) detail_allowed_methods = ('get', ) def get_object_list(self, request): object_list = super(TimelineEntryBaseResource, self).get_object_list(request) if request and getattr(request, 'vosae_user', None): return object_list.filter( access_permission__in=request.vosae_user.permissions. access_perms, see_permission__in=request.vosae_user.permissions.see_perms) return object_list
class FavoriteCategoryResource(BaseResource): user = fields.ReferenceField(to='apis.base.resources.UserResource', attribute='user', full=False, null=True) class Meta: queryset = FavoriteCategory.objects() allowed_methods = ('get', 'post') detail_allowed_methods = ('get', ) authentication = UserAuthentication() excludes = ('resource_uri', ) filtering = {'user': ALL} def post_list(self, request, **kwargs): user = request.user content_type = request.META.get('CONTENT_TYPE', 'application/json') data = self.deserialize(request, request.body, format=content_type) categories = data.get('categories', None) success = False if categories or categories == []: FavoriteCategory.objects(user=user).update_one( set__categories=categories, upsert=True) success = True return self.create_response(request, {'success': success})
class CustomerResource(resources.MongoEngineResource): person = fields.ReferenceField(to='test_project.test_app.api.resources.PersonResource', attribute='person', full=True) class Meta: queryset = documents.Customer.objects.all() allowed_methods = ('get', 'post', 'put', 'patch', 'delete') authorization = tastypie_authorization.Authorization()
class InvoiceNoteResource(VosaeResource): datetime = base_fields.DateTimeField( attribute='datetime', readonly=True, help_text=HELP_TEXT['invoice_note']['datetime'] ) note = base_fields.CharField( attribute='note', help_text=HELP_TEXT['invoice_note']['note'] ) issuer = fields.ReferenceField( to='core.api.resources.VosaeUserResource', attribute='issuer', readonly=True, help_text=HELP_TEXT['invoice_note']['issuer'] ) class Meta(VosaeResource.Meta): object_class = InvoiceNote def full_hydrate(self, bundle): """Set issuer on POST, extracted from request""" bundle = super(InvoiceNoteResource, self).full_hydrate(bundle) if bundle.request.method.lower() == 'post': bundle.obj.issuer = bundle.request.vosae_user return bundle
class CommentResource(resources.MongoEngineResource): topic = fields.ReferenceField(to='forumAPI.api.TopicResource', attribute='topic', full=False) # creation = fields.() # def dehydrate_topic(self, bundle): # bundle.data['topic'] = documents.Topic.objects(__raw__ = {_id:bundle.data['topic']}).first() # return bundle.data['topic'] class Meta: queryset = documents.Comment.objects.all() allowed_methods = ('get', 'post', 'put', 'patch', 'delete') authorization = authorization.Authorization( ) #TODO: own-submission authorization, allow admin to put/patch exclude = ['topic'] filtering = { "topic": [ "exact", ], "author": [ "exact", ], } def dehydrate_created(self, bundle): import calendar d2 = bundle.obj.id.generation_time return d2.strftime("%c")
class CreditNoteResource(InvoiceBaseResource): state = base_fields.CharField(attribute='state', readonly=True, help_text=HELP_TEXT['creditnote']['state']) related_to = fields.ReferenceField( to='invoicing.api.resources.InvoiceResource', attribute='related_to', readonly=True, null=True, help_text=HELP_TEXT['creditnote']['related_to']) class Meta(InvoiceBaseResource.Meta): resource_name = 'credit_note' queryset = CreditNote.objects.all() list_allowed_methods = ('get', ) detail_allowed_methods = ('get', ) detail_specific_methods = ('cancel', ) def dehydrate_related_to(self, bundle): from invoicing.api.resources import DownPaymentInvoiceResource, InvoiceResource try: if bundle.obj.related_to.is_down_payment_invoice(): resource = DownPaymentInvoiceResource() elif bundle.obj.related_to.is_invoice(): resource = InvoiceResource() resource_bundle = resource.build_bundle(obj=bundle.obj.related_to, request=bundle.request) return resource.get_resource_uri(resource_bundle) except: return
class InvoicingSettingsResource(VosaeResource): fy_start_month = base_fields.IntegerField( attribute='fy_start_month', null=True, blank=True, help_text=HELP_TEXT['invoicing_settings']['fy_start_month']) inv_taxes_application = base_fields.CharField( attribute='inv_taxes_application', help_text=HELP_TEXT['invoicing_settings']['inv_taxes_application']) quotation_validity = base_fields.CharField( attribute='quotation_validity', help_text=HELP_TEXT['invoicing_settings']['quotation_validity']) payment_conditions = base_fields.CharField( attribute='payment_conditions', help_text=HELP_TEXT['invoicing_settings']['payment_conditions']) custom_payment_conditions = base_fields.CharField( attribute='custom_payment_conditions', null=True, blank=True, help_text=HELP_TEXT['invoicing_settings']['custom_payment_conditions']) late_fee_rate = base_fields.DecimalField( attribute='late_fee_rate', null=True, blank=True, help_text=HELP_TEXT['invoicing_settings']['late_fee_rate']) accepted_payment_types = base_fields.ListField( attribute='accepted_payment_types', help_text=HELP_TEXT['invoicing_settings']['accepted_payment_types']) down_payment_percent = base_fields.DecimalField( attribute='down_payment_percent', help_text=HELP_TEXT['invoicing_settings']['down_payment_percent']) automatic_reminders = base_fields.BooleanField( attribute='automatic_reminders', help_text=HELP_TEXT['invoicing_settings']['automatic_reminders']) automatic_reminders_text = base_fields.CharField( attribute='automatic_reminders_text', null=True, blank=True, help_text=HELP_TEXT['invoicing_settings']['automatic_reminders_text']) automatic_reminders_send_copy = base_fields.BooleanField( attribute='automatic_reminders_send_copy', help_text=HELP_TEXT['invoicing_settings'] ['automatic_reminders_send_copy']) supported_currencies = SupportedCurrenciesListField( of='invoicing.api.resources.CurrencyResource', attribute='supported_currencies', help_text=HELP_TEXT['invoicing_settings']['supported_currencies']) default_currency = fields.ReferenceField( to='invoicing.api.resources.CurrencyResource', attribute='default_currency', help_text=HELP_TEXT['invoicing_settings']['default_currency']) numbering = fields.EmbeddedDocumentField( embedded= 'vosae_settings.api.resources.invoicing_settings.InvoicingNumberingSettingsResource', attribute='numbering', help_text=HELP_TEXT['invoicing_settings']['numbering']) class Meta: object_class = InvoicingSettings
class NotificationBaseResource(TenantResource): sent_at = base_fields.DateTimeField( attribute='sent_at', readonly=True, help_text=HELP_TEXT['notification_base']['sent_at'] ) read = base_fields.BooleanField( attribute='read', readonly=True, help_text=HELP_TEXT['notification_base']['read'] ) issuer = fields.ReferenceField( to='core.api.resources.VosaeUserResource', attribute='issuer', readonly=True, null=True, help_text=HELP_TEXT['notification_base']['issuer'] ) class Meta(TenantResource.Meta): object_class = Notification excludes = ('tenant', 'recipient') list_allowed_methods = ('get',) detail_allowed_methods = ('get',) def get_object_list(self, request): """Filters the notifications list on the recipient (extracted from request)""" return super(NotificationBaseResource, self).get_object_list(request).filter(recipient=request.vosae_user)
class EmbeddedExporterListResource(resources.MongoEngineResource): exporter = fields.ReferenceField( to='test_project.test_app.api.resources.ExporterResource', attribute='exporter', full=True) class Meta(object): object_class = documents.PipeExporterEmbedded
class ShareResource(BaseResource): user = fields.ReferenceField(to='apis.base.resources.UserResource', attribute='user', full=False, null=True) product = fields.ReferenceField(to='apis.base.resources.ProductResource', attribute='product', full=False, null=True) class Meta: queryset = Share.objects() allowed_methods = ('post', ) # authentication = UserAuthentication() excludes = ('resource_uri', ) filtering = {'user': ALL, 'product': ALL} def post_list(self, request, **kwargs): # if not request.user.is_authenticated(): # return self.create_response(request, {}, HttpUnauthorized) data = self.deserialize(request, request.body, format=request.META.get( 'CONTENT_TYPE', 'application/json')) product_id = data.get('product_id') num = data.get('num', 0) if not product_id: return self.create_response( request, {'product_id': 'post param is required'}, HttpBadRequest) product = Product.objects(id=product_id).first() if not product: return self.create_response( request, {'product_id': 'post param is not correct'}, HttpBadRequest) # Share.objects.get_or_create(user=request.user, product=product) # shared_count = Share.objects(product=product).count() # product.shared = shared_count shared_count = product.shared + num Product.objects(id=product_id).update_one(set__shared=shared_count) return self.create_response(request, {'shared': shared_count})
class ContactResource(EntityResource, VosaeIMEXMixinResource): name = base_fields.CharField(attribute='name', help_text=HELP_TEXT['contact']['name']) firstname = base_fields.CharField( attribute='firstname', help_text=HELP_TEXT['contact']['firstname']) additional_names = base_fields.CharField( attribute='additional_names', null=True, blank=True, help_text=HELP_TEXT['contact']['additional_names']) civility = base_fields.CharField( attribute='civility', null=True, blank=True, help_text=HELP_TEXT['contact']['civility']) birthday = base_fields.DateField( attribute='birthday', null=True, blank=True, help_text=HELP_TEXT['contact']['birthday']) role = base_fields.CharField(attribute='role', null=True, blank=True, help_text=HELP_TEXT['contact']['role']) organization = fields.ReferenceField( to='contacts.api.resources.OrganizationResource', attribute='organization', null=True, blank=True, full=False, help_text=HELP_TEXT['contact']['organization']) class Meta(EntityResource.Meta): queryset = Contact.objects.all() def prepend_urls(self): """Add urls for resources import/export.""" urls = super(ContactResource, self).prepend_urls() urls.extend(VosaeIMEXMixinResource.prepend_urls(self)) return urls def do_import(self, request, serializer, import_buffer): """Contacts import""" try: return serializer.deserialize(import_buffer, self._meta.object_class, request.tenant) except: pass def do_export(self, request, serializer, export_objects): """Contacts export""" if len(export_objects) == 1: filename = export_objects[0].get_full_name() else: filename = _('Contacts') return serializer.serialize(export_objects), filename
class WidgetResource(mongoresources.MongoEngineResource): plugin = fields.ReferenceField( to='lisa.server.web.manageplugins.api.PluginResource', attribute='plugin') class Meta: queryset = Widget.objects.all() allowed_methods = ('get', 'post') authorization = authorization.Authorization()
class QuotationChangedStateResource(NotificationBaseResource): quotation = fields.ReferenceField( to='invoicing.api.resources.QuotationResource', attribute='quotation', help_text=HELP_TEXT['invoicebase_changed_state']['quotation']) class Meta(NotificationBaseResource.Meta): resource_name = 'quotation_changed_state' object_class = invoicing_notifications.QuotationChangedState
class PurchaseOrderChangedStateResource(NotificationBaseResource): purchase_order = fields.ReferenceField( to='invoicing.api.resources.PurchaseOrderResource', attribute='purchase_order', help_text=HELP_TEXT['invoicebase_changed_state']['purchase_order']) class Meta(NotificationBaseResource.Meta): resource_name = 'purchase_order_changed_state' object_class = invoicing_notifications.PurchaseOrderChangedState
class CreditNoteChangedStateResource(NotificationBaseResource): credit_note = fields.ReferenceField( to='invoicing.api.resources.CreditNoteResource', attribute='credit_note', help_text=HELP_TEXT['invoicebase_changed_state']['credit_note']) class Meta(NotificationBaseResource.Meta): resource_name = 'credit_note_changed_state' object_class = invoicing_notifications.CreditNoteChangedState
class DownPaymentInvoicePaymentResource(PaymentBaseResource): related_to = fields.ReferenceField( to='invoicing.api.resources.DownPaymentInvoiceResource', attribute='related_to', help_text=HELP_TEXT['payment']['down_payment_invoice'] ) class Meta(PaymentBaseResource.Meta): queryset = DownPaymentInvoicePayment.objects.all()
class InvoiceBaseGroupResource(TenantResource): quotation = fields.ReferenceField( to='invoicing.api.resources.QuotationResource', attribute='quotation', readonly=True, null=True, help_text=HELP_TEXT['invoice_base_group']['quotation']) purchase_order = fields.ReferenceField( to='invoicing.api.resources.PurchaseOrderResource', attribute='purchase_order', readonly=True, null=True, help_text=HELP_TEXT['invoice_base_group']['purchase_order']) down_payment_invoices = fields.ReferencedListField( of='invoicing.api.resources.DownPaymentInvoiceResource', attribute='down_payment_invoices', readonly=True, null=True, help_text=HELP_TEXT['invoice_base_group']['down_payment_invoices']) invoice = fields.ReferenceField( to='invoicing.api.resources.InvoiceResource', attribute='invoice', readonly=True, null=True, help_text=HELP_TEXT['invoice_base_group']['invoice']) invoices_cancelled = fields.ReferencedListField( of='invoicing.api.resources.InvoiceResource', attribute='invoices_cancelled', readonly=True, null=True, help_text=HELP_TEXT['invoice_base_group']['invoices_cancelled']) credit_notes = fields.ReferencedListField( of='invoicing.api.resources.CreditNoteResource', attribute='credit_notes', readonly=True, null=True, help_text=HELP_TEXT['invoice_base_group']['credit_notes']) class Meta(TenantResource.Meta): resource_name = 'invoice_base_group' object_class = InvoiceBaseGroup list_allowed_methods = ('get', ) detail_allowed_methods = ('get', ) excludes = ('tenant', )
class IntentResource(resources.MongoEngineResource): plugin = fields.ReferenceField( to='lisa.server.web.manageplugins.api.PluginResource', attribute='plugin', null=True) class Meta: object_class = Intent authorization = authorization.Authorization() authentication = MultiAuthentication(CustomApiKeyAuthentication())
class DownPaymentInvoiceChangedStateResource(NotificationBaseResource): down_payment_invoice = fields.ReferenceField( to='invoicing.api.resources.DownPaymentInvoiceResource', attribute='down_payment_invoice', help_text=HELP_TEXT['invoicebase_changed_state'] ['down_payment_invoice']) class Meta(NotificationBaseResource.Meta): resource_name = 'down_payment_invoice_changed_state' object_class = invoicing_notifications.DownPaymentInvoiceChangedState
class WidgetByUserResource(mongoresources.MongoEngineResource): user = fields.ReferenceField(to='lisa.server.web.weblisa.api.UserResource', attribute='user') widget = fields.ReferenceField( to='lisa.server.web.interface.api.WidgetResource', attribute='widget', full=True) class Meta: queryset = WidgetUser.objects.all() allowed_methods = ('get', 'post', 'put', 'patch') authorization = authorization.Authorization() def obj_create(self, bundle, **kwargs): return super(WidgetByUserResource, self).obj_create(bundle, user=bundle.request.user) def apply_authorization_limits(self, request, object_list): return object_list.filter(user=request.user)
class ExportResource(TenantResource): created_at = base_fields.DateTimeField( attribute='created_at', readonly=True, help_text=HELP_TEXT['export']['created_at']) language = base_fields.CharField(attribute='language', help_text=HELP_TEXT['export']['language']) documents_types = base_fields.ListField( attribute='documents_types', help_text=HELP_TEXT['export']['documents_types']) from_date = base_fields.DateField( attribute='from_date', null=True, blank=True, help_text=HELP_TEXT['export']['from_date']) to_date = base_fields.DateField(attribute='to_date', null=True, blank=True, help_text=HELP_TEXT['export']['to_date']) issuer = fields.ReferenceField(to='core.api.resources.VosaeUserResource', attribute='issuer', readonly=True, help_text=HELP_TEXT['export']['issuer']) zipfile = fields.ReferenceField(to='core.api.resources.VosaeFileResource', attribute='zipfile', readonly=True, null=True, help_text=HELP_TEXT['export']['zipfile']) class Meta(TenantResource.Meta): resource_name = 'export' queryset = Export.objects.all() list_allowed_methods = ('get', 'post', 'delete') detail_allowed_methods = ('get', 'delete') excludes = ('tenant', ) def hydrate(self, bundle): """Set issuer on POST, extracted from request""" bundle = super(ExportResource, self).hydrate(bundle) bundle.obj.issuer = bundle.request.vosae_user return bundle
class PaymentBaseResource(TenantResource): issued_at = base_fields.DateTimeField( attribute='issued_at', readonly=True, help_text=HELP_TEXT['payment']['issued_at'] ) date = base_fields.DateField( attribute='date', help_text=HELP_TEXT['payment']['date'] ) amount = base_fields.DecimalField( attribute='amount', help_text=HELP_TEXT['payment']['amount'] ) type = base_fields.CharField( attribute='type', blank=True, help_text=HELP_TEXT['payment']['type'] ) note = base_fields.CharField( attribute='note', null=True, blank=True, help_text=HELP_TEXT['payment']['note'] ) issuer = fields.ReferenceField( to='core.api.resources.VosaeUserResource', attribute='issuer', readonly=True, help_text=HELP_TEXT['payment']['issuer'] ) currency = fields.ReferenceField( to='invoicing.api.resources.CurrencyResource', attribute='currency', help_text=HELP_TEXT['payment']['currency'] ) class Meta(TenantResource.Meta): excludes = ('tenant',) list_allowed_methods = ('post') detail_allowed_methods = ('get', 'delete',)
class ImageAttachmentResource(AuthoredResource): image_file = fields.ReferenceField( to='piplmesh.api.resources.UploadedFileResource', attribute='image_file', null=False, full=True) image_description = tastypie_fields.CharField( attribute='image_description', default='', null=False, blank=True) class Meta: object_class = api_models.ImageAttachment